Назад | Перейти на главную страницу

Как расширить сопоставление групп безопасности, чтобы добавить еще один уровень для каждого региона в шаблоне 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" : } ] как будет выглядеть?

Во втором примере вы слишком много вложили в свое отображение. Я предлагаю вам удалить RegionMap и иметь регионы непосредственно под SecurityGroupMap. После вы можете ссылаться на одну группу безопасности, используя следующее:

{ "Fn::FindInMap" : [ "SecurityGroupMap", { "Ref" : "AWS::Region" }, "DEV"] }