从“aws ecr get-login”获取结果的问题

Ami*_*ari 5 amazon-web-services aws-cli aws-lambda aws-ecr

给出以下命令时出现以下错误。

aws ecr get-login --region eu-central-1
Run Code Online (Sandbox Code Playgroud)

错误

An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::314xxxx91079:user/git is not authorized to perform: ecr:GetAuthorizationToken on resource: *
Run Code Online (Sandbox Code Playgroud)

我的管理员已授予我访问此“GetAuthorizationToken”资源的权限。

很可能我认为问题是用于此命令的 'arn:aws:iam::314xxxx91079:user/git' 用户。当我登录到 aws 控制台时,我看到我的用户名 (IAM) 如下。

amit@iproxxx.com
Run Code Online (Sandbox Code Playgroud)

我如何让 'get-login' 使用这个用户名而不是 user/git。我对 aws cli 很陌生,这个命令恰好是构建步骤之一。

Mos*_*ted 17

对于较新版本,只需使用

aws ecr get-login-password \
        --region us-east-1 | docker login \
        --username AWS \
        --password-stdin <account-id>.dkr.ecr.us-east-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)


Rav*_*ish 11

使用较新版本的 AWS CLI,我们可以请求 ECR docker 登录密码,并将get-login-password密码通过管道传输到 Docker 登录,如下所示:

aws ecr get-login-password \
    --region us-east-1 \
| docker login \
    --username AWS \
    --password-stdin 123456789101.dkr.ecr.us-east-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

文档:https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ecr/get-login-password.html

使用 CLI V2,以下语法将引发错误:

$(aws ecr get-login --no-include-email --region us-east-1)
Run Code Online (Sandbox Code Playgroud)
 aws ecr get-login --no-include-email --region us-east-1
 usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
 To see help text, you can run:
 aws help
 aws <command> help
 aws <command> <subcommand> help
 aws: error: argument operation: Invalid choice, valid choices are:
Run Code Online (Sandbox Code Playgroud)


omu*_*thu 5

AWS cli 命令看起来不错,输出应该类似于下面

Sample output: 

docker login -u AWS -p password https://aws_account_id.dkr.ecr.eu-central-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

请检查您是否正确设置了供 cli 使用的 AWS 凭证。

如果没有完成,请尝试以下配置凭据

aws configure

AWS Access Key ID [None]: Access Key
AWS Secret Access Key [None]: Secret Key
Default region name [None]: eu-central-1
Default output format [None]: json
Run Code Online (Sandbox Code Playgroud)

注意:这应该是您的默认配置文件,否则也为 ecr get-login 命令传递配置文件名称

aws ecr get-login --region eu-central-1 --profile <profile name>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 !!!