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
É possível armazenar suas imagens de Docker personalizadas na 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 isso, adicione permissões ao perfil da instância do seu ambiente anexando a política gerenciada AmazonEC2ContainerRegistryReadOnly 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"
},
Usar o armazenamento de parâmetros do AWS Systems Manager (SSM) ou do 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:
-
ebextensions para definir variáveis de ambiente que armazenam credenciais de repositório
-
scripts de hook de plataforma para executar docker login antes de extrair imagens
Scripts de hook recuperam com segurança as credenciais das variáveis de ambiente que são preenchidas no AWS Systems Manager Parameter Store ou AWS Secrets Manager. Para esse recurso, é necessário o Elastic Beanstalk Docker e as plataformas Docker gerenciadas pelo ECS lançadas em ou após 26 de março de 2025. Para obter mais detalhes, consulte a configuração de variáveis de ambiente.
Para configurar o Elastic Beanstalk para autenticar em seu repositório privado com o AWS Systems Manager Parameter Store ou o AWS Secrets Manager
nota
Antes de continuar, verifique se você configurou suas credenciais no AWS Systems Manager Parameter Store ou 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.
-
Crie a seguinte estrutura de diretórios para o seu projeto:
├── .ebextensions │ └── env.config ├── .platform │ ├── confighooks │ │ └── prebuild │ │ └── 01login.sh │ └── hooks │ └── prebuild │ └── 01login.sh ├── Dockerfile -
Use o AWS Systems Manager Parameter Store ou AWS Secrets Manager para salvar as credenciais do seu repositório privado. Este exemplo mostra o AWS Systems Manager Parameter Store e o 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.confige coloque-o no diretório.ebextensions, como mostrado na estrutura de diretórios anterior. Essa configuração usa o namespace aws:elasticbeanstalk:application:environmentsecrets para inicializar as variáveis de ambiente do Elastic BeanstalkUSERePASSWDcom os valores armazenados no Systems Manager Parameter Store.nota
Verifique os nomes das variáveis
USERePASSWDcorresponda 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.she 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-stdinO script
01login.shusa as variáveis de ambiente configuradas na Etapa 3 e passa com segurança a senha para docker login viastdin. Para obter mais informações sobre a autenticação do Docker, consulte docker loginna 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 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
-
Gere um arquivo de autenticação com o comando docker login. Para repositórios no Docker Hub, execute docker login:
$docker loginPara outros registros, inclua o URL do servidor de registro:
$docker loginregistry-server-urlnota
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
.dockercfgem um bucket do Amazon S3 seguro.-
O bucket do Amazon S3 deve ser hospedado na mesma Região da AWS do 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
Authenticationno arquivoDockerrun.aws.json.O exemplo a seguir mostra o uso de um arquivo de autenticação chamado
mydockercfgem um bucket chamadoamzn-s3-demo-bucketpara 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" }Dockerrun.aws.jsonVersões do
O parâmetro
AWSEBDockerrunVersionindica a versão do arquivoDockerrun.aws.json.-
As plataformas AL2 e AL2023 do Docker 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.
-
ECS em execução no Amazon Linux 2 e ECS em execução no AL2023 usa o arquivo
Dockerrun.aws.json v2. A plataforma retirada ECS - A AMI Docker Multicontainer Amazon Linux (AL1) também usava 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 da China (cn-*) e AWS GovCloud (us-gov-*). 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:
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/ padrão no seu arquivo registry-alias/repository-name:tagDockerrun.aws.json ou Dockerfile.