

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
<a name="docker-configuration.remote-repo"></a>

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
<a name="docker-images-ecr"></a>

Você pode armazenar suas imagens personalizadas do Docker AWS com o [Amazon Elastic Container Registry](https://aws.amazon.com/ecr) (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](concepts-roles-instance.md) 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](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryReadOnly.html) 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](create_deploy_docker_v2config.md), 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](single-container-docker-configuration.md), 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
<a name="docker-configuration.remote-repo.secrets"></a>

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](ebextensions.md) para definir variáveis de ambiente que armazenam credenciais de repositório
+ [scripts de hook de plataforma](platforms-linux-extend.hooks.md) para executar **docker login** antes de extrair imagens

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.](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2026-01-13-al2023.html) Para obter mais detalhes, consulte [segredos do ambiente](AWSHowTo.secrets.env-vars.md).

**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](AWSHowTo.secrets.env-vars.md#AWSHowTo.secrets.configure-env-vars.prerequisites) 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
   ```

1. Use [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)para 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"}'
   ```

1. 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](command-options-general.md#command-options-general-elasticbeanstalk-application-environmentsecrets) namespace com [extração de chave JSON](AWSHowTo.secrets.env-vars.md#AWSHowTo.secrets.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
   ```

1. 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** via`stdin`. Para obter mais informações sobre a autenticação do Docker, consulte [docker login](https://docs.docker.com/engine/reference/commandline/login/) na documentação do Docker.
**Observações**  
A plataforma Docker gerenciada pelo ECS usa a sintaxe nativa do ECS para referenciar segredos. Para obter mais informações, consulte [Passe segredos do Secrets Manager por meio das variáveis de ambiente do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/secrets-envvar-secrets-manager.html) no *Amazon Elastic Container Service Developer Guide*.
Para obter mais informações sobre ganchos de plataforma, consulte *Estendendo as plataformas [Hooks de plataforma](platforms-linux-extend.hooks.md) Linux do Elastic Beanstalk*.

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`
<a name="docker-configuration.remote-repo.dockerrun-aws"></a>

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)](create_deploy_docker.container.console.md#docker-alami).

   Para obter mais informações sobre o arquivo de autenticação, consulte [Store images on Docker Hub](https://docs.docker.com/docker-hub/repos/) e [docker login](https://docs.docker.com/engine/reference/commandline/login/) no site do Docker.

1. 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](iam-instanceprofile.md).

1. 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
<a name="docker-images-ecr-public"></a>

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](concepts-roles-instance.md) 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](https://docs.aws.amazon.com/AmazonECR/latest/public/public-registries.html), 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.