Conceda aos serviços de contêiner Lightsail acesso aos repositórios privados do Amazon ECR - Amazon Lightsail

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Conceda aos serviços de contêiner Lightsail acesso aos repositórios privados do Amazon ECR

O Amazon Elastic Container Registry (Amazon ECR) é AWS um serviço gerenciado de registro de imagens de contêineres que oferece suporte a repositórios privados com permissões baseadas em recursos usando (IAM). AWS Identity and Access Management Você pode dar aos seus serviços de contêineres do Amazon Lightsail acesso aos seus repositórios privados do Amazon ECR. Região da AWS Em seguida, você pode implantar imagens do seu repositório privado para seus serviços de contêiner.

Você pode gerenciar o acesso aos serviços de contêineres do Lightsail e aos repositórios privados do Amazon ECR usando o console do Lightsail ou o (). AWS Command Line Interface AWS CLI No entanto, recomendamos que você use o console do Lightsail porque ele simplifica o processo.

Para obter mais informações sobre serviços de contêiner, consulte Serviços de contêiner. Para obter mais informações sobre o Amazon ECR, consulte o Guia do usuário da Amazon ECR.

Índice

Permissões obrigatórias

O usuário que gerenciará o acesso dos serviços de contêineres do Lightsail aos repositórios privados do Amazon ECR deve ter uma das seguintes políticas de permissões no IAM. Para obter mais informações, consulte Adicionar e remover permissões de identidade do IAM no Guia do usuário do AWS Identity and Access Management .

Conceder acesso a qualquer repositório privado do Amazon ECR

