Amazon web services 部署包含全球资源的多区域云信息堆栈的正确方法是什么?

Amazon web services 部署包含全球资源的多区域云信息堆栈的正确方法是什么?,amazon-web-services,amazon-dynamodb,amazon-cloudformation,amazon-iam,aws-organizations,Amazon Web Services,Amazon Dynamodb,Amazon Cloudformation,Amazon Iam,Aws Organizations,我有一个cloudformation堆栈模板,其中包括区域资源(lambdas、api、主题等)和全局资源(用户、策略、route53、cloudfront、dynamodb全局表等),并希望将其部署到同一AWS帐户中的多个区域 我无法在多个区域直接部署此堆栈模板,因为在第一次创建之后,全局资源将已经存在 我知道我可以将所有内容拆分为两个单独的堆栈模板,但我更愿意避免这种情况,并将所有内容保留在同一个堆栈模板中 我看到我可能只在第一次创建时使用CF+参数切换全局资源创建,但这看起来不太好 我想知

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

我无法在多个区域直接部署此堆栈模板,因为在第一次创建之后,全局资源将已经存在

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

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

我想知道我是否可以利用一些CloudFormation特性,比如StackSet或其他东西来实现这一点


你知道怎么做才是正确的方法吗

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

  • 为全球资源创建一个单独的模板(是的,我知道您不喜欢它,但根据我的经验,它工作得很好)
  • 使用在SSM中存储对共享全局资源的引用
  • 部署区域堆栈并取消引用全局资源(可以使用,例如
    AWS::SSM::Parameter::Value
    或,例如
    {{resolve:SSM:S3AccessControl:2}}
您可以对区域堆栈部署使用
stackset
,也可以创建一个参数化构建脚本,该脚本一次部署一个区域堆栈(本地执行,最好由CI/CD服务器执行)