我有以下CloudFormation模板,除了它没有创建EC2实例之外还能正常工作,下面是我通过CloudFormation运行配置时从Amazon GUI获得的输出:
2015-01-05 Status Type Logical ID Status Reason
17:30:47 UTC+0000 CREATE_COMPLETE AWS::CloudFormation::Stack Chris-Test-1
17:30:45 UTC+0000 CREATE_COMPLETE AWS::RDS::DBInstance Failover
17:24:13 UTC+0000 CREATE_IN_PROGRESS AWS::RDS::DBInstance Failover Resource creation Initiated
17:24:11 UTC+0000 CREATE_IN_PROGRESS AWS::RDS::DBInstance Failover
17:24:09 UTC+0000 CREATE_COMPLETE AWS::RDS::DBSecurityGroup DBSecurityGroup
17:24:05 UTC+0000 CREATE_IN_PROGRESS AWS::RDS::DBSecurityGroup DBSecurityGroup Resource creation Initiated
17:24:04 UTC+0000 CREATE_IN_PROGRESS AWS::RDS::DBSecurityGroup DBSecurityGroup
17:24:02 UTC+0000 CREATE_COMPLETE AWS::EC2::SecurityGroup WebSecurityGroup
17:24:01 UTC+0000 CREATE_IN_PROGRESS AWS::EC2::SecurityGroup WebSecurityGroup Resource creation Initiated
17:23:45 UTC+0000 CREATE_IN_PROGRESS AWS::EC2::SecurityGroup WebSecurityGroup
17:23:42 UTC+0000 CREATE_IN_PROGRESS AWS::CloudFormation::Stack Chris-Test-1 User Initiated
我的CloudFormation配置位于:https://gist.github.com/dayvo/817969702a589590c342
获得创建EC2实例的任何帮助都将受到赞赏。
答案 0 :(得分:2)
AWS最近宣布了"修复" for CloudFormation模板验证将于2015年3月发布。显然,如果重复使用JSON对象属性,CloudFormation的JSON解析器不会捕获或抛出错误。这正是您案件中发生的事情。
查看名为ChrisFailover
的资源。您最初为其提供了Type
AWS::EC2::Instance
的属性。稍后,在同一个对象中,您再次指定Type
,但这次是AWS::RDS::DBInstance
。 Properties
属性也是一样。
基本上,您的EC2属性正被这个对象的RDS属性覆盖。如果您将模板放入JSON验证工具(例如http://jsonlint.com/),那么您会注意到您的EC2数据已消失。
要修复,请确保您的RDS对象是它自己的资源。
插入:
},
"ChrisDBInstance" : {
之前:
"Type": "AWS::RDS::DBInstance",
编辑:我对公告不正确。这是针对IAM政策文件的。但问题是一样的:http://blogs.aws.amazon.com/security/post/Tx2718VHAGDHG09/Coming-March-2015-Upgrades-to-IAM-Policy-Validation