在EC2实例上使用IAMangular色的“没有基本身份validation凭据”

我的EC2实例无法使用IAMangular色进行身份validation。 该实例在AWS控制台中显示了正确的angular色: IAM role: Docker-WorkerRole-DPET4SO6HV87 。 点击后打开angular色控制台,我可以看到列出的正确策略: '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 

它在模拟器中工作。

但是,当我在这个实例上跳转,并试图拉图像时,我没有获得基本的身份validation凭据

 $ 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部署之后 ,我的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" 

看不到有什么缺失。 谢谢。

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

作为一个权宜之计,我正在使用@ blaketastic的方式来使用swarm的指南 – aws

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

这是访问ecr而不在实例上使用/存储AWS凭证的一种方式。