我正在使用 AWS 的单点登录 (SSO) 身份验证。
在终端中,我成功登录我的 SSO 帐户:
aws sso login --profile dev
导航到 docker-compose.yml 文件的目录,并在 Amazon ECS 上下文中使用 Docker,命令
docker compose up -d
失败并显示:
NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
我已删除旧的(非 SSO)访问密钥和配置文件:
~/.aws/config
~/.aws/credentials
所以现在上述目录中存在的就是我的 SSO 帐户。
在 SSO(使用 IAM 用户)之前,
docker compose up -d
按预期工作,因此我认为问题在于 Docker 难以通过 CLI 上的 SSO 连接到 AWS。
非常感谢这里的任何帮助。
有关 Docker ECS 集成的文档:https://docs.docker.com/cloud/ecs-integration/
docker-compose.yml
文件如下所示:
version: "3.4"
x-aws-vpc: "vpc-xxxxx"
x-aws-cluster: "test"
x-aws-loadbalancer: "test-nlb"
services:
test:
build:
context: ./
dockerfile: Dockerfile
target: development
image: xxx.dkr.ecr.eu-west-1.amazonaws.com/xxx:10
environment:
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
- ENABLE_SWAGGER=${ENABLE_SWAGGER:-true}
- LOGGING_LEVEL=${LOGGING_LEVEL:-INFO}
ports:
- "9090:9090"
解决方案是这样的:
export AWS_PROFILE=dev
docker login -u AWS -p $(aws ecr get-login-password) xxx.dkr.ecr.eu-west-1.amazonaws.com/xxx