无效资源 属性 cloudformation

Invalid resource property cloudformation

我正在尝试使用 CloudFormation 来自动化一些构建部署。我现在正在尝试创建一个带有 public 子网的 VPC,但我一直收到此错误

A client error (ValidationError) occurred when calling the ValidateTemplate operation: Invalid template resource property 'PublicSubnet'

我在模板中的部分如下:

       "PublicSubnet" : {
        "Type": "AWS::EC2::Subnet",
        "Properties": {
            "CidrBlock": "10.0.1.0/24",
            "Tags": [
                {
                    "Name": "public-1"
                },
                {
                    "VpcId": {
                        "Ref": "DemoVPC"
                    }
                }
            ]
        },

如有任何指导,我们将不胜感激。

AWS::EC2::Subnet 的语法是:

{
   "Type" : "AWS::EC2::Subnet",
   "Properties" : {
      "AvailabilityZone" : String,
      "CidrBlock" : String,
      "MapPublicIpOnLaunch" : Boolean,
      "Tags" : [ Resource Tag, ... ],
      "VpcId" : { "Ref" : String }
   }
}

您的 VpcId 似乎在 Tags 中,但实际上不应该在。 Tag Type 具有以下属性

{
  "Key" : String,
  "Value" : String
}

对于创建子网资源,VpcId 和 CidrBlock 是必需的。尽管您可以将 VpcId 作为标记本身,但 VpcId 应该是属性之一。有关详细信息,请参阅 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html,特别是那些说 Required

如果文档的 JSON 结构变形,通常也会出现此错误消息。如果没有好的工具,很容易混淆左括号和右括号。