英文:
Output 'VPCId2' not found in stack
问题
I created an AWS CloudFormation template that calls nested stacks to create an Application Load Balancer, EC2 instance with enable SSM and tomcat ec2 and 3 VPCs.
However, when I upload the root stack I got this error:
Output 'VPCId2' not found in stack 'arn:aws:cloudformation:us-east-1:465521475937:stack/root-VPCStack-146FM0ZNW6Y5S/60d8eaf0-dd0f-11ed-a4d3-12bfe4263bc1' for ALB
This is my root stack:
AWSTemplateFormatVersion: 2010-09-09
Description: Root template 2
Parameters:
KeyName:
Type: String
Default: demo
ManagementVPCBlock:
Type: String
Default: "10.0.0.0/24"
ManagementPublicSubnet01Block:
Type: String
Default: "10.0.0.0/28"
APPVPCBlock:
Type: String
Default: "10.0.1.0/24"
APPPrivateSubnet02Block:
Type: String
Default: "10.0.1.0/28"
APPPublicSubnet03Block:
Type: String
Default: "10.0.1.16/28"
DBVPCBlock:
Type: String
Default: "10.0.2.0/24"
DBPrivateSubnet04Block:
Type: String
Default: 10.0.2.0/28
APPPublicSubnet05Block:
Type: String
Default: "10.0.1.32/28"
AccepterRegion:
Description: enter the region
Type: String
AccepterAccountID:
Description: enter the accountId
Type: String
Resources:
VPCStack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://stackbucket-s3bucket-1esv04po5wsk9.s3.amazonaws.com/NestedStack/VPC.yaml
Parameters:
ManagementVPCBlock: !Ref ManagementVPCBlock
ManagementPublicSubnet01Block: !Ref ManagementPublicSubnet01Block
APPVPCBlock: !Ref APPVPCBlock
APPPrivateSubnet02Block: !Ref APPPrivateSubnet02Block
APPPublicSubnet03Block: !Ref APPPublicSubnet03Block
DBVPCBlock: !Ref DBVPCBlock
DBPrivateSubnet04Block: !Ref DBPrivateSubnet04Block
AccepterRegion: !Ref AccepterRegion
AccepterAccountID: !Ref AccepterAccountID
TimeoutInMinutes: 5
ALBStack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://stackbucket-s3bucket-1esv04po5wsk9.s3.amazonaws.com/NestedStack/ALB.yaml
Parameters:
VPCId: !GetAtt VPCStack.Outputs.VPCId2
PublicSubnet1Id: !GetAtt VPCStack.Outputs.PublicSubnet1Id
PublicSubnet2Id: !GetAtt VPCStack.Outputs.PublicSubnet2Id
TimeoutInMinutes: 5
SSMStack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://stackbucket-s3bucket-1esv04po5wsk9.s3.amazonaws.com/NestedStack/SSM.yaml
Parameters:
VPCId: !GetAtt VPCStack.Outputs.VPCId1
PublicSubnetId: !GetAtt VPCStack.Outputs.PublicSubnetId
TimeoutInMinutes: 5
TomcatEC2Stack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://stackbucket-s3bucket-1esv04po5wsk9.s3.amazonaws.com/NestedStack/TomcatEC2.yaml
Parameters:
VPCId: !GetAtt VPCStack.Outputs.VPCId2
PrivateSubnetId: !GetAtt VPCStack.Outputs.PrivateSubnetId1
KeyName: !Ref KeyName
TimeoutInMinutes: 5
Outputs:
StackRef:
Value: !Ref VPCStack
outputfromNestedStack:
Value: !GetAtt VPCStack.Outputs.VPCId1
Value: !GetAtt VPCStack.Outputs.PublicSubnetId
Value: !GetAtt VPCStack.Outputs.VPCId2
Value: !GetAtt VPCStack.Outputs.PrivateSubnetId1
Value: !GetAtt VPCStack.Outputs.PublicSubnet1Id
Value: !GetAtt VPCStack.Outputs.PublicSubnet2Id
Value: !GetAtt VPCStack.Outputs.VPCId3
Value: !GetAtt VPCStack.Outputs.PrivateSubnetId2
I'm stuck here. Please help.
英文:
I created an AWS CloudFormation template that calls nested stacks to create an Application Load Balancer, EC2 instance with enable SSM and tomcat ec2 and 3 VPCs.
However, when I upload the root stack I got this error:
>Output 'VPCId2' not found in stack 'arn:aws:cloudformation:us-east-1:465521475937:stack/root-VPCStack-146FM0ZNW6Y5S/60d8eaf0-dd0f-11ed-a4d3-12bfe4263bc1' for ALB
This is my root stack:
AWSTemplateFormatVersion: 2010-09-09
Description: Root template 2
Parameters:
KeyName:
Type: String
Default: demo
ManagementVPCBlock:
Type: String
Default: "10.0.0.0/24"
ManagementPublicSubnet01Block:
Type: String
Default: "10.0.0.0/28"
APPVPCBlock:
Type: String
Default: "10.0.1.0/24"
APPPrivateSubnet02Block:
Type: String
Default: "10.0.1.0/28"
APPPublicSubnet03Block:
Type: String
Default: "10.0.1.16/28"
DBVPCBlock:
Type: String
Default: "10.0.2.0/24"
DBPrivateSubnet04Block:
Type: String
Default: 10.0.2.0/28
APPPublicSubnet05Block:
Type: String
Default: "10.0.1.32/28"
AccepterRegion:
Description: enter the region
Type: String
AccepterAccountID:
Description: enter the accountId
Type: String
Resources:
VPCStack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://stackbucket-s3bucket-1esv04po5wsk9.s3.amazonaws.com/NestedStack/VPC.yaml
Parameters:
ManagementVPCBlock: !Ref ManagementVPCBlock
ManagementPublicSubnet01Block: !Ref ManagementPublicSubnet01Block
APPVPCBlock: !Ref APPVPCBlock
APPPrivateSubnet02Block: !Ref APPPrivateSubnet02Block
APPPublicSubnet03Block: !Ref APPPublicSubnet03Block
DBVPCBlock: !Ref DBVPCBlock
DBPrivateSubnet04Block: !Ref DBPrivateSubnet04Block
AccepterRegion: !Ref AccepterRegion
AccepterAccountID: !Ref AccepterAccountID
TimeoutInMinutes: 5
ALBStack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://stackbucket-s3bucket-1esv04po5wsk9.s3.amazonaws.com/NestedStack/ALB.yaml
Parameters:
VPCId: !GetAtt VPCStack.Outputs.VPCId2
PublicSubnet1Id: !GetAtt VPCStack.Outputs.PublicSubnet1Id
PublicSubnet2Id: !GetAtt VPCStack.Outputs.PublicSubnet2Id
TimeoutInMinutes: 5
SSMStack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://stackbucket-s3bucket-1esv04po5wsk9.s3.amazonaws.com/NestedStack/SSM.yaml
Parameters:
VPCId: !GetAtt VPCStack.Outputs.VPCId1
PublicSubnetId: !GetAtt VPCStack.Outputs.PublicSubnetId
TimeoutInMinutes: 5
TomcatEC2Stack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://stackbucket-s3bucket-1esv04po5wsk9.s3.amazonaws.com/NestedStack/TomcatEC2.yaml
Parameters:
VPCId: !GetAtt VPCStack.Outputs.VPCId2
PrivateSubnetId: !GetAtt VPCStack.Outputs.PrivateSubnetId1
KeyName: !Ref KeyName
TimeoutInMinutes: 5
Outputs:
StackRef:
Value: !Ref VPCStack
outputfromNestedStack:
Value: !GetAtt VPCStack.Outputs.VPCId1
Value: !GetAtt VPCStack.Outputs.PublicSubnetId
Value: !GetAtt VPCStack.Outputs.VPCId2
Value: !GetAtt VPCStack.Outputs.PrivateSubnetId1
Value: !GetAtt VPCStack.Outputs.PublicSubnet1Id
Value: !GetAtt VPCStack.Outputs.PublicSubnet2Id
Value: !GetAtt VPCStack.Outputs.VPCId3
Value: !GetAtt VPCStack.Outputs.PrivateSubnetId2
I'm stuck here. Please help.
答案1
得分: 2
Your VPCStack outputs appear to be as follows:
Outputs:
VPCId:
Value: !Ref ManagementVPC
PublicSubnetId:
Value: !Ref ManagementPublicSubnet
VPCId:
Value: !Ref APPVPC
PrivateSubnetId:
Value: !Ref PrivateSubnet
PublicSubnet1Id:
Value: !Ref PublicSubnet1
PublicSubnet2Id:
Value: !Ref PublicSubnet2
VPCId:
Value: !Ref DBVPC
PrivateSubnetId:
Value: !Ref PrivateSubnet
您的VPCStack输出似乎如下:
输出:
VPCId:
值: !Ref ManagementVPC
PublicSubnetId:
值: !Ref ManagementPublicSubnet
VPCId:
值: !Ref APPVPC
PrivateSubnetId:
值: !Ref PrivateSubnet
PublicSubnet1Id:
值: !Ref PublicSubnet1
PublicSubnet2Id:
值: !Ref PublicSubnet2
VPCId:
值: !Ref DBVPC
PrivateSubnetId:
值: !Ref PrivateSubnet
您将所有3个VPC ID输出都使用了相同的名称VPCId
,但它们需要不同,例如:
输出:
VPCId1:
值: !Ref ManagementVPC
PublicSubnetId:
值: !Ref ManagementPublicSubnet
VPCId2:
值: !Ref APPVPC
PrivateSubnetId:
值: !Ref PrivateSubnet
PublicSubnet1Id:
值: !Ref PublicSubnet1
PublicSubnet2Id:
值: !Ref PublicSubnet2
VPCId3:
值: !Ref DBVPC
PrivateSubnetId:
值: !Ref PrivateSubnet
英文:
Your VPCStack outputs appear to be as follows:
Outputs:
VPCId:
Value: !Ref ManagementVPC
PublicSubnetId:
Value: !Ref ManagementPublicSubnet
VPCId:
Value: !Ref APPVPC
PrivateSubnetId:
Value: !Ref PrivateSubnet
PublicSubnet1Id:
Value: !Ref PublicSubnet1
PublicSubnet2Id:
Value: !Ref PublicSubnet2
VPCId:
Value: !Ref DBVPC
PrivateSubnetId:
Value: !Ref PrivateSubnet
You are outputting all 3 VPC IDs with the same name VPCId
but they need to be different e.g.
Outputs:
VPCId1:
Value: !Ref ManagementVPC
PublicSubnetId:
Value: !Ref ManagementPublicSubnet
VPCId2:
Value: !Ref APPVPC
PrivateSubnetId:
Value: !Ref PrivateSubnet
PublicSubnet1Id:
Value: !Ref PublicSubnet1
PublicSubnet2Id:
Value: !Ref PublicSubnet2
VPCId3:
Value: !Ref DBVPC
PrivateSubnetId:
Value: !Ref PrivateSubnet
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论