CannotPullContainerError:来自守护程序的错误响应:对ECR Repo Image的拉式访问被拒绝,存储库不存在或可能需要'docker login'

我已在Sourceaccount的ECR存储库中推送了一个docker映像。

我已经在Sourceaccount中部署了代码管道。

运行该代码管道时,它将在Targetaccount中部署ECS堆栈。在该堆栈中,使用上述来自Sourceaccount的图像使用容器创建ECS任务。但是,这些任务仍然处于待处理状态,并最终移到了停止状态。它们显示以下错误:

Status reason   CannotPullContainerError: Error response from daemon: pull access denied for <SourceaccountId>.dkr.ecr.<Region>.amazonaws.com/<RepoName>,repository does not exist or may require 'docker login'

请告知如何从Sourceaccount ECR中提取图像并在Targetaccount中创建ECS任务。

注意:

1)当我在Targetaccount的ECR中推送相同的图像时,一切正常。仅当尝试从另一个帐户提取图像时,ECS任务才能运行。

2)堆栈回滚并出现以下错误:

Service arn:aws:ecs:<Region>:<Targetaccount>:service/<ServiceName> did not stabilize.
zhuanjieben 回答:CannotPullContainerError:来自守护程序的错误响应:对ECR Repo Image的拉式访问被拒绝,存储库不存在或可能需要'docker login'

根据https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-pull-ecr-image.html上的指定,使用docker pull时需要指定AWS账户ID:

docker pull aws_account_id.dkr.ecr.us-west-2.amazonaws.com/amazonlinux:latest

,

我通过在SourceAccount的ECR存储库中添加以下策略来修复它:

{
  "Version": "2008-10-17","Statement": [
    {
      "Sid": "AllowCrossAccountPull","Effect": "Allow","Principal": {
        "AWS": "arn:aws:iam::<TargetAccount>:root"
      },"Action": "ecr:*"
    }
  ]
}
本文链接:https://www.f2er.com/2696782.html

大家都在问