CannotPullContainerError: ответ об ошибке от демона: доступ по запросу запрещен для образа репозитория ECR, репозиторий не существует или может потребоваться «вход в докер»

Я поместил образ докера в репозиторий ECR в SourceAccount.

Я развернул кодовую строку в SourceAccount.

Когда этот кодовый конвейер запускается, он развертывает стек ECS в TargetAccount. В этом стеке задачи 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 и создавать задачи ECS в TargetAccount.

Примечание:

1) Когда я нажимаю одно и то же изображение в ECR TargetAccount, все работает нормально. Задачи ECS не запускаются только при попытке получить изображения из другой учетной записи.

2) Стек откатился со следующей ошибкой:

Service arn:aws:ecs:<Region>:<TargetAccount>:service/<ServiceName> did not stabilize.

person MAK    schedule 28.01.2020    source источник
comment
Вы ссылались на docs.aws.amazon.com? / AmazonECR / latest / userguide /   -  person joe    schedule 29.01.2020


Ответы (2)


Как указано на https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-pull-ecr-image.html, вам нужно указать идентификатор учетной записи AWS, когда вы используете docker pull:

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

person joe    schedule 29.01.2020
comment
Я не запускаю команду docker pull вручную, я создаю ECS TaskDefinition с помощью CloudFormation и связываю образ из репозитория ECR другой учетной записи. Когда задачи создаются из этого TaskDefinition, они остаются отложенными и в конечном итоге терпят неудачу, поскольку не могут получить изображения из другой учетной записи. Когда изображения находятся в одной учетной записи, все работает нормально. - person MAK; 29.01.2020

Я исправил это, добавив следующую политику в репозиторий ECR в SourceAccount:

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "AllowCrossAccountPull",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<TargetAccount>:root"
      },
      "Action": "ecr:*"
    }
  ]
}
person MAK    schedule 29.01.2020
comment
Обязательно ли это, даже если обе учетные записи одинаковы? - person Ganesh Satpute; 27.06.2020