Como posso permitir que uma conta secundária envie ou extraia imagens no meu repositório de imagens do Amazon ECR?

4 minuto de leitura
0

Quero permitir que uma conta secundária envie ou extraia imagens no meu repositório de imagens do Amazon Elastic Container Registry (Amazon ECR).

Resolução

Você pode enviar ou extrair imagens de ou para um repositório do Amazon ECR em outra conta. Primeiro, crie uma política que permita que a conta secundária realize chamadas de API no repositório. Em seguida, use um token de autenticação do Docker gerado pela conta secundária para usar os comandos push e pull no repositório da conta principal.

Crie uma política que permita que a conta secundária realize chamadas de API no repositório de imagens

1.    Abra o console do Amazon ECR para sua conta principal.

2.    Escolha o nome do repositório com hiperlink do repositório que você deseja modificar.

3.    No painel de navegação esquerdo, em Amazon ECR - Repositórios, escolha Permissões.

4.    Para adicionar uma política de repositório para sua conta secundária de dentro da sua conta principal, escolha Editar JSON da política. Insira sua política no editor de código e escolha Salvar.

Importante: Em sua política, inclua o número da conta secundária e as ações que a conta pode realizar no repositório. Para permitir o acesso a um perfil específico, forneça o arn do perfil como a entidade principal. Por exemplo, AWS: arn:aws:iam::account-id:role/ecsInstanceRole. O perfil deve existir na conta secundária antes de você salvar a política do repositório. Se não existir, você receberá um erro semelhante ao seguinte: política de repositório inválida fornecida.

O exemplo de política de repositório a seguir permite que uma conta específica envie e extraia imagens:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowPushPull",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::account-id:root"
      },
      "Action": [
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage",
        "ecr:BatchCheckLayerAvailability",
        "ecr:PutImage",
        "ecr:InitiateLayerUpload",
        "ecr:UploadLayerPart",
        "ecr:CompleteLayerUpload"
      ]
    }
  ]
}

5.    Na definição da tarefa, defina a imagem que você deseja usar com o Amazon ECS. Sua imagem está hospedada no repositório do Amazon ECR da conta principal.
Observação: certifique-se de que sua conta secundária tenha as permissões do Amazon ECR listadas na política gerenciada “AmazonEC2ContainerRegistryPowerUser”. Essas permissões são necessárias para extrair ou enviar da sua conta principal.

Gere um token de autenticação temporário do Docker a partir da conta secundária e realize um teste de push ou pull

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.

A conta secundária não pode realizar ações de política no repositório até receber um token de autenticação temporário válido por 12 horas. O token permite que a conta secundária use os comandos push e pull do Docker no repositório da conta principal. O comando get-login-password recupera e decodifica o token de autorização que você pode então canalizar para um comando de login do docker para autenticação.

Observação: a conta que recebe o token deve ter as permissões relevantes da API AWS Identify and Access Management (IAM) para modificar o repositório. Para obter exemplos, consulte as políticas gerenciadas pela AWS para o Amazon Elastic Container Registry. Para solucionar problemas com o Docker, ative o modo de depuração no daemon do Docker. Esse comando requer a versão mais recente da AWS CLI versão 2, ou a v1.17.10 ou posterior da AWS CLI versão 1. Para mais informações, consulte get-login-password.

1.    Para gerar um token de autenticação do Docker para uma conta que envia e extrai imagens fora do Amazon ECS, execute o comando a seguir. Substitua ** aws_account_id** com a ID da sua conta principal e substitua regionID pelo ID de sua região.

Para usar a AWS CLI:

aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.regionID.amazonaws.com

Para usar as ferramentas da AWS para Windows PowerShell:

(Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.regionID.amazonaws.com

Você recebe a seguinte saída:

aws ecr get-login-password --region ap-south-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-south-1.amazonaws.com
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

2.    Execute uma extração ou envio de imagem de teste para a conta principal:

docker pull AccountID.dkr.ecr.Region.amazonaws.com/ImageName::TagName

Observação: substitua o ID da conta e a região pelo ID de sua conta e região. Substitua ImageName e TagName pelo nome de sua imagem e tag.

3.    Confirme se a imagem foi baixada com sucesso:

docker images | grep ImageName

Observação: substitua ImageName pelo nome da sua imagem.

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos