AWS ECR GetAuthorizationToken

时间:2016-07-26 10:26:47

标签: amazon-web-services amazon-ec2 aws-cli amazon-ecs

我尝试通过向用户提供AmazonEC2ContainerRegistryFullAccess政策来遵循AWS向我的用户设置ECR授权的说明。

然而,当我尝试在我的电脑上运行aws ecr get-login时,我收到一条错误消息,我没有获得许可。

An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::ACCOUNT_NUMBER:user/MY_USER is not authorized to perform: ecr:GetAuthorizationToken on resource: *

我做错了什么?

9 个答案:

答案 0 :(得分:28)

您必须将政策附加到您的IAM角色。

我附加了AmazonEC2ContainerRegistryFullAccess并且它有效。

答案 1 :(得分:7)

我发现当启用2FA时,没有选项可以使用aws ecr get-login,一旦我从我的帐户中删除了2FA,我就获得了授权令牌

答案 2 :(得分:3)

就像错误描述中所显示的那样,我必须在策略中允许执行操作“ GetAuthorizationToken”。

    {
        "Sid": "VisualEditor2",
        "Effect": "Allow",
        "Action": "ecr:GetAuthorizationToken",
        "Resource": "*"
    }

注意:这不是我的完整政策,而是声明的一个小节。

答案 3 :(得分:1)

当我尝试将容器推入存储库时,我在ECS上也遇到了同样的问题。

要解决此问题,我将我的IAM角色附加为AmazonECS_FullAccess

答案 4 :(得分:1)

这是我的男朋友EC2InstanceProfileForImageBuilderECRContainerBuilds

答案 5 :(得分:0)

在按照所有步骤操作后,这里是一个完整的答案-我能够使用ECR

该错误可能有2个含义:

1)您无权,因为您没有附加用户的ECR策略 2)您无权,因为您正在使用2FA并且使用cli是不安全的,除非您设置了临时会话令牌

这是获得访问权限的所有步骤的列表(包括处理2FA)

  1. 首先,您必须创建一个策略,该策略使您可以访问ECR中的GetAuthorizationToken操作。
  2. 将此策略分配给用户或组(组/角色总是IMHO更好的方法,我对角色的投票,例如DevOps)
  3. 确保您的环境中设置了AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。我建议使用将凭据和配置文件分开的aws文件夹。

如果您启用了2FA

  1. 您需要使用此命令生成会话令牌 aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-tokenarn-of-the-mfa-device可以在您的个人资料的2FA部分中找到。令牌是从设备生成的令牌。
  2. 使用收到的AccessKeyIdSecretAccessKeySessionToken更新awrecretails。 AWS建议您使用任一个cron作业来刷新令牌,这意味着如果您正在进行令牌测试,则您的产品资源很可能未启用2FA。您可以通过提供--duration-seconds来增加会话,但最多只能使用36个小时。在authenticate-mfa-cli
  3. 可以找到很好的解释

这应该可以完成

答案 6 :(得分:0)

我最终使用了AmazonEC2ContainerRegistryPowerUser,因为它似乎比完全访问更好。以下是截至2019年6月我发现的政策: Container Registry Permissions

答案 7 :(得分:0)

我遇到了同样的问题,但是以前我将permission boundary仅设置为s3,这会导致问题。

删除了permission boundary,它就像一个魅力

答案 8 :(得分:0)

对我来说:

              - Effect: Allow
                Sid: VisualEditor2
                Action:
                  - ecr:GetAuthorizationToken
                  - ecr:BatchGetImage
                  - ecr:GetDownloadUrlForLayer
                Resource: "*"