我想在多个地区创建包含资源的CloudFormation堆栈。这可能吗?

时间:2015-02-16 04:47:40

标签: amazon-cloudformation

是否可以创建单个Amazon CloudFormation堆栈模板,例如在ap-southeast-1中实例化AWS :: EC2 :: Instance,以及在us-west-2中实例化另一个AWS :: EC2 :: Instance?

我怀疑没有,但我还没有找到明确的是/否说堆栈不能拥有跨越多个地区的资源。

4 个答案:

答案 0 :(得分:8)

一个非常好的问题;但我认为你不能创建分布在多个地区的资源。

cloudFormation的终点URL是基于地区的,AFAIK没有地方是否可以指定区域特定(差异区域)信息。

截至今天,您可以通过利用映射部分和get :: region函数以这种方式组合CloudFormation模板以使其区域独立;但是不可能同时将模板分布在多个区域;但可以预期。

答案 1 :(得分:5)

您现在最好的选择是使用调用Lambda函数的Cloudformation自定义资源,以便创建其他区域中的资源。当您运行CFN模板时,它将调用Lambda函数,您可以在其中创建利用AWS软件开发工具包创建所需资源的代码(Python,Node.js或Java)。 CFN自定义资源允许您将参数传递给函数并从中获取“输出”,因此从CFN的角度来看,您可以像处理任何其他资源一样对待它。

以下是AWS文档的演练示例:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources-lambda.html

答案 2 :(得分:5)

接受的答案已过期。现在可以使用research在帐户和区域之间创建堆栈。

答案 3 :(得分:0)

你可以创建一个lambda函数调用来在另一个区域创建一个资源,甚至让你的lambda函数调用另一个区域中的另一个堆栈。

为了让您的生活更轻松,在这种情况下,您可以使用lambda cli2cloudformationhttps://github.com/lucioveloso/cli2cloudformation)。

使用它,您可以在lambda中执行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": ""
    }
  },