是否可以创建单个Amazon CloudFormation堆栈模板,例如在ap-southeast-1中实例化AWS :: EC2 :: Instance,以及在us-west-2中实例化另一个AWS :: EC2 :: Instance?
我怀疑没有,但我还没有找到明确的是/否说堆栈不能拥有跨越多个地区的资源。
答案 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 cli2cloudformation(https://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": ""
}
},