[英]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.