【问题标题】:Create CloudFormation resources in different region在不同区域创建 CloudFormation 资源
【发布时间】:2018-02-20 06:27:25
【问题描述】:

我有一个 CF 堆栈,并且我定义了不同的资源。其中之一是 S3 存储桶。我需要在eu-west-1 区域中运行堆栈,同时在ap-southeast-1 区域中创建存储桶。我该怎么做?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    不幸的是,在 CloudFormation 中使用标准 AWS::S3::Bucket 是不可能的,因为由 CloudFormation 堆栈管理的资源只能与堆栈本身位于同一区域。但是,您可以使用 Lambda 函数解决此问题

    creating the bucket 时,您的 Lambda 函数必须将 LocationConstraint 设置为 ap-southeast-1。此外,您的 Lambda 函数将负责更新和删除您的存储桶,这可能涉及更多代码。

    您可以使用Lambda-backed Custom Resources 将您的 Lambda 函数连接到 CloudFormation。

    【讨论】:

    • 不清楚。在这种情况下,我应该在 CF 中创建 S3 Bucket 资源吗?换句话说,bucket 必须在 lambda 函数或 CF 中创建?
    • 不,S3 存储桶不会由您的 CF 堆栈直接创建。在 CF 堆栈中,您将拥有一个自定义资源,该资源将链接到 Lambda 函数。 Lambda 函数将创建存储桶。
    【解决方案2】:

    单个 CloudFormation 堆栈只能在堆栈所在的单个区域中拥有资源。

    但是,使用 CloudFormation 堆栈集,您可以跨多个区域和 AWS 账户中的多个 CloudFormation 堆栈创建资源。

    有关使用堆栈集的更多信息可以在堆栈集文档中找到:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html

    【讨论】:

    • 不幸的是 Stack Sets 不符合这个用例。我会更准确。我需要在 Firehose 中创建一个交付流。 Firehose 仅​​在少数地区可用。 S3 存储桶必须位于存储数据的 Redshift 集群的同一区域中。我的 Redshift 集群位于 ap-southeast-1。这就是我希望在同一个堆栈中的多个区域部署多个资源的原因
    • @Mazzy,为什么堆栈集不符合您的要求?
    【解决方案3】:

    您可以使用 cfs3-uploader 之类的工具在每个区域中为 Cloudformation 快速创建 S3 存储桶

    【讨论】:

    • 死链接或私有仓库
    猜你喜欢
    • 1970-01-01
    • 2019-07-26
    • 2019-06-13
    • 2022-12-05
    • 1970-01-01
    • 2021-06-09
    • 2015-04-16
    • 2017-06-12
    • 1970-01-01
    相关资源
    最近更新 更多