Autenticação em repositórios de imagens - AWS Elastic Beanstalk

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á.

Autenticação em repositórios de imagens

Este tópico descreve como autenticar-se em repositórios de imagens online com o Elastic Beanstalk. Para repositórios privados, o Elastic Beanstalk deve se autenticar antes de poder extrair e implantar suas imagens. Para o Amazon ECR Public, a autenticação é opcional, mas fornece limites de taxa mais altos e maior confiabilidade.

Usar imagens de um repositório do Amazon ECR

Você pode armazenar suas imagens personalizadas do Docker AWS com o Amazon Elastic Container Registry (Amazon ECR).

Quando você armazena suas imagens do Docker no Amazon ECR, o Elastic Beanstalk autentica automaticamente no registro do Amazon ECR no perfil de instância do ambiente. Portanto, você precisará fornecer às suas instâncias permissão para acessar as imagens no seu repositório do Amazon ECR. Para fazer isso, adicione permissões ao perfil de instância do seu ambiente anexando a política EC2 ContainerRegistryReadOnly gerenciada da Amazon ao perfil da instância. Isso fornece acesso somente leitura a todos os repositórios do Amazon ECR na sua conta. Você também tem a opção de acessar apenas um único repositório usando o seguinte modelo para criar uma política personalizada:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowEbAuth", "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken" ], "Resource": [ "*" ] }, { "Sid": "AllowPull", "Effect": "Allow", "Resource": [ "arn:aws:ecr:us-east-2:111122223333:repository/repository-name" ], "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:GetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:ListImages", "ecr:BatchGetImage" ] } ] }

Substitua o nome de recurso da Amazon (ARN) na política acima pelo ARN de seu repositório.

Você precisará especificar as informações da imagem no arquivo Dockerrun.aws.json. A configuração será diferente dependendo da plataforma usada.

Para a plataforma Docker gerenciada pelo ECS, use a chave image em um objeto de definição de contêiner :

