正在获取“模板验证错误:无效的模板资源属性'VPCID'”

Ran*_*san 0 amazon-web-services aws-cloudformation amazon-vpc

问题描述

堆栈:AWS

服务:云形成

我要实现的目标:尝试使用Cloud形成方式来形成VPC

更多细节 :

1,尝试着云的形成

2.在使用云形成[JSON]构建VPC方面具有逐步的方法。

  1. 单独建立一个vpc
  2. 通过将更多组件添加到JSON模板来更新现有堆栈
  3. 子网,Internet网关,NAT,路由表等组件
  4. 我想一次添加一个组件,因此每次进行更新时,我只会添加一个组件,并且我也要注意顺序。

面临的问题:使用第一个模板,仅VPC成功创建。当我尝试使用Internet网关更新堆栈并附加到VPC时,开始出现错误“模板验证错误:无效的模板资源属性'VPCID'。

JSON模板如下

{
"Parameters": {  
   "CIDRRange": { 
     "Description": "VPCCIDR Range (will be a /16 block)",
     "Type": "String",
     "Default": "10.251.0.0",
     "AllowedValues": ["10.250.0.0","10.251.0.0"]
                } 
              }, 

"Resources": { 
   "VPCBase": { 
     "Type": "AWS::EC2::VPC",
     "Properties": { 
     "CidrBlock": { "Fn::Join" : ["", [{ "Ref" : "CIDRRange" }, "/16"]] },
     "EnableDnsSupport": "True",
     "EnableDnsHostnames": "True",
     "Tags": [{ "Key": "Name", "Value":    { "Fn::Join" : ["", [{ "Ref" : "AWS::StackName" }, "-VPC"]] } }]
                   }
               },

   "IGWBase" : {
     "Type" : "AWS::EC2::InternetGateway",
     "Properties" : {
     "Tags" : [{ "Key": "Name", "Value": { "Fn::Join" : ["", [{ "Ref" : "AWS::StackName" }, "-IGW"]] } }]
                    }
               },

   "VGAIGWBase" : {
     "Type" : "AWS::EC2::VPCGatewayAttachment",
     "Properties" : {
     "InternetGatewayId" : { "Ref" : "IGWBase" },
     "VpcId" : { "Ref" : "VPCBase" }}
                  },

   "Outputs": {
     "VPCID" : { "Value" : { "Ref" : "VPCBase" } },
     "DefaultSG" : { "Value" : { "Fn::GetAtt" : ["VPCBase", "DefaultSecurityGroup"] }}
              }
}
}
Run Code Online (Sandbox Code Playgroud)

chr*_*ris 5

您的格式有些混乱-我建议在json上使用yaml-但问题是您没有关闭Resources:部分。

您可以使用cli验证模板

aws cloudformation validate-template --template-body file://path.json



  "VGAIGWBase" : {
    "Type" : "AWS::EC2::VPCGatewayAttachment",
    "Properties" : {
      "InternetGatewayId" : { "Ref" : "IGWBase" },
      "VpcId" : { "Ref" : "VPCBase" }
    }
  }
},   << ADD THIS

"Outputs": {
  "VPCID" : { "Value" : { "Ref" : "VPCBase" } },
  "DefaultSG" : { "Value" : { "Fn::GetAtt" : ["VPCBase", "DefaultSecurityGroup"] }}
  }
}
Run Code Online (Sandbox Code Playgroud)