为何容器内AWS CLI无法定位凭证?
AWS CLI容器挂载凭证失败故障原因
核心原因1:配置文件权限与属主不匹配
AWS CLI对config文件有强制安全校验:
- 要求文件权限必须是
600(仅属主可读可写),禁止其他用户拥有访问权限; - 容器内运行CLI的用户是
root(UID=0),但你的config文件属主是1000:1000,即使root能读取文件,CLI也会出于安全规则拒绝加载该配置,直接跳过导致找不到凭证。
核心原因2:SSO缓存文件权限问题
主机执行aws sso login后生成的SSO会话缓存存在~/.aws/sso/cache目录下,这些缓存文件的属主同样是1000:1000。容器内root用户读取时,会触发CLI的安全校验失败,无法获取有效会话凭证。
核心原因3:未指定目标Profile
主机上你是通过--profile ProfileName指定SSO profile完成登录的,但容器命令里没有添加该参数。如果config未设置默认profile,CLI会尝试读取默认凭证(不存在),进而抛出凭证缺失错误。
快速验证与修复
- 修正权限:在主机执行
chmod 600 ~/.aws/config,再执行chown -R root:root ~/.aws,确保容器内root是所有.aws文件的属主,且config权限符合要求; - 指定Profile运行:修改容器命令为:
docker run --rm -ti -v ~/.aws:/root/.aws amazon/aws-cli s3 ls --profile ProfileName - 验证配置:进入容器后执行
aws configure list --profile ProfileName,确认是否能正确读取SSO配置与凭证。
内容的提问来源于stack exchange,提问作者jamiet
相关产品推荐
相关产品推荐

