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::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
我有以下 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::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