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

Jenkins执行AWS Assume Role报错:无法定位凭证

问题分析:Jenkins执行AWS Assume Role时提示无法找到凭证

核心错误原因

1. 信任关系配置逻辑错误

你设置的信任关系中,Principal是目标角色terraform-jenkinsrole自己的ARN。AWS AssumeRole操作要求调用方(比如Jenkins的运行身份)必须被目标角色的信任关系允许,而非让角色自己信任自己。这种配置没有任何合法的调用方可以触发AssumeRole请求。

2. 执行AssumeRole时缺少初始身份凭证

错误提示Unable to locate credentials说明Jenkins运行命令的环境中没有有效的AWS初始凭证。AssumeRole不是无凭证调用的操作,必须先通过一个合法的AWS身份(EC2实例角色、IAM用户凭证等)发起请求,这个初始身份需要被目标角色的信任关系允许,同时拥有sts:AssumeRole权限。

3. 附加策略冗余且逻辑无效

  • 目标角色已经附加了AdministratorAccess策略,该策略已包含所有AWS操作权限(包括sts:AssumeRole),额外添加的Policy2完全冗余。
  • Policy2允许角色自己Assume自己,这种配置在实际场景中没有意义,只会混淆权限逻辑。

解决步骤

1. 修正目标角色的信任关系

根据Jenkins的部署方式,调整信任关系中的Principal:

  • 如果Jenkins部署在AWS EC2上:使用EC2实例角色的ARN作为信任主体
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::202533537610:role/[你的EC2实例角色ARN]"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
  • 如果Jenkins使用IAM用户凭证:使用IAM用户的ARN作为信任主体
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::202533537610:user/[Jenkins使用的IAM用户名称]"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

2. 确保Jenkins环境拥有初始凭证

  • EC2部署场景:给Jenkins所在的EC2实例附加一个IAM角色,该角色需要具备sts:AssumeRole权限,资源指定为目标角色arn:aws:iam::202533537610:role/terraform-jenkinsrole。
  • 其他部署场景:在Jenkins流水线中通过凭证管理工具注入IAM用户的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY环境变量(禁止硬编码在代码中)。

3. 清理冗余IAM策略

删除附加在terraform-jenkinsrole上的Policy2,保留AdministratorAccess即可,避免权限配置混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:57:06