Amazon cloudformation I';我想用多个地区的资源创建云信息堆栈。这可能吗?

Amazon cloudformation I';我想用多个地区的资源创建云信息堆栈。这可能吗?,amazon-cloudformation,Amazon Cloudformation,例如,是否可以创建一个单独的Amazon CloudFormation堆栈模板,在ap-Southest-1中实例化一个AWS::EC2::Instance,在us-west-2中实例化另一个AWS::EC2::Instance 我怀疑没有,但我还没有找到一个明确的是/否说法,即堆栈不能有跨多个区域的资源。一个非常好的问题;但我认为您无法创建跨多个区域的资源 CloudFormation的端点URL是基于区域的,因此没有一个地方可以指定特定于区域(diff region)的信息 到今天为止,您可

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


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

一个非常好的问题;但我认为您无法创建跨多个区域的资源

CloudFormation的端点URL是基于区域的,因此没有一个地方可以指定特定于区域(diff region)的信息


到今天为止,您可以通过利用mappings部分和
get::region
函数来组合CloudFormation模板,使其与区域无关;但是让模板同时在多个区域传播是不可能的;但这是可以预期的。

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


下面是AWS文档中的一个演练示例:

您可以创建一个lambda函数,调用该函数在另一个区域中创建资源,甚至可以使您的lambda函数在另一个区域中调用另一个堆栈

为了让您的生活更轻松,在这种情况下,您可以使用lambda()

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

被接受的答案已经过时了。现在可以使用创建跨帐户和区域的堆栈

您现在有了CloudFormation堆栈集,它允许在多个区域和多个帐户中部署。你能在回答中提供一个简单的例子吗?我唯一面对的是这个问题()对于具有依赖关系的相当复杂的模板,这需要很多额外的操作。唯一的问题是:您不能在主模板中使用stackset模板的输出。但是,Lambda不需要部署在调用方可以调用模板的每个区域吗?