簡體   English   中英

在 AWS 雲形成模板中,如何根據環境將策略附加到角色

[英]In AWS cloud formation template how attach policy to a role based on environment

僅當環境是 dev 或 qa 時,我才嘗試將策略附加到角色。 我嘗試了下面的代碼,但它給出了模板錯誤。 '模板錯誤:每個 Fn::Or object 需要至少 2 個且最多 10 個 boolean 參數的列表。

該角色還包含其他策略,但我想僅在環境為 dev 或 qa 時附加策略“arn:aws:iam::111111111111:policy/attach-s3-policy”。

任何幫助將不勝感激。 如果以下不是正確的方法,您能否提出一個正確的方法來實現這一目標。

AWSTemplateFormatVersion: '2010-09-09'
Description: AWS CloudFormation template

Parameters:
  Environment:
    Type: String
    Default: dev
    AllowedValues:
      - dev
      - qa
      - prod
    Description: Enter dev, qa, prod. Default is dev.

Conditions:
  dev: !Equals [!Ref Environment, dev]
  qa: !Equals [!Ref Environment, qa]
  prd: !Equals [!Ref Environment, prod]
  devandqa: !Or [!Equals [!Ref Environment, dev],  [!Ref Environment, qa]]
  

Resources:
  ManagedInstanceRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Principal:
            Service:
            - ec2.amazonaws.com
          Action: sts:AssumeRole
      ManagedPolicyArns:
      - arn:aws:iam::111111111111:policy/service-role/AWSGlueServiceRole-test-glue-crawler-role
      - Fn::If:
         - devandqa
         - "arn:aws:iam::111111111111:policy/attach-s3-policy"

您的方法是正確的,您可以使用Fn::If構造有條件地使用某個屬性。

您共享的模板的問題是devandqa條件。 它應該是:

devandqa: !Or [!Equals [!Ref Environment, dev], !Equals [!Ref Environment, qa]]

你錯過了第二個!Equals ,所以!Or無法解決,因此出現錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM