2017-11-04 44 views
0

我有一个用例,我只想在使用云形成的测试环境中创建资源。我试图使用条件来实现这一点,但它失败了。CloudFormation:仅在特定阶段创建资源

Resources: 
    TestClientRole: 
     Type: AWS::IAM::Role 
     Condition: NotProdStage 
     Properties: 
      AssumeRolePolicyDocument: 
      Statement: 
      - Action: <> 
       Effect: Allow 
       <> 
      Version: '2012-10-17' 
      RoleName: 
      "some-test-role" 

它工作在非督促阶段罚款,但失败,“未解决资源依赖[TestClientRole]在模板中的资源块”

如何使云的形成忽略资源督促阶段?

+0

你是说它适用于非prod,但在** prod **阶段显示该特定错误?也就是说,当'NotProdStage'是错误的? –

+0

@JohnRotenstein正确 – user401445

+0

我还在资源TestClientRole块中看到模板的一些问题。你确定这个资源正在创建正确吗?例如:'AssumeRolePolicyDocument'中缺少'Principal'标签。传递给“Action”的值是错误的。 –

回答

2

该错误消息表明在您的CloudFormation模板的其他地方存在对TestClientRole的依赖关系。

问题是角色是而不是在Prod环境中创建,但另一个资源是说它依赖于创建的角色。

解决方案:删除模板中引用TestClientRole的其他地方的依赖关系。

事实上,实际上,需要依赖关系是非常罕见的,因为CloudFormation根据资源之间的引用计算出正确的构建顺序。唯一需要依赖的时间是当你特别希望某件事在另一次启动之前完成构建时,比如让应用程序服务器等待数据库服务器准备就绪。通常情况下,除非你有一个不明显的特殊需求,否则将它们排除在外。

相关问题