amazon-web-services - 在堆栈中找不到输出 'VPCId2'

标签 amazon-web-services amazon-s3 aws-cloudformation amazon-vpc nested-stack

我创建了一个 AWS CloudFormation 模板,该模板调用嵌套堆栈来创建 Application Load Balancer、启用 SSM 的 EC2 实例、tomcat ec2 和 3 个 VPC。

但是,当我上传根堆栈时,出现此错误:

Output 'VPCId2' not found in stack 'arn:aws:cloudformation:us-east-1:465521475937:stack/root-VPCStack-146FM0ZNW6Y5S/60d8eaf0-dd0f-11ed-a4d3-12bfe4263bc1' for ALB

这是我的根堆栈:

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

我被困在这里了。请帮忙。

最佳答案

您的 VPCStack 输出如下所示:

 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

您正在输出具有相同名称 VPCId 的所有 3 个 VPC ID,但它们需要不同,例如

 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

关于amazon-web-services - 在堆栈中找不到输出 'VPCId2',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76034794/

相关文章:

amazon-web-services - ECS 上的 awslogs 的方式和原因(fargate)

amazon-web-services - 带有子目录的 S3 API 网关代理

amazon-web-services - 如何为特定 AWS 账户运行 CloudFormation

amazon-web-services - 属性 VPCZoneIdentifier 的值必须为字符串列表类型

amazon-web-services - 当我通过 cloudformation 将 access_key 和 Secret_key 传递到我的 ec2 实例时会发生什么?

amazon-web-services - AWS token 自动售货机应该部署在其自己的实例上还是可以将其与我的应用程序实例合并?

node.js - 如何在 AWS Lambda 表达式中访问 Kinesis ApproximateArrivalTime

amazon-web-services - RDS 只读副本 - Cloudformation 上的多可用区

amazon-s3 - 上传到 Amazon S3 的文件会在几天后自动删除吗?

amazon-s3 - 通过 aws 命令将内容编码设置为特定文件