CloudFormation:仅在特定阶段创建资源

时间:2017-11-04 04:01:44

标签: amazon-web-services amazon-cloudformation

我有一个用例,我想在使用云形成的测试环境中创建资源。我正在尝试使用条件来实现这一点,但它失败了。

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

它在非prod阶段工作正常,但在模板的Resources块中“未解析的资源依赖[TestClientRole]”失败“

如何使云形成忽略了生产阶段的资源?

1 个答案:

答案 0 :(得分:2)

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

问题是,在Prod环境中创建 ,而另一个资源则表示它依赖于正在创建的角色。

解决方案:删除模板中引用TestClientRole的其他位置的相关性。

事实上,实际上需要依赖项非常罕见,因为CloudFormation根据资源之间的引用计算出正确的构建顺序。您需要依赖的唯一时间是您特别希望在另一个启动之前完成构建,例如让应用服务器等到数据库服务器准备就绪。通常情况下,除非您有特别需要,否则请将它们排除在外。