"containerDefinitions": [ { "name": "my-image", "image": "account-id.dkr.ecr.us-east-2.amazonaws.com/repository-name:latest",

Para a plataforma Docker, consulte a imagem por URL. O URL vai na definição Image do seu arquivo Dockerrun.aws.json:

"Image": { "Name": "account-id.dkr.ecr.us-east-2.amazonaws.com/repository-name:latest", "Update": "true" },

Usando AWS Secrets Manager

Configure o Elastic Beanstalk para se autenticar com seu repositório privado antes da implantação para permitir o acesso às imagens do seu contêiner.

Essa abordagem usa a fase de pré-compilação do processo de implantação do Elastic Beanstalk com dois componentes:

Os scripts de gancho recuperam um nome de usuário e uma senha de variáveis de ambiente que são preenchidas a partir de um único AWS Secrets Manager segredo no formato JSON. Esse recurso requer plataformas Elastic Beanstalk Docker e Docker gerenciadas por ECS lançadas em ou após 13 de janeiro de 2026. Para obter mais detalhes, consulte segredos do ambiente.

Para configurar o Elastic Beanstalk para se autenticar em seu repositório privado com AWS Secrets Manager
nota

Antes de continuar, verifique se você configurou suas credenciais AWS Secrets Manager e configurou as permissões necessárias do IAM. Consulte Pré-requisitos para configurar segredos como variáveis de ambiente para obter detalhes.

  1. Crie a seguinte estrutura de diretórios para o seu projeto:

    ├── .ebextensions │ └── env.config ├── .platform │ ├── confighooks │ │ └── prebuild │ │ └── 01login.sh │ └── hooks │ └── prebuild │ └── 01login.sh ├── Dockerfile
  2. Use AWS Secrets Managerpara salvar as credenciais do seu repositório privado como um segredo formatado em JSON.

    aws secretsmanager create-secret --name repo-credentials \ --secret-string '{"username":"myuser","password":"mypassword"}'
  3. Crie o seguinte arquivo env.config e coloque-o no diretório .ebextensions, como mostrado na estrutura de diretórios anterior. Essa configuração usa o aws:elasticbeanstalk:application:environmentsecrets namespace com extração de chave JSON para inicializar as variáveis de ambiente e do Elastic USER Beanstalk a partir de PASSWD campos individuais no segredo.

    option_settings: aws:elasticbeanstalk:application:environmentsecrets: USER: arn:aws:secretsmanager:us-east-1:111122223333:secret:repo-credentials-AbCd12:username PASSWD: arn:aws:secretsmanager:us-east-1:111122223333:secret:repo-credentials-AbCd12:password
  4. Crie o arquivo de 01login.sh script a seguir e coloque-o nos seguintes locais (também mostrados na estrutura de diretórios anterior):

    • .platform/confighooks/prebuild/01login.sh

    • .platform/hooks/prebuild/01login.sh

    #!/bin/bash echo $PASSWD | docker login -u $USER --password-stdin

    O 01login.sh script usa as variáveis de ambiente configuradas na Etapa 3 e passa a senha para docker login viastdin. Para obter mais informações sobre a autenticação do Docker, consulte docker login na documentação do Docker.

    Observações

Depois de configurada a autenticação, o Elastic Beanstalk pode extrair e implantar imagens do seu repositório privado.

Usar o arquivo Dockerrun.aws.json

Esta seção descreve outra abordagem para autenticar o Elastic Beanstalk em um repositório privado. Com essa abordagem, gere um arquivo de autenticação com o comando do Docker e, depois, carregue o arquivo de autenticação em um bucket do Amazon S3. Você também deve incluir as informações do bucket no arquivo Dockerrun.aws.json.

Como gerar e fornecer um arquivo de autenticação ao Elastic Beanstalk
  1. Gere um arquivo de autenticação com o comando docker login. Para repositórios no Docker Hub, execute docker login:

    $ docker login

    Para outros registros, inclua o URL do servidor de registro:

    $ docker login registry-server-url
    nota

    Se o ambiente do Elastic Beanstalk usar a versão da plataforma Docker da AMI do Amazon Linux (que precede o Amazon Linux 2), leia as informações relevantes em Configuração do Docker na AMI do Amazon Linux (que precede o Amazon Linux 2).

    Para obter mais informações sobre o arquivo de autenticação, consulte Store images on Docker Hub e docker login no site do Docker.

  2. Faça upload de uma cópia do arquivo de autenticação chamado .dockercfg em um bucket do Amazon S3 seguro.

    • O bucket do Amazon S3 deve ser hospedado no Região da AWS mesmo ambiente que o está usando. O Elastic Beanstalk não pode fazer download de arquivos de um bucket do Amazon S3 hospedado em outras regiões.

    • Conceda permissões para a operação s3:GetObject à função do IAM no perfil da instância. Para obter mais informações, consulte Gerenciar perfis de instância do Elastic Beanstalk.

  3. Inclua as informações do bucket do Amazon S3 no parâmetro Authentication no arquivo Dockerrun.aws.json.

    O exemplo a seguir mostra o uso de um arquivo de autenticação chamado mydockercfg em um bucket chamado amzn-s3-demo-bucket para usar uma imagem privada em um registro de terceiros. Para obter o número de versão correto para o AWSEBDockerrunVersion, consulte a observação que segue o exemplo.

    { "AWSEBDockerrunVersion": "version-no", "Authentication": { "Bucket": "amzn-s3-demo-bucket", "Key": "mydockercfg" }, "Image": { "Name": "quay.io/johndoe/private-image", "Update": "true" }, "Ports": [ { "ContainerPort": "1234" } ], "Volumes": [ { "HostDirectory": "/var/app/mydb", "ContainerDirectory": "/etc/mysql" } ], "Logging": "/var/log/nginx" }
    Versões do Dockerrun.aws.json

    O parâmetro AWSEBDockerrunVersion indica a versão do arquivo Dockerrun.aws.json.

    • O Docker AL2 e AL2023 as plataformas usam as seguintes versões do arquivo.

      • Dockerrun.aws.json v3: ambientes que usam o Docker Compose.

      • Dockerrun.aws.json v1: ambientes que não usam o Docker Compose.

    • O ECS executado no Amazon Linux 2 e o ECS executado no AL2023 usam o Dockerrun.aws.json v2 arquivo. A plataforma descontinuada ECS-The Multicontainer Docker Amazon Linux AMI (AL1) também usou essa mesma versão.

Depois que o Elastic Beanstalk puder autenticar com o registro online que hospeda o repositório privado, as imagens poderão ser implantadas e extraídas.

Usando imagens do Amazon ECR público

O Amazon ECR Public é um registro público de contêineres que hospeda imagens do Docker. Embora os repositórios públicos do Amazon ECR estejam acessíveis ao público, a autenticação fornece limites de taxa mais altos e melhor confiabilidade para suas implantações.

nota

A autenticação pública do Amazon ECR não é suportada nas regiões (cn-*) e AWS GovCloud regiões (us-gov-*) da China. Nessas regiões, o Elastic Beanstalk usará pulls não autenticados.

Para habilitar a autenticação pública do Amazon ECR, adicione as seguintes permissões ao perfil de instância do seu ambiente. Para obter mais informações sobre a autenticação pública do Amazon ECR, consulte Autenticação de registro no Amazon ECR público, no Guia do usuário Amazon Elastic Container Registry Public:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr-public:GetAuthorizationToken", "sts:GetServiceBearerToken" ], "Resource": "*" } ] }

Depois que essas permissões forem anexadas ao seu perfil de instância, o Elastic Beanstalk se autenticará automaticamente nos registros públicos do Amazon ECR. Você pode referenciar imagens públicas do Amazon ECR usando o formato public.ecr.aws/registry-alias/repository-name:tag padrão no seu arquivo Dockerrun.aws.json ou Dockerfile.