我有一个包括区域资源(lambda表达式,API,主题等)和全球资源(用户,政策,route53,CloudFront的,dynamodb全局表格等)cloudformation栈模板,并希望它在同部署到多个区域AWS账户。
由于全球资源将在第一次创建后已经存在,我不能直接部署在多个地区栈模板。
我知道我可以在两个独立的堆栈模板拆分的一切,但我宁愿避免这一点,并把一切都在相同的单堆模板。
我看到了,我大概可以使用CF 条件 +参数只在第一个创造切换全球资源创建但是,这并不很好看...
我在想,如果我可以利用诸如StackSets或别的东西,以达到一些CloudFormation功能。
什么是做这种正确的方法你知道吗?
解决的办法是在你的手中。 我建议你做到以下几点:
- 创建了全球资源的单独模板(是的,我知道你不喜欢它,但它运作良好,在我的经验)
- 使用SSM到共享全球资源存储引用AWS :: SSM ::参数
- 部署区域栈和去参照全局资源(使用参数 ,如
AWS::SSM::Parameter::Value<String>
或动态参考 ,例如{{resolve:ssm:S3AccessControl:2}}
您可以使用StackSets
为您的区域堆栈部署或创建(被无论是您的CI / CD服务器在本地或最好执行)一个参数构建脚本部署区域堆栈一个的时间。
文章来源: What is the proper way to deploy a multi-region CloudFormation stack that includes global resources?