我有一个父堆栈,它调用2个嵌套堆栈,我需要将这些嵌套的值导入到父堆栈。示例:
NestedStack:
"Outputs": {
"TargetGroup":{
"Value": {
"Ref": "ggTG"
},
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-TargetGroup"
}
}
},
}
当我执行所有嵌套堆栈时,我会在子堆栈中获得这些输出,但我想在父堆栈中获得此输出以从另一个独立的堆栈进行访问。
之所以这样,是因为如果我导入另一个独立的堆栈,则无法使用嵌套的名称,因为它是在运行时创建的。
StackImporting:
"TargetGroupARN" : {"Fn::ImportValue" : {"Fn::Sub" : "${StackName}-TargetGroup"}}
正如我所说,我只知道父堆栈的名称,所以我必须从父堆栈导出而不是在子堆栈中导出。
答案 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" ] }
}
}
}
因此,只需在嵌套堆栈中使用正常的输出(无需导出),然后从顶层堆栈中按上述引用即可。