AWS ECS Fargate вытащить изображение из репо ECR кросс-аккаунта - PullRequest
0 голосов
/ 21 октября 2018

У меня есть 2 учетных записи AWS: - учетная запись A с репо ECR.- учетная запись b с кластером ECS под управлением Fargate.

Я создал роль «кросс-аккаунт» в учетной записи A с доверительными отношениями к учетной записи B, также к этой роли я прикрепил политику «AmazonEC2ContainerRegistryPowerUser».

Я дал доступ кРепозиторий ECR в учетной записи A путем добавления идентификатора учетной записи B и роли «кросс-аккаунт» в политику репозитория.

Я прикрепил политику к fargate «TaskExecutionRole», позволяющую фархату принять роль «кросс-аккаунт»,

При попытке развернуть задачу Fargate в учетной записи B со ссылкой на изображение в учетной записи A я получаю ошибку 500.

1 Ответ

0 голосов
/ 22 октября 2018

Fargate не будет автоматически выполнять роль кросс-аккаунта.К счастью, вам не нужно брать на себя роль в другой учетной записи, чтобы получать изображения из репозитория ECR этой учетной записи.

Чтобы разрешить кросс-аккаунт доступ к изображению в ECR, добавьте доступ к учетной записи B в учетной записи Aхранилище (путем установки политики хранилища ), а затем укажите TaskExecutionRole в учетной записи B, у которого есть разрешения для извлечения из ECR («ecr: GetDownloadUrlForLayer», «ecr: BatchGetImage», «ecr: BatchCheckLayerAvailability»).

Например, задайте политику хранилища для хранилища в учетной записи A следующим образом:

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "AllowCrossAccountPull",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT_B_ID:root"
      },
      "Action": [
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchCheckLayerAvailability",
        "ecr:BatchGetImage"
      ]
    }
  ]
}

Затем установите значение TaskExecutionRole в учетной записи B, чтобы иметь такую ​​политику:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecr:GetAuthorizationToken",
        "ecr:BatchCheckLayerAvailability",
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage"
      ],
      "Resource": "*"
    }
  ]
}

В качестве альтернативы вы можете использовать управляемую политику AmazonECSTaskExecutionRolePolicy для своего TaskExecutionRole вместо определения своей собственной.

...