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

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

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

É possível gerenciar o acesso para seus serviços de contêiner do Lightsail e seus repositórios privados do Amazon ECR usando o console do Lightsail ou a AWS Command Line Interface (AWS CLI). No entanto, recomendamos usar o console do Lightsail, por simplificar 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 vai gerenciar o acesso dos serviços de contêiner do Lightsail aos repositórios privados do Amazon ECR deve ter uma das seguintes políticas de permissão 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, substitua AwsAccountId pelo número de ID da sua conta da AWS.

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 código da Região da AWS (por exemplo, us-east-1) do repositório privado. Seu serviço de contêiner do Lightsail deve estar na mesma Região da AWS dos repositórios privados que deseja acessar.

  • AwsAccountId: o número de ID da sua conta da AWS.

  • RepositoryName: o nome do repositório privado cujo acesso você deseja gerenciar.

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

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

  1. Faça login no console do Lightsail.

  2. No painel de navegação esquerdo, escolha 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 do Lightsail
  4. Selecione a guia Images (Imagens).

    Guia Imagens na página de gerenciamento do serviço de contêiner do console do 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 o perfil do IAM do extrator de imagem do Amazon ECR para seu serviço de contêiner, que inclui um nome do recurso da Amazon (ARN) da entidade principal. O Lightsail então adiciona automaticamente o ARN da entidade principal do perfil 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 no 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

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

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

Importante

Recomendamos usar o console do Lightsail para gerenciar o acesso ao serviço de contêiner do Lightsail a repositórios privados do Amazon ECR, por simplificar o processo. Para obter mais informações, consulte Use o console do Lightsail para gerenciar o acesso a repositórios privados mais acima neste guia.

  1. Ativar ou desativar o perfil do IAM do extrator de imagem do : use o comando update-container-service da AWS CLI para que o Lightsail ative ou desative o perfil do IAM do extrator de imagem 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. Adicionar uma política a um repositório privado que não tenha uma instrução de política: use o comando da AWS CLI set-repository-policy para que o Amazon ECR adicione o ARN da entidade principal do extrator de imagem 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. Adicionar uma política a um repositório privado que tenha uma instrução de política: use o comando da AWS CLI da set-repository-policy para que o Amazon ECR adicione o perfil do extrator de imagem do Amazon ECR para 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

Realize o procedimento a seguir para ativar ou desativar perfil do IAM do extrator de imagem do Amazon ECR para a seu serviço de contêiner do Lightsail. Você pode ativar ou desativar o perfil do IAM do extrator de imagem do Amazon ECR usando o comando da AWS CLI update-container-service para o Lightsail. Para obter mais informações, consulte update-container-service na AWS CLI Command Reference.

nota

Antes de continuar com este procedimento, é necessário instalar a AWS CLI e configurá-la para o Lightsail. Para obter mais informações, consulte Configure the AWS CLI to work with 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 o perfil do IAM do extrator de imagem do Amazon ECR.

    • RoleActivationState: o estado de ativação do perfil do IAM do extrator de imagem do Amazon ECR. Especifique true para ativar o perfil ou false para desativá-lo.

    • AWSRegionCode: o código da Região da AWS 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 serviço de contêiner para o qual obter o ARN da entidade principal do perfil do IAM do extrator de imagem do Amazon ECR.

    • AWSRegionCode: o código da Região da AWS 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 comando get-repository-policy da AWS CLI para o Amazon ECR. Para obter mais informações, consulte update-container-service na AWS CLI Command Reference.

nota

Antes de continuar com este procedimento, é necessário instalar a AWS CLI e configurá-la para o Amazon ECR. 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 código da Região da AWS 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 adicionada deve conter o ARN da entidade principal do perfil do IAM do extrator de imagem do Amazon ECR do serviço de contêiner do Lightsail. Isso concede acesso para que o serviço de contêiner implante imagens diretamente do repositório privado.

Importante

O Lightsail adiciona automaticamente o perfil do extrator de imagem do Amazon ECR as 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 Use o console do Lightsail para gerenciar o acesso a repositórios privados mais acima neste 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-policy na AWS CLI Command Reference.

nota

Você deve instalar a AWS CLI e configurá-la para o Amazon ECR antes de continuar com este 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, substitua IamRolePrincipalArn pelo ARN da entidade principal do perfil do IAM do extrator de imagem do Amazon ECR do 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 código da Região da AWS 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 ID da sua conta da AWS.

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

    • RepositoryName: o nome do repositório privado do qual implantar uma imagem de contêiner.

    • ImageTag: a etiqueta da imagem de 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ê adicionar deve incluir a política existente e uma nova política contendo o ARN da entidade principal do perfil do IAM do extrator de imagem do Amazon ECR do serviço de contêiner do 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 o perfil do extrator de imagem do Amazon ECR as 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 Use o console do Lightsail para gerenciar o acesso a repositórios privados mais acima neste 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-policy na AWS CLI Command Reference.

nota

Antes de continuar com este procedimento, é necessário instalar a AWS CLI e configurá-la para o Amazon ECR. 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 código da Região da AWS 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 comando get-repository-policy 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, substitua IamRolePrincipalArn pelo ARN da entidade principal do perfil do IAM do extrator de imagem do Amazon ECR do 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 código da Região da AWS 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 comando set-repository-policy

    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 ID da sua conta da AWS.

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

    • RepositoryName: o nome do repositório privado do qual implantar uma imagem de contêiner.

    • ImageTag: a etiqueta da imagem de 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