即使已定义,Cloudformation也不会创建EC2实例

时间:2015-01-05 18:37:47

标签: amazon-web-services amazon-cloudformation

我有以下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实例的任何帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

AWS最近宣布了"修复" for CloudFormation模板验证将于2015年3月发布。显然,如果重复使用JSON对象属性,CloudFormation的JSON解析器不会捕获或抛出错误。这正是您案件中发生的事情。

查看名为ChrisFailover的资源。您最初为其提供了Type AWS::EC2::Instance的属性。稍后,在同一个对象中,您再次指定Type,但这次是AWS::RDS::DBInstanceProperties属性也是一样。

基本上,您的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