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

CloudFormation: Create a resource only in specific stage

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

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

它在非产品阶段工作正常,但在 "Unresolved resource dependencies [TestClientRole] in the Resources block of the template"

时失败

如何让 cloud formation 忽略 prod 阶段的资源?

错误消息表明您的 CloudFormation 模板中的其他地方依赖于 TestClientRole

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

解决方案: 删除模板中其他地方引用 TestClientRole.

的依赖项

事实上,实际需要 依赖项的情况非常少,因为 CloudFormation 根据资源之间的引用计算出正确的构建顺序。唯一需要依赖项的情况是当您特别希望在另一件事开始之前完成构建时,例如让应用程序服务器等待数据库服务器准备就绪。通常,将它们排除在外,除非您有不明显的特殊需求。