开始测试 Cloud Formation 模板以使用 JSON 格式创建 EC2 实例,收到错误“每个参数对象必须包含类型成员”。我在网上找不到解决方案。
我已经搜索了这个错误,我找到的唯一解决方案是将“Type”:“String”添加到模板中,但它已经存在了。
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "EC2 CloudFormation Template - Version 1.0",
"Metadata": {},
"Parameters": {
"InstanceType": {
"Description": "EC2 instance type",
"Type": "String",
"Default": "t2.small",
"AllowedValues": [
"t1.micro",
"t2.nano",
"t2.micro",
"t2.small",
"t2.medium",
"t2.large",
],
"ConstraintDescription": "must be a valid EC2 instance type."
},
"Mappings": {
},
"Conditions": {
},
"Resources": {
"EOTSS_EC2": {
"Type": "AWS::EC2::Instance",
"Properties": {
"DisableApiTermination": "false",
"ImageId": "ami-06bee8e1000e44ca4",
"InstanceType": { "Ref": "InstanceType" },
"Monitoring": "true",
"Tags": [
{
"Key": "Name",
"Value": "test"
}
]
}
}
},
"Outputs": {
}
}
}
当我将其作为新堆栈启动时出现的错误是“模板格式错误:每个参数对象都必须包含类型成员。”
最佳答案
问题是您的模板嵌套得不好:Outputs
应该位于 EOTSS_EC2
之外,而 Resources
应该位于 EOTSS_EC2
之外,换句话说,应该位于在 AWSTemplateFormatVersion
、Description
、Metadata
、Parameters
、Mappings
的同一级别, 条件
和资源
。
{
"AWSTemplateFormatVersion":"2010-09-09",
"Description":"EC2 CloudFormation Template - Version 1.0",
"Metadata":{
},
"Parameters":{
"InstanceType":{
"Description":"EC2 instance type",
"Type":"String",
"Default":"t2.small",
"AllowedValues":[
"t1.micro",
"t2.nano",
"t2.micro",
"t2.small",
"t2.medium",
"t2.large"
],
"ConstraintDescription":"must be a valid EC2 instance type."
}
},
"Mappings":{
},
"Conditions":{
},
"Resources":{
"EOTSS_EC2":{
"Type":"AWS::EC2::Instance",
"Properties":{
"DisableApiTermination":"false",
"ImageId":"ami-06bee8e1000e44ca4",
"InstanceType":{
"Ref":"InstanceType"
},
"Monitoring":"true",
"Tags":[
{
"Key":"Name",
"Value":"test"
}
]
}
}
},
"Outputs":{
}
}
关于json - 用于创建 EC2 的 AWS CloudFormation 模板 (JSON) - 意外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56530728/