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

Cloudformation not creating EC2 instance, even though defined

我有以下 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 实例,我们将不胜感激。

AWS 最近宣布 "fix" 将于 2015 年 3 月推出 CloudFormation 模板验证。显然,如果 JSON 对象 JSON CloudFormation 的解析器不会捕获或抛出错误 属性 重复。这正是您的情况。

查看名为 ChrisFailover 的资源。您最初给它一个名为 Type of 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