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

AWS EKS中Pod使用节点组角色而非指定服务账号角色问题咨询

排查与解决步骤

1. 核心原因确认

你使用的aws-java-sdk-core:1.11.505版本不支持IRSA(IAM Roles for Service Accounts,即通过OIDC绑定服务账号的角色方案)的凭证加载逻辑。AWS官方在1.11.704版本才正式将WebIdentity凭证提供者加入SDK默认凭证链,低于该版本的SDK不会读取Pod内注入的OIDC令牌文件,会直接回退到EC2元数据接口获取节点角色凭证,就会出现你遇到的现象。

2. 优先解决方案(推荐)

直接升级aws-java-sdk-core到1.11.704及以上的稳定1.x版本,示例依赖配置(Maven):

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-core</artifactId>
    <version>1.12.550</version>
</dependency>

升级后无需修改业务代码,SDK默认凭证链会自动优先读取Pod内注入的AWS_ROLE_ARN、AWS_WEB_IDENTITY_TOKEN_FILE环境变量,加载服务账号绑定的角色凭证,不会再回退到节点角色。

3. 临时兼容方案(无法升级版本时使用)

如果暂时无法升级SDK版本,可以手动在代码中指定WebIdentity凭证提供者,优先级高于默认的实例元数据凭证:

// 手动构造WebIdentity凭证提供者
AWSCredentialsProvider webIdentityProvider = WebIdentityTokenCredentialsProvider.builder().build();
// 构造AWS客户端时显式传入该凭证提供者
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
    .withCredentials(webIdentityProvider)
    .withRegion(Regions.CN_NORTHWEST_1)
    .build();

4. 额外排查点

如果升级版本后仍有问题,检查以下配置:

  • 确认Pod中已正确注入AWS_ROLE_ARN和AWS_WEB_IDENTITY_TOKEN_FILE两个环境变量,你在shell中验证正常说明注入配置无问题
  • 检查业务代码中构造AWS客户端时,是否手动指定了InstanceProfileCredentialsProvider等只读取节点角色的凭证提供者,如果有则需要删除或者调整凭证链顺序
  • 检查服务账号的annotation是否正确配置了角色ARN,信任策略是否允许OIDC提供商Assume该角色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:36:03