AWS CloudFormation嵌套栈报错:未找到输出VPCId2,求协助
解决CloudFormation根栈调用嵌套栈时的"Output 'VPCId2' not found"错误
错误信息
Output 'VPCId2' not found in stack 'arn:aws:cloudformation:us-east-1:465521475937:stack/root-VPCStack-146FM0ZNW6Y5S/60d8eaf0-dd0f-11ed-a4d3-12bfe4263bc1' for ALB
问题根源
这个错误的核心是:你的VPC嵌套栈(VPC.yaml)没有定义名为VPCId2的Outputs项,但根栈里的ALBStack和TomcatEC2Stack都在尝试引用这个不存在的输出值。
解决步骤
1. 补全VPC嵌套栈的Outputs定义
打开你的VPC.yaml模板,检查Outputs部分,必须为根栈中引用的所有输出项添加定义。以下是匹配你根栈需求的示例:
Outputs: VPCId1: Description: Management VPC ID Value: !Ref ManagementVPC VPCId2: Description: APP VPC ID Value: !Ref APPVPC VPCId3: Description: DB VPC ID Value: !Ref DBVPC PublicSubnetId: Description: Management Public Subnet ID Value: !Ref ManagementPublicSubnet01 PublicSubnet1Id: Description: APP Public Subnet 1 ID Value: !Ref APPPublicSubnet03 PublicSubnet2Id: Description: APP Public Subnet 2 ID Value: !Ref APPPublicSubnet05 PrivateSubnetId1: Description: APP Private Subnet ID Value: !Ref APPPrivateSubnet02 PrivateSubnetId2: Description: DB Private Subnet ID Value: !Ref DBPrivateSubnet04
确保每个Value后的资源名称(如APPVPC)与你VPC.yaml中实际创建的VPC资源逻辑ID一致。
2. 修正根栈Outputs的语法错误
你的根栈中outputfromNestedStack项重复定义了多个Value,这是无效的CloudFormation语法(每个输出只能对应一个值)。需要拆分为独立的输出项:
Outputs: StackRef: Value: !Ref VPCStack ManagementVPCId: Value: !GetAtt VPCStack.Outputs.VPCId1 ManagementPublicSubnetId: Value: !GetAtt VPCStack.Outputs.PublicSubnetId APPVPCId: Value: !GetAtt VPCStack.Outputs.VPCId2 APPPrivateSubnetId: Value: !GetAtt VPCStack.Outputs.PrivateSubnetId1 APPPublicSubnet1Id: Value: !GetAtt VPCStack.Outputs.PublicSubnet1Id APPPublicSubnet2Id: Value: !GetAtt VPCStack.Outputs.PublicSubnet2Id DBVPCId: Value: !GetAtt VPCStack.Outputs.VPCId3 DBPrivateSubnetId: Value: !GetAtt VPCStack.Outputs.PrivateSubnetId2
3. 重新部署栈
- 将修改后的VPC.yaml模板重新上传到对应的S3路径
- 删除之前创建失败的根栈(若存在)
- 重新部署根栈,验证所有嵌套栈的输出引用均可正常解析
内容的提问来源于stack exchange,提问作者Geralt
相关产品推荐
相关产品推荐

