Я создаю вложенные шаблоны формирования облаков для автоматизации инфраструктуры AWS.В основном у меня есть родительская конфигурация, как показано ниже:
"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} -RouteTableAPrivate найдено
У меня есть эти выходные данные в моем основном CF
"Outputs": {
"StackRef": {"Value": { "Ref" : "VPCStack"}},
"Output1FromNestedmyVPCStack" : {
"Value": { "Fn::GetAtt": [ "VPCStack", "Outputs.RouteTableAPrivate" ] }
}
}
}
как я могу решить эту проблему