我正在尝试使用CloudFormation自动执行某些构建部署。我现在正在尝试创建一个带有公有子网的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"
}
}
]
},
任何指导都将不胜感激。
答案 0 :(得分:1)
如果文档的JSON结构变形,通常也会出现此错误消息。如果没有良好的工具,很容易与开放式和闭合式托架混淆。
答案 1 :(得分:0)
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
}
答案 2 :(得分:0)
要创建子网资源,必须使用VpcId和CidrBlock。虽然你可以将VpcId作为标签本身,但VpcId应该是属性之一。有关详细信息,请参阅http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html,特别是那些必需