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 com repositórios de imagens
Este tópico descreve como se autenticar em repositórios de imagens on-line com o Elastic Beanstalk. Para repositórios privados, o Elastic Beanstalk deve se autenticar antes de 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
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:
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 o AWS Systems Manager (SSM) Parameter Store ou 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é-construção do processo de implantação do Elastic Beanstalk com dois componentes:
-
ebextensions para definir variáveis de ambiente que armazenam credenciais do repositório
-
scripts de gancho de plataforma para executar docker login antes de extrair imagens
Os scripts de gancho recuperam com segurança as credenciais das variáveis de ambiente que são preenchidas no Parameter Store ou. AWS Systems Manager AWS Secrets ManagerEsse recurso requer plataformas Elastic Beanstalk Docker e Docker gerenciadas por ECS lançadas em ou após 26 de março de 2025. Para obter mais detalhes, consulte a configuração da variável de ambiente.
Para configurar o Elastic Beanstalk para se autenticar em seu repositório privado com o Parameter Store ou AWS Systems ManagerAWS Secrets Manager
nota
Antes de continuar, verifique se você configurou suas credenciais no AWS Systems Manager Parameter Store ou configurou AWS Secrets Manager as permissões necessárias do IAM. Consulte Pré-requisitos para configurar segredos como variáveis de ambiente para obter detalhes.
-
Crie a seguinte estrutura de diretórios para seu projeto:
├── .ebextensions │ └── env.config ├── .platform │ ├── confighooks │ │ └── prebuild │ │ └── 01login.sh │ └── hooks │ └── prebuild │ └── 01login.sh ├── Dockerfile
-
Use o AWS Systems ManagerParameter Store ou AWS Secrets Managerpara salvar as credenciais do seu repositório privado. Este exemplo mostra o AWS Systems Manager Parameter Store e AWS Secrets Manager , mas você pode optar por usar apenas um desses serviços.
aws ssm put-parameter --name USER --type SecureString --value "username" aws secretsmanager create-secret --name PASSWD --secret-string "passwd"
-
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: aplicação: segredos do meio ambiente namespace para inicializar as variáveis de ambiente e doPASSWD
ElasticUSER
Beanstalk com os valores armazenados no Systems Manager Parameter Store.nota
Verifique os nomes das variáveis
USER
ePASSWD
corresponda aos nomes dos parâmetros usados nos comandos put-parameter e create-secret.option_settings: aws:elasticbeanstalk:application:environmentsecrets: USER: arn:aws:ssm:us-east-1:111122223333:parameter/user PASSWD: arn:aws:secretsmanager:us-east-1:111122223333:passwd
-
Crie o seguinte arquivo de script
01login.sh
e coloque-o nos seguintes diretórios (também mostrado na estrutura de diretórios anterior):-
.platform/confighooks/prebuild
-
.platform/hooks/prebuild
### example 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 com segurança a senha para docker login via.stdin
Para obter mais informações sobre a autenticação do Docker, consulte dockerlogin na documentação do Docker. Observações
-
Os arquivos de hook podem ser arquivos binários ou arquivos de script que começam com uma linha #! contendo seu caminho de interpretador, como #!/bin/bash.
-
Para obter mais informações, consulte Hooks de plataforma em Estender as plataformas do Elastic Beanstalk Linux.
-
Depois que a autenticação estiver configurada, o Elastic Beanstalk poderá 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
-
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. -
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.
-
-
Inclua as informações do bucket do Amazon S3 no parâmetro
Authentication
no arquivoDockerrun.aws.json
.O exemplo a seguir mostra o uso de um arquivo de autenticação chamado
mydockercfg
em um bucket chamadoamzn-s3-demo-bucket
para usar uma imagem privada em um registro de terceiros. Para obter o número de versão correto para oAWSEBDockerrunVersion
, 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 arquivoDockerrun.aws.json
.-
As plataformas Docker AL2 e AL2 023 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 AL2 023 usam o arquivo.
Dockerrun.aws.json v2
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 Public
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 do registro no Amazon ECR public no Guia do usuário público do Amazon Elastic Container Registry:
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 public.ecr.aws/
formato padrão em seu registry-alias
/repository-name:tag
Dockerrun.aws.json
arquivo ou Dockerfile.