Amazon web services aws云形成嵌套堆栈导出/导入值
我正在为自动化aws基础设施创建云形成嵌套模板。基本上我有如下的父配置Amazon web services aws云形成嵌套堆栈导出/导入值,amazon-web-services,amazon-cloudformation,Amazon Web Services,Amazon Cloudformation,我正在为自动化aws基础设施创建云形成嵌套模板。基本上我有如下的父配置 "Resources": { "VPCStack": { "Type": "AWS::CloudFormation::Stack", "Properties": { "Parameters": { "ClassB": { "Ref": "C
"Resources": {
"VPCStack": {
"Type": "AWS::CloudFormation::Stack",
"Properties": {
"Parameters": {
"ClassB": {
"Ref": "ClassB"
}
},
"TemplateURL": "https://s3.us-east-2.amazonaws.com/xxx/vpc.json",
"TimeoutInMinutes": "5"
}
},
"NatStack": {
"Type": "AWS::CloudFormation::Stack",
"Properties": {
"Parameters": {
"ParentVPCStack": { "Ref": "AWS::StackName" },
"SubnetZone": {"Ref": "SubnetZone"}
},
"TemplateURL": "https://s3.us-east-2.amazonaws.com/xxx/nat-gateway.json",
"TimeoutInMinutes": "5"
},
"DependsOn": "VPCStack"
}
}
以上将触发嵌套CF,我在VPC中有如下导出输出
"Outputs": {
"StackName": {
"Description": "Stack name.",
"Value": {
"Fn::Sub": "${AWS::StackName}"
}
},
"AZs": {
"Description": "AZs",
"Value": 2,
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-AZs"
}
}
},
"AZA": {
"Description": "AZ of A",
"Value": {
"Fn::Select": [
0,
{
"Fn::GetAZs": ""
}
]
},
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-AZA"
}
}
},
"AZB": {
"Description": "AZ of B",
"Value": {
"Fn::Select": [
1,
{
"Fn::GetAZs": ""
}
]
},
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-AZB"
}
}
},
"ClassB": {
"Description": "Class B.",
"Value": {
"Ref": "ClassB"
},
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-ClassB"
}
}
},
"VPC": {
"Description": "VPC.",
"Value": {
"Ref": "VPC"
},
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-VPC"
}
}
},
"SubnetsPublic": {
"Description": "Subnets public.",
"Value": {
"Fn::Join": [
",",
[
{
"Ref": "SubnetAPublic"
},
{
"Ref": "SubnetBPublic"
}
]
]
},
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-SubnetsPublic"
}
}
},
"SubnetsPrivate": {
"Description": "Subnets private.",
"Value": {
"Fn::Join": [
",",
[
{
"Ref": "SubnetAPrivate"
},
{
"Ref": "SubnetBPrivate"
}
]
]
},
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-SubnetsPrivate"
}
}
},
"RouteTablePrivate": {
"Description": "Route table private (deprecated in v4, will be removed in v5).",
"Value": {
"Ref": "RouteTablePrivate"
},
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-RouteTablePrivate"
}
}
}
然后,我有nat网关也VPC创建没有问题,但当创建nat网关,我得到这个错误
找不到名为${stack name}-RouteTablePrivate的导出
我的主要CF中有这些输出
"Outputs": {
"StackRef": {"Value": { "Ref" : "VPCStack"}},
"Output1FromNestedmyVPCStack" : {
"Value": { "Fn::GetAtt": [ "VPCStack", "Outputs.RouteTableAPrivate" ] }
}
}
}
我如何解决这个问题呢?您导出的值在RouteTable和Private之间没有A,而您引用的值(RouteTablePrivate)我怀疑这是因为嵌套堆栈中有“${AWS::StackName}-RouteTablePrivate” 嵌套堆栈会生成您事先不知道的名称
因此,只需将其命名为您的资源“RouteTablePrivate”。这些都应该基于我的假设。这里。“RouteTablePrivate”:{“Description”:“Route table A private.”,“Value”:{“Ref”:“RouteTablePrivate”},“Export”:{“Name”:{“Fn::Sub”:“${AWS::StackName}-RouteTablePrivate”}我从这里导出,从nat网关cf“Route”:{“Type”:“AWS::EC2::Route”,“Properties”:{“RouteTableId”:{“Fn::ImportValue”:{“Fn::Sub”:“${ParentVPCStack}-RouteTable${SubnetZone}Private”}json模板很难阅读,所以不要在此处粘贴更多json,而是编辑您的问题