我正在尝试创建要使用的cloudformation模板,但我不断收到上述错误。 以下是我的模板片段:
"Mappings" : {
"AWSInstanceType2Arch" : {
"t1.micro" : { "Arch" : "64" },
"m1.small" : { "Arch" : "64" },
"m1.medium" : { "Arch" : "64" },
"m1.large" : { "Arch" : "64" },
"m1.xlarge" : { "Arch" : "64" },
"m2.xlarge" : { "Arch" : "64" },
"m2.2xlarge" : { "Arch" : "64" },
"m2.4xlarge" : { "Arch" : "64" },
"m3.xlarge" : { "Arch" : "64" },
"m3.2xlarge" : { "Arch" : "64" },
"c1.medium" : { "Arch" : "64" },
"c1.xlarge" : { "Arch" : "64" },
"cc1.4xlarge" : { "Arch" : "64HVM" },
"cc2.8xlarge" : { "Arch" : "64HVM" },
"cg1.4xlarge" : { "Arch" : "64HVM" }
},
"AWSRegionArch2AMI" : {
"us-west-2": {"AMI": "ami-1b3b462b"}
}
},
"Resources": {
"Ec2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties": {
"ImageId": { "Fn::FindInMap": [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" },
{ "Fn::FindInMap": [ "AWSInstanceType2Arch", {"Ref": "InstanceType"}, "Arch" ] } ] },
"InstanceType": {"Ref": "InstanceType"},
"SecurityGroups": [ { "Ref": "SecurityGroups"} ],
"KeyName": { "Ref": "KeyName" },
"Tags": [ { "Key": "Name", "Value": { "Ref": "InstanceName" } } ] }
},
我在底部发生了更多事情,比如要执行的bash脚本,除非我无法通过这个问题。我错过了什么?
答案 0 :(得分:6)
我在寻找同一错误消息的解决方案时遇到了这个问题。
就我而言,我收到了错误:
无效的模板参数属性“属性”
这是因为我将资源定义放在模板的“Parameters”:{}部分而不是“Resources”:{}部分。
错误消息是这样的,因为Resources有“属性”部分,但“属性”对于参数无效。
答案 1 :(得分:1)
当我尝试将输出添加到模板时,我收到了相同的错误消息。
$ aws cloudformation validate-template --template-body "$(cat aws/vpc/production.template)"
A client error (ValidationError) occurred when calling the ValidateTemplate operation: Invalid template resource property 'InfrastructureIP'
我的问题是我在“资源”下添加了输出而不是之后。
INCORRECT
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Parameters" : {
#Some parameters
},
"Resources" : {
#Whole lot of resources
"Outputs" : {
"InfrastructureIP" : {
"Description": "The private IP of Infrastructure",
"Value" : { "Fn::GetAtt" : [ "Infrastructure", "PrivateIp" ] }
}
}
}
}
CORRECT
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Parameters" : {
#Some parameters
},
"Resources" : {
#Whole lot of resources
},
"Outputs" : {
"InfrastructureIP" : {
"Description": "The private IP of Infrastructure",
"Value" : { "Fn::GetAtt" : [ "Infrastructure", "PrivateIp" ] }
}
}
}
答案 2 :(得分:0)
我有一个像security groups
这样的变量名,我通过做securityGroups
来摆脱了这个错误
检查您的json键以获取正确的命名约定
答案 3 :(得分:0)
就我而言,我将模板文件中的输出称为[Output],而不是[Outputs],从而导致此问题。
答案 4 :(得分:0)
我在寻找问题的解决方案时遇到了这个问题-
<块引用>错误是无效的模板属性或属性
就我而言,这是 spacing
问题。因此,在我的情况下,我们使用 jinja
生成模板,而一种模板方法(生成 output
)没有适当的缩进或空格。数小时后解决问题后终于解决了。
答案 5 :(得分:0)
检查是否有任何空格丢失或任何名称错误的属性(记住属性区分大小写)。 所以“属性”是正确的,但“属性”不是。 'KeyType' 是正确的,但 'keyType' 不是。
因此,问题可能在于未遵循间距或命名约定
答案 6 :(得分:-1)
是间距问题。固定。模板可能很棘手。