You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CloudFormation模板中按环境为IAM角色附加策略报错求助

解决CloudFormation模板中Fn::Or条件报错问题

错误原因

你定义的devandqa条件不符合Fn::Or的语法要求:!Or的每个参数必须是布尔类型的条件判断,但你第二个参数直接写了[!Ref Environment, qa],这不是一个完整的布尔表达式,导致触发报错:Template error: every Fn::Or object requires a list of at least 2 and at most 10 boolean parameters。

修正方案

有两种简单的修正方式,任选其一即可:

方案1:复用已定义的dev/qa条件

直接引用之前已经定义好的dev和qa布尔条件,简化devandqa的写法:

Conditions:
  dev: !Equals [!Ref Environment, dev]
  qa: !Equals [!Ref Environment, qa]
  prd: !Equals [!Ref Environment, prod]
  # 修正后的devandqa条件
  devandqa: !Or [!Condition dev, !Condition qa]

方案2:补全完整的布尔判断

如果不想复用已有条件,直接在!Or中写两个完整的!Equals判断:

Conditions:
  dev: !Equals [!Ref Environment, dev]
  qa: !Equals [!Ref Environment, qa]
  prd: !Equals [!Ref Environment, prod]
  # 修正后的devandqa条件
  devandqa: !Or 
    - !Equals [!Ref Environment, dev]
    - !Equals [!Ref Environment, qa]

完整修正后的模板

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

Parameters:
  Environment:
    Type: String
    Default: dev
    AllowedValues:
      - dev
      - qa
      - prod
    Description: 输入dev、qa或prod,默认值为dev

Conditions:
  dev: !Equals [!Ref Environment, dev]
  qa: !Equals [!Ref Environment, qa]
  prd: !Equals [!Ref Environment, prod]
  devandqa: !Or [!Condition dev, !Condition 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
      - !If
        - devandqa
        - arn:aws:iam::111111111111:policy/attach-s3-policy
        - !Ref AWS::NoValue

内容的提问来源于stack exchange,提问作者Villa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:39:33