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

Docker CLI无法识别AWS CLI SSO凭证 执行docker compose up报错

问题根因

Docker ECS集成默认的凭证加载链不会直接读取aws sso login生成的本地SSO缓存凭证,只认静态IAM密钥、环境变量、实例角色这类传统凭证源,所以会报找不到有效凭证的错误。

可落地解决方法

按操作成本从低到高排序:

方法1:临时导出SSO凭证到当前终端(最快生效)

  1. 确认已完成SSO登录:
aws sso login --profile dev
  1. 导出SSO生成的临时凭证到当前终端环境,必须包含会话token,否则凭证无效:
export $(aws configure export-credentials --profile dev --format env | xargs)
  1. 编辑你的docker-compose.yml,在服务的environment段补全会话token参数,否则传入容器的凭证不完整:
environment:
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
      - AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN} # 新增这行
      - ENABLE_SWAGGER=${ENABLE_SWAGGER:-true}
      - LOGGING_LEVEL=${LOGGING_LEVEL:-INFO}
  1. 保持在当前终端窗口直接执行docker compose up -d即可。临时凭证默认有效期8小时,过期后重新执行登录+导出步骤即可。

方法2:配置ECS上下文绑定SSO配置文件(长期生效)

  1. 先升级Docker Desktop/Docker Compose到最新稳定版,旧版本Docker ECS集成没有SSO配置读取能力。
  2. 查看当前使用的ECS上下文名称:
docker context ls
  1. 给对应ECS上下文绑定你的dev SSO配置:
# 把命令里的ecs替换成你实际查到的ECS上下文名称
docker context update ecs --aws-profile dev
  1. 配置完成后,只要提前完成aws sso login --profile dev登录,就可以直接执行docker compose相关命令,不需要每次手动导出环境变量。
避坑提醒
  • 执行操作前先清理终端内冲突的AWS环境变量,避免凭证加载优先级混乱:
unset AWS_PROFILE AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
  • 不要手动删除~/.aws/sso/cache目录下的文件,这里存的是SSO登录的有效缓存,误删会直接导致登录态失效。
  • 等功能调通后,建议删掉compose文件里手动传入AWS凭证的配置,ECS运行任务时直接绑定任务角色做权限校验即可,硬传凭证存在泄露风险,也增加后续维护成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:18:15