Я хотел бы создать стек CloudFormation с ресурсами в нескольких регионах. Это возможно?

Можно ли создать один шаблон стека Amazon CloudFormation, который создает экземпляр AWS:: EC2:: Instance в ap-south-1 и еще один AWS:: EC2:: Instance в us-west-2, например?

Я подозреваю, что нет, но я еще не нашел окончательного утверждения "да/нет" о том, что стеки не могут иметь ресурсы, охватывающие несколько регионов.

Ответ 1

Очень хороший вопрос; но я не думаю, что вы сможете создавать ресурсы, распределенные по нескольким регионам.

URL-адрес конечной точки для cloudFormation - это регионы и AFAIK, там нет места, можно ли указать информацию о регионе (область области).

На сегодняшний день вы можете составить шаблон CloudFormation таким образом, чтобы сделать его независимым от региона, используя раздел отображений и получить:: region function; но создание шаблона, распространяющегося по нескольким регионам одновременно, было бы невозможным; но можно ожидать по линии.

Ответ 2

Лучше всего сейчас использовать пользовательский ресурс облачной информации, который вызывает функцию Lambda, чтобы создать ресурсы, которые находятся в других регионах. Когда вы запускаете шаблон CFN, он будет вызывать функцию Lambda, где вы создадите код (Python, Node.js или Java), который использует SDK AWS для создания необходимых вам ресурсов. CFN Custom Resources позволяют передавать параметры функции и получать "выходные данные" от них, поэтому с точки зрения CFN вы можете обрабатывать ее так же, как и любой другой ресурс.

Вот пример прохода из документов AWS: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources-lambda.html

Ответ 3

Вы можете создать функцию лямбда-вызова для создания ресурса в другом регионе и даже заставить вашу лямбда-функцию вызывать другой стек в другом регионе.

Чтобы сделать вашу жизнь легкой, в этом случае вы можете использовать lambda cli2cloudformation (https://github.com/lucioveloso/cli2cloudformation).

Используя его, вы можете выполнять команды CLI внутри вашей лямбды, и таким образом вы определяете параметр -region в команде.

Это также интересно, потому что вы сможете установить команду, когда ваш стек будет создан, обновлен и удален.

  "myCustomResource": {
    "Type": "Custom::LocationConstraint",
    "Properties": {
      "ServiceToken": "arn:aws:lambda:eu-west-1:432811670411:function:cli2cfn_proxy2",
      "CliCommandCreate": "s3api get-bucket-location --bucket my-test-bucket --region eu-west-1",
      "CliCommandUpdate": "",
      "CliCommandDelete": ""
    }
  },