我正在通过Java Eclipse创建Amazon Stack。
下面的代码行抛出错误
csr.setTemplateURL("https://s3.amazonaws.com/cloudformation-templates-us-east- 1/AutoScalingMultiAZSample.template");
我收到的错误是:
Caught Exception:参数:[KeyName]必须具有值(Service:AmazonCloudFormation; Status Code:400; Error Code:ValidationError; Request ID:9363d711-3535-11e4-8cf2-913ef42879cb) 响应状态代码:400
我的json模板网址是 https://s3.amazonaws.com/cloudformation-templates-us-east-1/AutoScalingMultiAZSample.template
请帮助解决此问题的确切来源。
答案 0 :(得分:1)
好的,我尝试使用在线验证器验证您的json架构。
我刚刚复制了你的json架构并粘贴在那里。它说无效模式期待{在第1行。确定我必须在你的模式之间放置开始和结束括号。但它再次给出了错误。额外的支架}在最后一行。所以我不得不删除它。然后验证了json模式。它意味着您的架构中的某个位置会放置一个额外的结束括号}。
我认为你犯错误的地方是:
"InstanceSecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "Enable SSH access and HTTP from the load balancer only",
"SecurityGroupIngress" : [ {
"IpProtocol" : "tcp",
"FromPort" : "22",
"ToPort" : "22",
"CidrIp" : { "Ref" : "SSHLocation"}
},
{
"IpProtocol" : "tcp",
"FromPort" : { "Ref" : "WebServerPort" },
"ToPort" : { "Ref" : "WebServerPort" },
"SourceSecurityGroupOwnerId" : {"Fn::GetAtt" : ["ElasticLoadBalancer", "SourceSecurityGroup.OwnerAlias"]},
"SourceSecurityGroupName" : {"Fn::GetAtt" : ["ElasticLoadBalancer", "SourceSecurityGroup.GroupName"]}
} ]
}
}//Extra Bracket i think so
},
"Outputs" : {
"URL" : {
"Description" : "The URL of the website",
"Value" : { "Fn::Join" : [ "", [ "http://", { "Fn::GetAtt" : [ "ElasticLoadBalancer", "DNSName" ]}]]}
}
}
}