CannotPullContainerError: Ответ об ошибке от демона: получение доступа запрещено для образа репозитория ECR, хранилище не существует или может потребоваться «docker вход в систему» - PullRequest
1 голос
/ 28 января 2020

Я вставил изображение docker в репо 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) Когда я sh то же изображение в ECR TargetAccount, все отлично работает. Задачи ECS не запускаются только при попытке извлечь образы из другой учетной записи.

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

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

Ответы [ 2 ]

1 голос
/ 29 января 2020

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

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "AllowCrossAccountPull",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<TargetAccount>:root"
      },
      "Action": "ecr:*"
    }
  ]
}
1 голос
/ 29 января 2020

Как указано в 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.amazon aws .com / amazon linux: последний

...