共享CloudFormation嵌套堆栈的输出

时间:2019-10-28 09:46:51

标签: amazon-web-services amazon-cloudformation

我有一个父堆栈,它调用2个嵌套堆栈,我需要将这些嵌套的值导入到父堆栈。示例:

NestedStack:

 "Outputs": {
    "TargetGroup":{ 
      "Value": {
        "Ref": "ggTG"
       },
       "Export": {
                "Name": {
                    "Fn::Sub": "${AWS::StackName}-TargetGroup"
                }
        }
    },
}

当我执行所有嵌套堆栈时,我会在子堆栈中获得这些输出,但我想在父堆栈中获得此输出以从另一个独立的堆栈进行访问。

之所以这样,是因为如果我导入另一个独立的堆栈,则无法使用嵌套的名称,因为它是在运行时创建的。

StackImporting:

"TargetGroupARN" : {"Fn::ImportValue" : {"Fn::Sub" : "${StackName}-TargetGroup"}}

正如我所说,我只知道父堆栈的名称,所以我必须从父堆栈导出而不是在子堆栈中导出。

1 个答案:

答案 0 :(得分:1)

AWS CloudFormation Template Snippets - AWS CloudFormation中,您似乎可以像这样引用嵌套堆栈的输出:

{
    "AWSTemplateFormatVersion" : "2010-09-09",
    "Resources" : {
        "myStack" : {
           "Type" : "AWS::CloudFormation::Stack",
           "Properties" : {
              "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-1/S3_Bucket.template",
              "TimeoutInMinutes" : "60"
           }
        }
    },
    "Outputs": {
       "StackRef": {"Value": { "Ref" : "myStack"}},
       "OutputFromNestedStack" : {
             "Value" : { "Fn::GetAtt" : [ "myStack", "Outputs.BucketName" ] }
       }
    }
}

因此,只需在嵌套堆栈中使用正常的输出(无需导出),然后从顶层堆栈中按上述引用即可。