CannotPullContainerError: Error response from daemon: pull access denied for ECR Repo Image, repository does not exist or may require 'docker login'
CannotPullContainerError: Error response from daemon: pull access denied for ECR Repo Image, repository does not exist or may require 'docker login'
我已经在 SourceAccount 的 ECR 回购中推送了一个 docker 图片。
我已经在 SourceAccount 中部署了代码管道。
当该代码管道为 运行 时,它会在 TargetAccount 中部署 ECS 堆栈。在该堆栈中,ECS 任务是使用来自 SourceAccount 的上述图像的容器创建的。但是,这些任务仍处于挂起状态并最终移至停止状态。他们显示以下错误:
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.
如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:*"
}
]
}
我已经在 SourceAccount 的 ECR 回购中推送了一个 docker 图片。
我已经在 SourceAccount 中部署了代码管道。
当该代码管道为 运行 时,它会在 TargetAccount 中部署 ECS 堆栈。在该堆栈中,ECS 任务是使用来自 SourceAccount 的上述图像的容器创建的。但是,这些任务仍处于挂起状态并最终移至停止状态。他们显示以下错误:
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.
如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:*"
}
]
}