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

CloudFormation中AWS Batch JobDefinition的ExecutionRoleArn无法使用!Ref

问题原因

当你用!Ref引用IAM角色资源时,CloudFormation返回的是角色名称,而非ARN。AWS Batch的JobRoleArn字段兼容角色名称(服务会自动将名称解析为ARN),但ExecutionRoleArn字段要求必须传入完整的ARN字符串,不能用角色名称,这就是报错的核心原因。

解决方法

把ExecutionRoleArn的!Ref替换为能获取角色ARN的CloudFormation函数即可,有两种常用方式:

方式1:使用!GetAtt获取ARN

直接通过!GetAtt函数获取角色的ARN属性:

JobDefinition:
  Type: AWS::Batch::JobDefinition
  Properties:
    # 其他配置...
    JobRoleArn: !Ref SecretsAndS3AccessRole
    ExecutionRoleArn: !GetAtt SecretsAndS3AccessRole.Arn

方式2:使用!Sub构造ARN

通过!Sub结合账户ID和角色名称拼接ARN:

JobDefinition:
  Type: AWS::Batch::JobDefinition
  Properties:
    # 其他配置...
    JobRoleArn: !Ref SecretsAndS3AccessRole
    ExecutionRoleArn: !Sub arn:aws:iam::${AWS::AccountId}:role/${SecretsAndS3AccessRole}

这两种方式都能给ExecutionRoleArn传入合法的ARN,解决部署报错的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:50:56