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

为什么EKS Pod容器内的Python代码无法下载S3对象,提示AccessDenied?

EKS Pod通过IRSA访问S3报AccessDenied遗漏配置排查项
  • ServiceAccount注解检查:确认绑定角色的ServiceAccount是否正确配置了注解eks.amazonaws.com/role-arn: arn:aws:iam::[你的AWS账号ID]:role/[你的角色名],ARN不要出现拼写、账号ID、角色名错误。
  • IAM角色信任策略检查:确认角色的信任策略是否允许EKS集群的OIDC提供商执行sts:AssumeRoleWithWebIdentity操作,OIDC提供商的ARN、集群ID要和你当前使用的EKS集群完全匹配。
  • Pod关联配置检查:执行kubectl describe pod [你的Pod名称]查看Service Account字段,确认Pod实际关联的是你绑定了角色的ServiceAccount;进入Pod内部检查路径/var/run/secrets/eks.amazonaws.com/serviceaccount/token的WebIdentity token文件是否存在。
  • S3桶策略检查:如果S3桶配置了自定义桶策略,确认桶策略没有拒绝你绑定的IAM角色的s3:GetObject请求;如果是跨账号访问S3桶,需要在桶策略中显式允许该IAM角色的访问权限。
  • KMS权限检查:如果S3对象使用KMS密钥加密,除了给IAM角色配置kms:Decrypt权限外,还需要在KMS密钥的密钥策略中放行该IAM角色的Decrypt调用,仅在角色侧加KMS权限不会生效。
  • 凭证优先级检查:进入Pod内部执行aws sts get-caller-identity,查看返回的ARN是否为你绑定的IAM角色ARN。如果不是,检查Pod是否配置了AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY环境变量、是否存在~/.aws/credentials配置文件,上述配置的优先级高于IRSA凭证,如果存在无效旧配置会优先调用导致报错。
  • SDK版本检查:低版本boto3/botocore不支持IRSA凭证自动获取,确认Pod内的boto3版本≥1.16.0、botocore版本≥1.19.0,版本过低可以执行pip install --upgrade boto3 botocore升级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:30:04