AWS Cloudformation 有条件地创建资源

Pet*_*ter 2 amazon-web-services aws-cloudformation

我正在查看条件函数Fn::If:以仅在条件评估为真时创建或配置资源。就我而言,如果环境是 prod,则创建了一个策略。

Parameters:
  Env:
    Description: Environment
    Type: String

Conditions:
  IsProd: !Equals [!Ref Env, 'prod']
Run Code Online (Sandbox Code Playgroud)

我知道如何为属性执行此操作,但不知道如何为整个资源块执行此操作。

Type: 'AWS::IAM::Policy'
Properties:
  PolicyName: root
  PolicyDocument:
    Version: 2012-10-17
    Statement:
      - Effect: Allow
        Action: '*'
        Resource: '*'
  Roles:
    - !Ref RootRole
Run Code Online (Sandbox Code Playgroud)

这是可能的吗?

Mar*_*cin 6

您可以使用Condition:资源属性来做到这一点。例如:


Resources:

    MyIAMPolicy:

        Condition: IsProd

        Type: 'AWS::IAM::Policy'
        Properties:
          PolicyName: root
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              - Effect: Allow
                Action: '*'
                Resource: '*'
          Roles:
            - !Ref RootRole
Run Code Online (Sandbox Code Playgroud)

可以在此处找到更多关于此的信息: