Как расширить отображение групп безопасности, чтобы добавить еще один уровень для каждого региона в шаблоне CloudFormation?
Я написал шаблон CloudFormation, который создает группу AutoScaling, которая, в свою очередь, запускает серверы для каждой среды.
До сегодняшнего дня компания работала в регионе us-west-2, и отображение SecurityGroups выглядело так:
"SecurityGroupMap" : {
"DEV" : { "sg" : "sg-d111acbe" },
"Load" : { "sg" : "sg-d111acbe" },
"Staging" : { "sg" : "sg-d123acbe" },
"Prod-US" : { "sg" : "sg-d145acbe" }
},
Теперь появилась новая мотивация, мой начальник хочет, чтобы мы смогли начать создавать этот шаблон CloudFormation в другом регионе.
Поскольку это еще один регион, мне нужно вручную создать необходимые группы безопасности и обновить их идентификатор в шаблоне.
Мне было интересно, если такой метод письма будет работать:
"SecurityGroupMap" : {
"RegionMap": {
"us-east-1" : { "DEV" : "sg-1", "Load" : "sg-2", "Staging" : "sg-3", "Prod-US" : "sg-4" },
"us-east-2" : { "DEV" : "sg-1", "Load" : "sg-2", "Staging" : "sg-3", "Prod-US" : "sg-4" },
"us-west-1" : { "DEV" : "sg-1", "Load" : "sg-2", "Staging" : "sg-3", "Prod-US" : "sg-4" },
"us-west-2" : { "DEV" : "sg-d143acbe", "Load" : "sg-d143acbe", "Staging" : "sg-d143acbe", "Prod-US" : "sg-d143acbe" },
"eu-west-1" : { "DEV" : "sg-1", "Load" : "sg-2", "Staging" : "sg-3", "Prod-US" : "sg-4" },
"eu-central-1" : { "DEV" : "sg-1", "Load" : "sg-2", "Staging" : "sg-3", "Prod-US" : "sg-4" },
"eu-west-2" : { "DEV" : "sg-1", "Load" : "sg-2", "Staging" : "sg-3", "Prod-US" : "sg-4" }
},
И если да, то как бы [ { "Fn::FindInMap" : } ]
будет выглядеть?
1 ответ
Во втором примере вы слишком много вложили в свое отображение. Я предлагаю вам удалить RegionMap
и регионы непосредственно под SecurityGroupMap
, После вы можете ссылаться на одну группу безопасности, используя следующее:
{ "Fn::FindInMap" : [ "SecurityGroupMap", { "Ref" : "AWS::Region" }, "DEV"] }