"没有基本的身份验证凭证"在EC2实例上使用IAM角色

时间:2017-08-29 21:48:43

标签: amazon-web-services docker amazon-ec2 amazon-cloudformation

我的EC2实例无法使用IAM角色进行身份验证。该实例在AWS控制台中显示正确的角色:IAM role: Docker-WorkerRole-DPET4SO6HV87。单击它可以打开角色控制台,在那里我可以看到列出的正确策略:'ecr-pull-image'。单击它会显示以下权限:

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

“受信任的实体”标签显示:

The identity provider(s) autoscaling.amazonaws.com
The identity provider(s) ec2.amazonaws.com

它适用于模拟器。

但是,当我跳到该实例并尝试拉取图像时,我得到没有基本身份验证凭据

$ docker pull 4----------7.dkr.ecr.us-west-2.amazonaws.com/gc01_data:1.0.0
Error response from daemon: Get https://4----------7.dkr.ecr.us-west-2.amazonaws.com/v2/gc01_data/manifests/1.0.0: no basic auth credentials

或者,在尝试 docker stack deploy 之后,我的docker.log显示了相同的内容:

Aug 29 21:05:15 moby root: time="2017-08-29T21:05:15.434428743Z" level=debug msg="Trying to pull 4----------7.dkr.ecr.us-west-2.amazonaws.com/gc01_data from https://4----------7.dkr.ecr.us-west-2.amazonaws.com v2"  
Aug 29 21:05:15 moby root: time="2017-08-29T21:05:15.449145816Z" level=info msg="Attempting next endpoint for pull after error: Get https://4----------7.dkr.ecr.us-west-2.amazonaws.com/v2/gc01_data/manifests/1.0.0: no basic auth credentials"  

无法查看遗失的内容。感谢。

1 个答案:

答案 0 :(得分:0)

好的,我应该说这是一个Docker-4-AWS Swarm实例,所以这是一个已知问题:https://github.com/docker/for-aws/issues/5

作为权宜之计,我正在使用@ blaketastic的方式使用swarm的 guide-aws

docker exec -it guide-aws sh -c 'aws ecr get-login --region us-east-1 --no-include-email'

这是一种在不使用/存储实例的AWS凭证的情况下访问ecr的方法。