A seguinte política de permissões concede permissão para um usuário configurar o acesso a qualquer repositório privado do Amazon ECR.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageEcrPrivateRepositoriesAccess", "Effect": "Allow", "Action": [ "ecr:SetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:DeleteRepositoryPolicy", "ecr:GetRepositoryPolicy" ], "Resource": "arn:aws:ecr:*:AwsAccountId:repository/*" } ] }

Na política, AwsAccountIdsubstitua pelo número de identificação AWS da sua conta.

Conceder acesso a um repositório privado específico do Amazon ECR

A seguinte política de permissões concede permissão para um usuário configurar o acesso a um repositório privado específico do Amazon ECR em uma Região da AWS específica.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageEcrPrivateRepositoriesAccess", "Effect": "Allow", "Action": [ "ecr:SetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:DeleteRepositoryPolicy", "ecr:GetRepositoryPolicy" ], "Resource": "arn:aws:ecr:AwsRegion:AwsAccountId:repository/RepositoryName" } ] }

Na política, substitua o seguinte exemplo de texto pelo seu próprio texto:

  • AwsRegion— O Região da AWS código (por exemplo,us-east-1) do repositório privado. Seu serviço de contêiner do Lightsail deve estar nos Região da AWS mesmos repositórios privados que você deseja acessar.

  • AwsAccountId— O número de identificação da sua AWS conta.

  • RepositoryName— O nome do repositório privado para o qual você deseja gerenciar o acesso.

Veja a seguir um exemplo da política de permissões preenchida com valores de exemplo.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageEcrPrivateRepositoriesAccess", "Effect": "Allow", "Action": [ "ecr:SetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:DeleteRepositoryPolicy", "ecr:GetRepositoryPolicy" ], "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/my-private-repo" } ] }

Use o console do Lightsail para gerenciar o acesso a repositórios privados

Conclua o procedimento a seguir para usar o console do Lightsail para gerenciar o acesso de um serviço de contêiner do Lightsail a um repositório privado do Amazon ECR.

  1. Faça login no console do Lightsail.

  2. Na página inicial do Lightsail, escolha a guia Contêineres.

  3. Escolha o nome do serviço de contêiner para o qual você deseja configurar o acesso a um repositório privado do Amazon ECR.

    Serviço de contêiner no console Lightsail
  4. Selecione a guia Images (Imagens).

    Aba Imagens na página de gerenciamento de serviços de contêineres do console Lightsail
  5. Escolha Adicionar repositório para conceder ao serviço de contêiner acesso a um repositório privado do Amazon ECR.

    nota

    Escolha Remover para remover o acesso do serviço de contêiner de um repositório privado do Amazon ECR adicionado anteriormente.

    Seção de repositórios privados do Amazon ECR da guia Imagens
  6. Na lista suspensa exibida, selecione o repositório privado que gostaria de acessar e escolha Add (Adicionar).

    Seleção de menu suspenso de repositórios privados do Amazon ECR

    O Lightsail leva alguns minutos para ativar a função IAM do Amazon ECR Image Puller para seu serviço de contêiner, que inclui um Amazon Resource Name (ARN) principal. Em seguida, o Lightsail adiciona automaticamente o ARN principal da função do IAM à política de permissões do repositório privado do Amazon ECR que você selecionou. Isso permite que o serviço de contêiner tenha acesso ao repositório privado e às imagens. Não feche a janela do navegador até que o modal exibido indique que o processo foi concluído e que você pode escolher Continue (Continuar).

    Modal confirmando que as permissões estão sendo adicionadas ao repositório privado do Amazon ECR
  7. Selecione Continue (Continuar) quando a ativação for concluída.

    Após o repositório privado do Amazon ECR selecionado ser adicionado, ele será listado na seção Repositórios privados do Amazon ECR da página. A página inclui instruções sobre como implantar uma imagem do repositório privado em seu serviço de contêiner Lightsail. Para usar uma imagem do seu repositório privado, especifique o formato de URI exibido na página como o lavor Image ao criar sua implantação do serviço de contêiner. No URI especificado, substitua o exemplo de {image tag} pela etiqueta da imagem que você deseja implantar. Para obter mais informações, consulte Create and manage container service deployments.

    Próximas etapas após a adição de um repositório privado do Amazon ECR

Use o AWS CLI para gerenciar o acesso a repositórios privados

Gerenciar o acesso de um serviço de contêiner do Lightsail a um repositório privado do Amazon ECR usando AWS Command Line Interface o AWS CLI() requer as seguintes etapas:

Importante

Recomendamos que você use o console do Lightsail para gerenciar o acesso de um serviço de contêiner do Lightsail a um repositório privado do Amazon ECR, pois isso simplifica o processo. Para obter mais informações, consulte Usar o console do Lightsail para gerenciar o acesso a repositórios privados, no início deste guia.

  1. Ative ou desative a função IAM do extrator de imagens do Amazon ECR — Use o comando AWS CLI update-container-service para que o Lightsail ative ou desative a função IAM do extrator de imagens do Amazon ECR. Um nome do recurso da Amazon (ARN) da entidade principal é criado para o perfil do IAM do extrator de imagem do Amazon ECR ao ativá-lo. Para obter mais informações, consulte a seção Ativar ou desativar o perfil do IAM do extrator de imagem do Amazon ECR deste guia.

  2. Determinar se o repositório privado do Amazon ECR tem uma instrução de política: depois de ativar o perfil do IAM do extrator de imagem do Amazon ECR, você precisa determinar se o repositório privado do Amazon ECR que deseja acessar com o serviço de contêiner tem uma instrução de política existente. Para obter mais informações, consulte Determinar se o repositório privado do Amazon ECR tem uma instrução de política mais adiante neste guia.

    Você adiciona o ARN da entidade principal do perfil do IAM ao repositório usando um dos seguintes métodos, dependendo se o repositório tem ou não uma declaração de política existente:

    1. Adicione uma política a um repositório privado que não tenha uma declaração de política — Use o AWS CLI set-repository-policy comando do Amazon ECR para adicionar o ARN principal da função de extração de imagens do Amazon ECR para seu serviço de contêiner a um repositório privado que tenha uma política existente. Para obter mais informações, consulte Adicionar uma política a um repositório privado que não tenha uma declaração de política mais adiante neste guia.

    2. Adicione uma política a um repositório privado que tenha uma declaração de política — Use o AWS CLI set-repository-policy comando do Amazon ECR para adicionar a função de extração de imagens do Amazon ECR do seu serviço de contêiner a um repositório privado que não tenha uma política existente. Para obter mais informações, consulte Adicionar uma política a um repositório privado que tenha uma declaração de política mais adiante neste guia.

Ativar ou desativar o perfil do IAM do extrator de imagem do Amazon ECR

Conclua o procedimento a seguir para ativar ou desativar a função IAM do Amazon ECR Image Puller para seu serviço de contêiner Lightsail. Você pode ativar ou desativar a função IAM do Amazon ECR Image Puller usando o comando AWS CLI update-container-service para Lightsail. Para obter mais informações, consulte update-container-servicena Referência de AWS CLI Comandos.

nota

Você deve instalar AWS CLI e configurá-lo para o Lightsail antes de continuar com esse procedimento. Para obter mais informações, consulte Configurar o AWS CLI para trabalhar com o Lightsail.

  1. Abra um prompt de comando ou uma janela de terminal.

  2. Insira o comando a seguir para atualizar um serviço de contêiner e ativar ou desativar o perfil do IAM do extrator de imagem do Amazon ECR.

    aws lightsail update-container-service --service-name ContainerServiceName --private-registry-access ecrImagePullerRole={isActive=RoleActivationState} --region AwsRegionCode

    No comando, substitua o seguinte exemplo de texto pelo seu próprio:

    • ContainerServiceName— O nome do serviço de contêiner para o qual ativar ou desativar a função IAM do extrator de imagens do Amazon ECR.

    • RoleActivationState— O estado de ativação da função IAM do extrator de imagens do Amazon ECR. Especifique true para ativar o perfil ou false para desativá-lo.

    • AwsRegionCode— O Região da AWS código do serviço de contêiner (por exemplo,us-east-1).

    Exemplos:

    • Para ativar o perfil do IAM do extrator de imagem do Amazon ECR:

      aws lightsail update-container-service --service-name my-container-service --private-registry-access ecrImagePullerRole={isActive=true} --region us-east-1
    • Para desativar o perfil do IAM do extrator de imagem do Amazon ECR:

      aws lightsail update-container-service --service-name my-container-service --private-registry-access ecrImagePullerRole={isActive=false} --region us-east-1
  3. Se você:

    • Ativou o perfil do extrator de imagem do Amazon ECR: aguarde pelo menos 30 segundos após obter a resposta anterior. Em seguida, execute a próxima etapa para obter o ARN da entidade principal do perfil do IAM do extrator de imagem do Amazon ECR para seu serviço de contêiner.

    • Desativou o perfil do extrator de imagem do Amazon ECR: se tiver adicionado anteriormente o ARN da entidade principal do perfil do IAM do extrator de imagem do Amazon ECR à política de permissões do seu repositório privado do Amazon ECR, você deve remover essa política de permissões do repositório. Para obter mais informações, consulte Excluir uma instrução de política de repositório privado no Guia do usuário do Amazon ECR.

  4. Insira o seguinte comando para obter o ARN da entidade principal do perfil do IAM do extrator de imagem do Amazon ECR para seu serviço de contêiner.

    aws lightsail get-container-services --service-name ContainerServiceName --region AwsRegionCode

    No comando, substitua o seguinte exemplo de texto pelo seu próprio:

    • ContainerServiceName— O nome do seu serviço de contêiner para o qual obter o ARN principal da função IAM do extrator de imagens do Amazon ECR.

    • AwsRegionCode— O Região da AWS código do serviço de contêiner (por exemplo,us-east-1).

    Exemplo:

    aws lightsail get-container-services --service-name my-container-service --region us-east-1

    Procure o ARN da entidade principal do perfil do IAM do extrator de imagem do ECR na resposta. Se houver uma função listada, copie ou anote o nome da função. Você precisará desse nome para a próxima seção deste guia. Em seguida, é necessário determinar se há uma instrução de política existente no repositório privado do Amazon ECR que você deseja acessar com seu serviço de contêiner. Siga para a seção Determinar se o repositório privado do Amazon ECR tem uma instrução de política deste guia.

Determinar se o repositório privado do Amazon ECR tem uma instrução de política

Siga o procedimento abaixo para determinar se o repositório privado do Amazon ECR tem uma instrução de política. Você pode usar o AWS CLI get-repository-policy comando para o Amazon ECR. Para obter mais informações, consulte update-container-servicena Referência de AWS CLI Comandos.

nota

Você deve instalar AWS CLI e configurá-lo para o Amazon ECR antes de continuar com esse procedimento. Para obter mais informações, consulte Configuração com o Amazon ECR no Guia do usuário do Amazon ECR.

  1. Abra um prompt de comando ou uma janela de terminal.

  2. Insira o comando a seguir para obter a declaração de política de um repositório privado específico.

    aws ecr get-repository-policy --repository-name RepositoryName --region AwsRegionCode

    No comando, substitua o seguinte exemplo de texto pelo seu próprio:

    • RepositoryName— O nome do repositório privado para o qual você deseja configurar o acesso a um serviço de contêiner do Lightsail.

    • AwsRegionCode— O Região da AWS código do repositório privado (por exemplo,us-east-1).

    Exemplo:

    aws ecr get-repository-policy --repository-name my-private-repo --region us-east-1

    Você deverá ver uma das seguintes respostas:

Adicionar uma política a um repositório privado que não tenha uma declaração de política

Realize o procedimento a seguir para adicionar uma política a um repositório privado do Amazon ECR que não tenha uma instrução de política. A política que você adiciona deve incluir o ARN principal da função IAM do extrator de imagens do Amazon ECR do seu serviço de contêiner Lightsail. Isso concede acesso para que o serviço de contêiner implante imagens diretamente do repositório privado.

Importante

O Lightsail adiciona automaticamente a função de extração de imagens do Amazon ECR aos seus repositórios privados do Amazon ECR quando você usa o console do Lightsail para configurar o acesso. Nesse caso, não é necessário adicionar manualmente o perfil de extrator de imagem do Amazon ECR aos repositórios privados usando o procedimento desta seção. Para obter mais informações, consulte Usar o console do Lightsail para gerenciar o acesso a repositórios privados, no início deste guia.

Você pode adicionar uma política a um repositório privado usando a AWS CLI. Para isso, crie um arquivo JSON que contenha a política e referencie esse arquivo com o comando set-repository-policy para o Amazon ECR. Para obter mais informações, consulte set-repository-policyna Referência de AWS CLI Comandos.

nota

Você deve instalar AWS CLI e configurá-lo para o Amazon ECR antes de continuar com esse procedimento. Para obter mais informações, consulte Configuração com o Amazon ECR no Guia do usuário do Amazon ECR.

  1. Abra um editor de texto e cole a seguinte declaração de política em um novo arquivo de texto.

    { "Version": "2008-10-17", "Statement": [ { "Sid": "AllowLightsailPull-ecr-private-repo-demo", "Effect": "Allow", "Principal": { "AWS": "IamRolePrincipalArn" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }

    No texto, IamRolePrincipalArnsubstitua pelo ARN principal da função IAM do extrator de imagens do Amazon ECR do seu serviço de contêiner que você obteve anteriormente neste guia.

  2. Salve o arquivo como ecr-policy.json em um local acessível em seu computador (por exemplo, C:\Temp\ecr-policy.json no Windows ou /tmp/ecr-policy.json no macOS ou Linux).

  3. Anote o local do caminho do arquivo do arquivo ecr-policy.json criado. Você o especificará em um comando posteriormente neste procedimento.

  4. Abra um prompt de comando ou uma janela de terminal.

  5. Insira o comando a seguir para definir a declaração de política do repositório privado que você deseja acessar com seu serviço de contêiner.

    aws ecr set-repository-policy --repository-name RepositoryName --policy-text file://path/to/ecr-policy.json --region AwsRegionCode

    No comando, substitua o seguinte exemplo de texto pelo seu próprio:

    • RepositoryName— O nome do repositório privado ao qual você deseja adicionar a política.

    • path/to/: O caminho para o arquivo ecr-policy.json em seu computador e que você criou anteriormente neste guia.

    • AwsRegionCode— O Região da AWS código do repositório privado (por exemplo,us-east-1).

    Exemplos:

    • No Windows:

      aws ecr set-repository-policy --repository-name my-private-repo --policy-text file://C:\Temp\ecr-policy.json --region us-east-1
    • No macOS ou Linux:

      aws ecr set-repository-policy --repository-name my-private-repo --policy-text file:///tmp/ecr-policy.json --region us-east-1

    Agora seu serviço de contêiner pode acessar o repositório privado e as imagens. Para usar uma imagem do seu repositório, especifique o seguinte URI como o valor Image (Imagem) para a implantação do serviço de contêiner. No URI, substitua o exemplo de etiqueta pela etiqueta da imagem que você deseja implantar. Para obter mais informações, consulte Create and manage container service deployments.

    AwsAccountId.dkr.ecr.AwsRegionCode.amazonaws.com/RepositoryName:ImageTag

    No URI, substitua o seguinte exemplo de texto pelo seu próprio texto:

    • AwsAccountId— O número de identificação da sua AWS conta.

    • AwsRegionCode— O Região da AWS código do repositório privado (por exemplo,us-east-1).

    • RepositoryName— O nome do repositório privado a partir do qual implantar uma imagem de contêiner.

    • ImageTag— A tag da imagem do contêiner do repositório privado a ser implantada em seu serviço de contêiner.

    Exemplo:

    111122223333.dkr.ecr.us-east-1.amazonaws.com/my-private-repo:myappimage

Adicionar uma política a um repositório privado que tenha uma declaração de política

Realize o procedimento a seguir para adicionar uma política a um repositório privado do Amazon ECR que tenha uma instrução de política. A política que você adiciona deve incluir a política existente e uma nova política que contenha o ARN principal da função IAM do Amazon ECR Image Puller do seu serviço de contêiner Lightsail. Isso mantém as permissões existentes em seu repositório privado enquanto concede acesso ao serviço de contêiner para implantar imagens diretamente do repositório privado.

Importante

O Lightsail adiciona automaticamente a função de extração de imagens do Amazon ECR aos seus repositórios privados do Amazon ECR quando você usa o console do Lightsail para configurar o acesso. Nesse caso, não é necessário adicionar manualmente o perfil de extrator de imagem do Amazon ECR aos repositórios privados usando o procedimento desta seção. Para obter mais informações, consulte Usar o console do Lightsail para gerenciar o acesso a repositórios privados, no início deste guia.

Você pode adicionar uma política a um repositório privado usando a AWS CLI. Você faz isso criando um arquivo JSON contendo a política existente e a nova política. Em seguida, referencie o arquivo com o comando set-repository-policy para o Amazon ECR. Para obter mais informações, consulte set-repository-policyna Referência de AWS CLI Comandos.

nota

Você deve instalar AWS CLI e configurá-lo para o Amazon ECR antes de continuar com esse procedimento. Para obter mais informações, consulte Configuração com o Amazon ECR no Guia do usuário do Amazon ECR.

  1. Abra um prompt de comando ou uma janela de terminal.

  2. Insira o comando a seguir para obter a declaração de política de um repositório privado específico.

    aws ecr get-repository-policy --repository-name RepositoryName --region AwsRegionCode

    No comando, substitua o seguinte exemplo de texto pelo seu próprio:

    • RepositoryName— O nome do repositório privado para o qual você deseja configurar o acesso a um serviço de contêiner do Lightsail.

    • AwsRegionCode— O Região da AWS código do repositório privado (por exemplo,us-east-1).

    Exemplo:

    aws ecr get-repository-policy --repository-name my-private-repo --region us-east-1
  3. Na resposta, copie a política existente e siga para a próxima etapa.

    Você deve copiar apenas o conteúdo do policyText que aparece entre aspas duplas, conforme destacado no exemplo a seguir.

    Resposta ao get-repository-policy comando para um repositório privado que não tem uma declaração de política
  4. Abra um editor de texto e cole a política existente do seu repositório privado que você copiou na etapa anterior.

    O resultado será algo semelhante a este exemplo:

    Exemplo de arquivo JSON de declaração de política
  5. No texto que você colou, substitua \n por quebras de linha e exclua o \ restante.

    O resultado será algo semelhante a este exemplo:

    Exemplo de arquivo JSON editado de declaração de política
  6. Cole a seguinte declaração de política no final do arquivo de texto.

    , { "Version": "2008-10-17", "Statement": [ { "Sid": "AllowLightsailPull-ecr-private-repo-demo", "Effect": "Allow", "Principal": { "AWS": "IamRolePrincipalArn" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }
  7. No texto, IamRolePrincipalArnsubstitua pelo ARN principal da função IAM do extrator de imagens do Amazon ECR do seu serviço de contêiner que você obteve anteriormente neste guia.

    O resultado será algo semelhante a este exemplo:

    Exemplo de arquivo JSON completo de declaração de política
  8. Salve o arquivo como ecr-policy.json em um local acessível em seu computador (por exemplo, C:\Temp\ecr-policy.json no Windows ou /tmp/ecr-policy.json no macOS ou Linux).

  9. Anote o local do caminho do arquivo do arquivo ecr-policy.json. Você o especificará em um comando posteriormente neste procedimento.

  10. Abra um prompt de comando ou uma janela de terminal.

  11. Insira o comando a seguir para definir a declaração de política do repositório privado que você deseja acessar com seu serviço de contêiner.

    aws ecr set-repository-policy --repository-name RepositoryName --policy-text file://path/to/ecr-policy.json --region AwsRegionCode

    No comando, substitua o seguinte exemplo de texto pelo seu próprio:

    • RepositoryName— O nome do repositório privado ao qual você deseja adicionar a política.

    • path/to/: O caminho para o arquivo ecr-policy.json em seu computador e que você criou anteriormente neste guia.

    • AwsRegionCode— O Região da AWS código do repositório privado (por exemplo,us-east-1).

    Exemplos:

    • No Windows:

      aws ecr set-repository-policy --repository-name my-private-repo --policy-text file://C:\Temp\ecr-policy.json --region us-east-1
    • No macOS ou Linux:

      aws ecr set-repository-policy --repository-name my-private-repo --policy-text file:///tmp/ecr-policy.json --region us-east-1

    Você verá um resultado semelhante ao seguinte exemplo.

    Resposta ao set-repository-policy comando

    Se executar o comando get-repository-policy novamente, você deverá ver a nova declaração adicional de política em seu repositório privado. Agora seu serviço de contêiner pode acessar o repositório privado e as imagens. Para usar uma imagem do seu repositório, especifique o seguinte URI como o valor Image (Imagem) para a implantação do serviço de contêiner. No URI, substitua o exemplo de etiqueta pela etiqueta da imagem que você deseja implantar. Para obter mais informações, consulte Create and manage container service deployments.

    AwsAccountId.dkr.ecr.AwsRegionCode.amazonaws.com/RepositoryName:ImageTag

    No URI, substitua o seguinte exemplo de texto pelo seu próprio texto:

    • AwsAccountId— O número de identificação da sua AWS conta.

    • AwsRegionCode— O Região da AWS código do repositório privado (por exemplo,us-east-1).

    • RepositoryName— O nome do repositório privado a partir do qual implantar uma imagem de contêiner.

    • ImageTag— A tag da imagem do contêiner do repositório privado a ser implantada em seu serviço de contêiner.

    Exemplo:

    111122223333.dkr.ecr.us-east-1.amazonaws.com/my-private-repo:myappimage