【问题标题】:What is the proper way to deploy a multi-region CloudFormation stack that includes global resources?部署包含全球资源的多区域 CloudFormation 堆栈的正确方法是什么?
【发布时间】:2018-12-05 23:02:38
【问题描述】:

我有一个 cloudformation 堆栈模板,其中包括区域资源(lambdas、api、主题等)和全局资源(用户、策略、route53、cloudfront、dynamodb 全局表等),并希望将其部署到多个区域在同一个 AWS 账户中。

我不能直接在多个区域部署这个堆栈模板,因为全局资源在第一次创建后就已经存在。

我知道我可以将所有内容拆分为两个单独的堆栈模板,但我希望避免这种情况并将所有内容保留在同一个堆栈模板中。

我看到我可以使用 CF Conditions + 参数仅在第一次创建时切换全局资源创建,但这看起来不太好......

我想知道是否可以利用 StackSets 之类的 CloudFormation 功能或其他东西来实现这一目标。

知道什么是正确的方法吗?

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb amazon-cloudformation amazon-iam aws-organizations


    【解决方案1】:

    解决方案在您手中。我建议您执行以下操作:

    • 为全局资源创建一个单独的模板(是的,我知道你不喜欢它,但根据我的经验它效果很好)
    • 使用AWS::SSM::Parameter 在 SSM 中存储对共享全局资源的引用
    • 部署区域堆栈并取消引用全局资源(使用Parameters,例如AWS::SSM::Parameter::Value<String> 或dynamic reference,例如{{resolve:ssm:S3AccessControl:2}})

    您可以将StackSets 用于您的区域堆栈部署,也可以创建一个参数化的构建脚本,一次部署一个区域堆栈(在本地执行,或者最好由您的 CI/CD 服务器执行)。

    【讨论】:

      猜你喜欢
      • 2017-01-16
      • 2021-07-14
      • 2015-04-16
      • 1970-01-01
      • 2022-01-07
      • 2020-02-10
      • 2018-07-10
      • 1970-01-01
      • 2017-03-14
      相关资源
      最近更新 更多