【问题标题】:Using DependsOn with Fn::ImportValue in Cloudformation在 Cloudformation 中使用 DependsOn 和 Fn::ImportValue
【发布时间】:2017-01-08 04:24:35
【问题描述】:

是否可以像这样将 DependsOn 与 Fn::ImportValue 一起使用?

"DependsOn": {"Fn::ImportValue": {
            "Fn::Sub": "${MyStack1}-VPCGatewayAttachment"
        }}

具体来说,我将我的 VPC 和 InternetGatewayAttchment 放在一个堆栈中。我在 Stack2 中导入这个堆栈,在那里我有我的 ELB,我正在尝试使用 DependsOn 来依赖这个附件

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    你不应该像这样使用DependsOn。只有在模板内的资源之间创建依赖关系时才需要它。具体来说,它用于覆盖 Cloudformation 创建资源的顺序。

    FN::ImportValue 本质上是一个依赖函数,因为导出的值必须在堆栈生成之前存在。因此,只需在适当的资源中引用您的 Import Value。

    【讨论】:

      【解决方案2】:

      为了扩展您的具体情况,如果您认为由于文档的建议 When a DependsOn attribute is required 而需要将 DependsOn 属性添加到 AWS::EC2::VPCGatewayAttachment,请注意这些建议仅适用于定义的资源 在同一个模板中

      如果您的 AWS CloudFormation 模板定义了 VPC、网关和网关附件,则任何需要网关的资源都依赖于网关附件。

      当网关附件在单独的模板中定义时,您无需显式声明任何其他依赖项。只要应用堆栈在网络堆栈之前被删除,依赖资源就会在 VPC 网关连接之前被删除。

      一般来说,正如George M Whitaker's answer 中提到的,在堆栈之间声明DependsOn 是不必要的。由于如果另一个堆栈引用其输出之一时您无法删除堆栈,因此使用Fn::ImportValue 创建跨堆栈引用会创建一个依赖关系,即必须在引用堆栈之前删除包含该引用的堆栈。

      【讨论】:

        猜你喜欢
        • 2018-05-09
        • 2020-08-06
        • 2021-08-10
        • 2019-03-30
        • 1970-01-01
        • 1970-01-01
        • 2021-04-19
        • 2018-02-28
        • 2021-07-17
        相关资源
        最近更新 更多