

# Instâncias de contêineres do EC2 para Amazon ECS
<a name="ecs-agent-versions"></a>

O agente do Amazon ECS é um processo executado em cada instância de contêiner registrada em seu cluster. Ele facilita a comunicação entre as instâncias de contêiner e o Amazon ECS.

**nota**  
Em instâncias de contêiner Linux, o contêiner do agente monta diretórios de nível superior, como `/lib`, `/lib64` e `/proc`. Isso é necessário para recursos e funcionalidades do ECS, como volumes do Amazon EBS, modo de rede `awsvpc`, Amazon ECS Service Connect e FireLens para Amazon ECS.

Cada agente de contêiner do Amazon ECS oferece suporte a um conjunto diferente de recursos e fornece correções de erros de versões anteriores. Quando possível, sempre recomendamos usar a versão mais recente do agente de contêiner do Amazon ECS. Para atualizar o agente de contêiner para a versão mais recente, consulte [Atualizar o agente de contêiner do Amazon ECS](ecs-agent-update.md).

O agente de contêiner do Amazon ECS contém a imagem `amazon-ecs-pause`. O Amazon ECS usa essa imagem em tarefas que usam o modo de rede `awsvpc`.

Para ver quais recursos e aprimoramentos estão incluídos em cada versão de agente, consulte [https://github.com/aws/amazon-ecs-agent/releases](https://github.com/aws/amazon-ecs-agent/releases).

**Importante**  
A versão mínima do Docker para métricas confiáveis é a versão Docker `v20.10.13` e posteriores, que está incluída na AMI otimizada para o Amazon ECS `20220607` e posteriores.  
As versões `1.20.0` e posteriores do agente do Amazon ECS descontinuaram o suporte para as versões do Docker anteriores à `18.01.0`.

## Ciclo de vida
<a name="container-lifecycle"></a>

Quando o agente de contêiner do Amazon ECS registra uma instância do Amazon EC2 no cluster, a instância do Amazon EC2 relata seu status como `ACTIVE` e o status de conexão do agente como `TRUE`. Essa instância de contêiner pode aceitar solicitações de tarefas de processamento.

Se você interrompe (sem concluir) uma instância de contêiner, o status permanece como `ACTIVE`, mas o status de conexão do agente muda para `FALSE` em instantes. As tarefas que estavam sendo executadas na instância de contêiner são interrompidas. Se você reiniciar a instância de contêiner, o agente de contêiner se reconectará com o serviço do Amazon ECS e será possível, novamente, executar tarefas na instância.

Se você alterar o status de uma instância de contêiner para `DRAINING`, as novas tarefas não serão posicionadas na instância de contêiner. Todas as tarefas de serviço em execução na instância de contêiner são removidas, se possível, de modo que você possa realizar atualizações de sistema. Para obter mais informações, consulte [Drenagem de instâncias de contêiner do Amazon ECS](container-instance-draining.md).

Se você cancela o registro ou encerra uma instância de contêiner, seu status muda para `INACTIVE` imediatamente, e ela não é mais referida não quando você lista suas instâncias de contêiner. No entanto, você ainda pode descrever a instância de contêiner por uma hora depois do encerramento. Depois desse período, a descrição de instância não estará mais disponível.

É possível drenar as instâncias manualmente ou criar um hook do ciclo de vida do grupo do Auto Scaling para definir o status da instância como `DRAINING`. Para obter mais informações sobre hooks do ciclo de vida do Auto Scaling, consulte [Hooks do ciclo de vida do Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html).

## Compatibilidade com o Docker
<a name="docker-support"></a>

O Amazon ECS é compatível com as duas últimas versões principais do Docker publicadas no Amazon Linux. Atualmente, isso inclui o Docker 20.10.x e o Docker 25.x.

A versão mínima exigida do Docker para o Amazon ECS pode ser encontrada no [arquivo de especificação do agente do Amazon ECS](https://github.com/aws/amazon-ecs-agent/blob/dev/packaging/amazon-linux-ami-integrated/ecs-agent.spec#L53) no GitHub.

Ao usar a AMI otimizada para Amazon ECS, o Docker é pré-instalado e configurado para funcionar com o agente de contêiner do Amazon ECS. A AMI inclui uma versão do Docker que é testada e compatível com o Amazon ECS.

**nota**  
Embora o Amazon ECS seja compatível com várias versões do Docker, recomendamos usar a versão do Docker que vem com a AMI otimizada para Amazon ECS para obter a melhor compatibilidade e suporte.

## AMIs otimizadas para Amazon ECS
<a name="ecs-optimized-ami"></a>

Para obter mais informações sobre a AMI otimizada para o Amazon ECS, consulte [AMIs do Linux otimizadas para o Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html).

## Mais informações
<a name="additional-information"></a>

As páginas a seguir fornecem informações adicionais sobre as alterações:
+ [Log de alterações do agente do Amazon ECS](https://github.com/aws/amazon-ecs-agent/blob/master/CHANGELOG.md) no GitHub
+ [Notas de release do Amazon Linux 2](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html).
+ [Notas de lançamento do Docker Engine](https://docs.docker.com/engine/release-notes/27/) na documentação do Docker
+ [Documentação do driver NVIDIA](https://docs.nvidia.com/datacenter/tesla/index.html) na documentação da NVIDIA

# Configuração do agente de contêiner do Amazon ECS
<a name="ecs-agent-config"></a>

**Aplica-se a**: instâncias do EC2

O agente de contêiner do Amazon ECS oferece suporte a diversas opções de configuração, a maioria das quais você define por meio de variáveis de ambiente. 

Se a instância de contêiner tiver sido executada com a variante do Linux da AMI otimizada para Amazon ECS, será possível definir essas variáveis de ambiente no arquivo `/etc/ecs/ecs.config` e reiniciar o agente. Também é possível gravar essas variáveis de configuração nas instâncias de contêiner com os dados de usuário do Amazon EC2 no momento de inicialização. Para obter mais informações, consulte [Inicialização de instâncias de contêiner do Linux no Amazon ECS para transmitir dados](bootstrap_container_instance.md).

Se a instância de contêiner tiver sido iniciada com a variante do Windows da AMI otimizada para Amazon ECS, será possível definir essas variáveis de ambiente com o comando SetEnvironmentVariable do PowerShell e, em seguida, reiniciar o agente. Para obter mais informações, consulte [Executar comandos ao executar uma instância do EC2 com entrada de dados do usuário](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) no *Guia do usuário do Amazon EC2* e em [Inicialização de instâncias de contêiner do Windows no Amazon ECS para transmitir dados](bootstrap_windows_container_instance.md).

Se você está iniciando o Amazon ECS manualmente, o agente de contêiner (para AMIs não otimizadas para Amazon ECS), pode usar essas variáveis de ambiente no comando **docker run** usado para iniciar o agente. Use essas variáveis com a sintaxe `--env=VARIABLE_NAME=VARIABLE_VALUE`. Para informações delicadas, como credenciais de autenticação para repositórios privados, você deve armazenar suas variáveis de ambiente do agente em um arquivo e passá-las todas ao mesmo tempo com a opção `--env-file path_to_env_file`. É possível usar os comandos a seguir para adicionar as variáveis.

```
sudo systemctl stop ecs
sudo vi /etc/ecs/ecs.config 
# And add the environment variables with VARIABLE_NAME=VARIABLE_VALUE format.
sudo systemctl start ecs
```

## Executar o agente do Amazon ECS com o namespace de PID do host
<a name="ecs-agent-pid-namespace"></a>

Por padrão, o agente do Amazon ECS é executado com seu próprio namespace de PID. Nas configurações a seguir, você poderá configurar o agente do Amazon ECS para ser executado com o namespace de PID do host:
+ O modo de imposição do SELinux está habilitado.
+ A política de segurança SELinux do Docker está definida como verdadeira.

Você pode configurar esse comportamento definindo a variável de ambiente `ECS_AGENT_PID_NAMESPACE_HOST` como `true` em seu arquivo `/etc/ecs/ecs.config`. Quando essa variável estiver habilitada, `ecs-init` iniciará o contêiner do agente do Amazon ECS com o namespace de PID do host (`--pid=host`), permitindo que o agente faça seu bootstrap adequadamente em ambientes que impõem o SELinux. Esse recurso está disponível na versão `1.94.0` e posterior do agente do Amazon ECS.

Para habilitar esse recurso, adicione a seguinte linha ao seu arquivo `/etc/ecs/ecs.config`:

```
ECS_AGENT_PID_NAMESPACE_HOST=true
```

Após fazer essa alteração, reinicie o agente do Amazon ECS para que a alteração entre em vigor:

```
sudo systemctl restart ecs
```

Os seguintes recursos não funcionarão quando o modo de imposição do SELinux estiver habilitado e a política de segurança do Docker estiver definida como verdadeira, mesmo quando `ECS_AGENT_PID_NAMESPACE_HOST=true` estiver definido.
+ Amazon ECS Exec
+ Anexação de tarefa do Amazon EBS
+ Service Connect
+ FireLens para o Amazon ECS

## Parâmetros disponíveis
<a name="ecs-agent-availparam"></a>

Para obter informações sobre os parâmetros de configuração do agente de contêiner do Amazon ECS, consulte [Agente de contêiner do Amazon ECS](https://github.com/aws/amazon-ecs-agent/blob/master/README.md) no GitHub..

# Armazenamento da configuração da instância de contêiner do Amazon ECS no Amazon S3
<a name="ecs-config-s3"></a>

A configuração do agente de contêiner do Amazon ECS é controlada com a variável de ambiente. As variantes do Linux da AMI otimizada para Amazon ECS procuram essas variáveis em `/etc/ecs/ecs.config` quando o agente de contêiner é iniciado e configuram o agente adequadamente. Variáveis de ambiente não sensíveis, como `ECS_CLUSTER`, podem ser transmitidas para a instância de contêiner na inicialização com os dados de usuário do Amazon EC2 e gravadas nesse arquivo sem consequências. Contudo, outras informações confidenciais, como suas credenciais da AWS ou a variável `ECS_ENGINE_AUTH_DATA`, nunca devem ser passadas para uma instância em dados de usuário ou ser gravadas em `/etc/ecs/ecs.config` de forma a permitir que sejam exibidas em um arquivo `.bash_history`.

Armazenar informações de configuração em um bucket privado no Amazon S3 e conceder acesso somente leitura à função do IAM de instância de contêiner é uma maneira segura e prática de permitir a configuração da instância de contêiner na inicialização. É possível armazenar uma cópia do seu arquivo `ecs.config` em um bucket privado. É possível usar os dados do usuário do Amazon EC2 para instalar a AWS CLI e copiar as informações de configuração em `/etc/ecs/ecs.config` quando a instância for iniciada.

**Para armazenar um arquivo `ecs.config` no Amazon S3**

1. Você deve conceder permissões para ter acesso somente leitura ao Amazon S3 ao perfil de instância de contêiner (**ecsInstanceRole**). É possível fazer isso ao atribuir **AmazonS3ReadOnlyAccess** ao perfil `ecsInstanceRole`. Para obter informações sobre como anexar uma política a um perfil, consulte [Atualizar permissões para um perfil](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html) no *Guia do usuário do AWS Identity and Access Management*.

1. Crie um arquivo `ecs.config` com variáveis de configuração válidas do agente Amazon ECS usando o formato a seguir. Este exemplo configura a autenticação de registro privado. Para obter mais informações, consulte [Uso de imagens de contêiner que não são da AWS no Amazon ECS](private-auth.md).

   ```
   ECS_ENGINE_AUTH_TYPE=dockercfg
   ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example.com"}}
   ```
**nota**  
Para obter uma lista completa das variáveis de configuração do agente do Amazon ECS disponíveis, consulte [Agente de contêiner do Amazon ECS](https://github.com/aws/amazon-ecs-agent/blob/master/README.md) no GitHub.

1. Para armazenar o arquivo de configuração, crie um bucket privado no Amazon S3. Para saber mais, consulte [Criar um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) no *Guia do usuário do Amazon Simple Storage Service*. 

1. Faça upload do arquivo `ecs.config` no bucket do S3. Para obter mais informações, consulte [Fazer upload de objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) no *Guia do usuário do Amazon Simple Storage Service*.

**Para carregar um arquivo `ecs.config` do Amazon S3 na inicialização**

1. Execute os procedimentos anteriores nesta seção para permitir acesso somente leitura do Amazon S3 às suas instâncias de contêiner e armazene um arquivo `ecs.config` em um bucket do S3 privado.

1. Inicie novas instâncias de contêiner e use o script de exemplo apresentado a seguir nos dados do usuário do EC2. O script instala a AWS CLI e copia o arquivo de configuração para `/etc/ecs/ecs.config`. Para obter mais informações, consulte [Iniciar uma instância de contêiner do Linux do Amazon ECS](launch_container_instance.md).

   ```
   #!/bin/bash
   yum install -y aws-cli
   aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config
   ```

# Instalar o agente de contêiner do Amazon ECS
<a name="ecs-agent-install"></a>

Se desejar registrar uma instância do Amazon EC2 com o cluster do Amazon ECS e essa instância não estiver usando uma AMI baseada na AMI otimizada para o Amazon ECS, você poderá instalar o agente de contêiner do Amazon ECS manualmente usando o procedimento apresentado a seguir. Para fazer isso, você pode efetuar o download do agente de um dos buckets regionais do Amazon S3 ou do Amazon Elastic Container Registry Public. Se você efetuar o download de um dos buckets regionais do Amazon S3, como opção, poderá verificar a validade do arquivo do agente de contêiner usando a assinatura PGP.

**nota**  
As unidades `systemd` para os serviços do Amazon ECS e do Docker têm uma diretiva para aguardar a conclusão de `cloud-init` antes de iniciar ambos os serviços. O processo `cloud-init` só será considerado concluído quando a execução dos dados do usuário do Amazon EC2 estiver concluída. Portanto, iniciar o Amazon ECS ou o Docker por meio dos dados de usuário do Amazon EC2 pode causar um deadlock. Para iniciar o agente de contêiner usando dados de usuário do Amazon EC2, é possível usar `systemctl enable --now --no-block ecs.service`.

## Instalar o agente de contêiner do Amazon ECS em uma instância que não seja do EC2 do Amazon Linux
<a name="ecs-agent-install-nonamazonlinux"></a>

Para instalar o agente de contêiner do Amazon ECS em uma instância do Amazon EC2, é possível efetuar o download do agente de um dos buckets regionais do Amazon S3 e instalá-lo.

**nota**  
Ao usar uma AMI que não seja do Amazon Linux, sua instância do Amazon EC2 requer suporte do `cgroupfs` para o driver `cgroup` para que o agente do Amazon ECS ofereça suporte a limites de recursos em nível de tarefa. Para obter mais informações, consulte [Amazon ECS agent on GitHub](https://github.com/aws/amazon-ecs-agent) (Agente do Amazon ECS no GitHub).

Os arquivos do agente de contêiner do Amazon ECS mais recentes, por região, para cada arquitetura de sistema, são listados a seguir para referência.


| Região | Nome da região | Arquivos de deb init do Amazon ECS | Arquivos de rpm init do Amazon ECS | 
| --- | --- | --- | --- | 
| us-east-2 | Leste dos EUA (Ohio) |  [Amazon ECS amd64 init](https://s3.us-east-2.amazonaws.com/amazon-ecs-agent-us-east-2/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.us-east-2.amazonaws.com/amazon-ecs-agent-us-east-2/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.us-east-2.amazonaws.com/amazon-ecs-agent-us-east-2/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.us-east-2.amazonaws.com/amazon-ecs-agent-us-east-2/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| us-east-1 | Leste dos EUA (Norte da Virgínia) |  [Amazon ECS amd64 init](https://s3.us-east-1.amazonaws.com/amazon-ecs-agent-us-east-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.us-east-1.amazonaws.com/amazon-ecs-agent-us-east-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.us-east-1.amazonaws.com/amazon-ecs-agent-us-east-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.us-east-1.amazonaws.com/amazon-ecs-agent-us-east-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| us-west-1 | Oeste dos EUA (N. da Califórnia) |  [Amazon ECS amd64 init](https://s3.us-west-1.amazonaws.com/amazon-ecs-agent-us-west-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.us-west-1.amazonaws.com/amazon-ecs-agent-us-west-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.us-west-1.amazonaws.com/amazon-ecs-agent-us-west-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.us-west-1.amazonaws.com/amazon-ecs-agent-us-west-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| us-west-2 | Oeste dos EUA (Oregon) |  [Amazon ECS amd64 init](https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ap-east-1 | Ásia-Pacífico (Hong Kong) |  [Amazon ECS amd64 init](https://s3.ap-east-1.amazonaws.com/amazon-ecs-agent-ap-east-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.ap-east-1.amazonaws.com/amazon-ecs-agent-ap-east-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.ap-east-1.amazonaws.com/amazon-ecs-agent-ap-east-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.ap-east-1.amazonaws.com/amazon-ecs-agent-ap-east-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ap-northeast-1 | Ásia-Pacífico (Tóquio) |  [Amazon ECS amd64 init](https://s3.ap-northeast-1.amazonaws.com/amazon-ecs-agent-ap-northeast-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.ap-northeast-1.amazonaws.com/amazon-ecs-agent-ap-northeast-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.ap-northeast-1.amazonaws.com/amazon-ecs-agent-ap-northeast-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.ap-northeast-1.amazonaws.com/amazon-ecs-agent-ap-northeast-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ap-northeast-2 | Ásia-Pacífico (Seul) |  [Amazon ECS amd64 init](https://s3.ap-northeast-2.amazonaws.com/amazon-ecs-agent-ap-northeast-2/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.ap-northeast-2.amazonaws.com/amazon-ecs-agent-ap-northeast-2/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.ap-northeast-2.amazonaws.com/amazon-ecs-agent-ap-northeast-2/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.ap-northeast-2.amazonaws.com/amazon-ecs-agent-ap-northeast-2/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ap-south-1 | Ásia-Pacífico (Mumbai) |  [Amazon ECS amd64 init](https://s3.ap-south-1.amazonaws.com/amazon-ecs-agent-ap-south-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.ap-south-1.amazonaws.com/amazon-ecs-agent-ap-south-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.ap-south-1.amazonaws.com/amazon-ecs-agent-ap-south-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.ap-south-1.amazonaws.com/amazon-ecs-agent-ap-south-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ap-southeast-1 | Ásia-Pacífico (Singapura) |  [Amazon ECS amd64 init](https://s3.ap-southeast-1.amazonaws.com/amazon-ecs-agent-ap-southeast-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.ap-southeast-1.amazonaws.com/amazon-ecs-agent-ap-southeast-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.ap-southeast-1.amazonaws.com/amazon-ecs-agent-ap-southeast-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.ap-southeast-1.amazonaws.com/amazon-ecs-agent-ap-southeast-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ap-southeast-2 | Ásia-Pacífico (Sydney) |  [Amazon ECS amd64 init](https://s3.ap-southeast-2.amazonaws.com/amazon-ecs-agent-ap-southeast-2/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.ap-southeast-2.amazonaws.com/amazon-ecs-agent-ap-southeast-2/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.ap-southeast-2.amazonaws.com/amazon-ecs-agent-ap-southeast-2/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.ap-southeast-2.amazonaws.com/amazon-ecs-agent-ap-southeast-2/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ca-central-1 | Canadá (Central) |  [Amazon ECS amd64 init](https://s3.ca-central-1.amazonaws.com/amazon-ecs-agent-ca-central-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.ca-central-1.amazonaws.com/amazon-ecs-agent-ca-central-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.ca-central-1.amazonaws.com/amazon-ecs-agent-ca-central-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.ca-central-1.amazonaws.com/amazon-ecs-agent-ca-central-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| eu-central-1 | Europa (Frankfurt) |  [Amazon ECS amd64 init](https://s3.eu-central-1.amazonaws.com/amazon-ecs-agent-eu-central-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.eu-central-1.amazonaws.com/amazon-ecs-agent-eu-central-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.eu-central-1.amazonaws.com/amazon-ecs-agent-eu-central-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.eu-central-1.amazonaws.com/amazon-ecs-agent-eu-central-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| eu-west-1 | Europa (Irlanda) |  [Amazon ECS amd64 init](https://s3.eu-west-1.amazonaws.com/amazon-ecs-agent-eu-west-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.eu-west-1.amazonaws.com/amazon-ecs-agent-eu-west-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.eu-west-1.amazonaws.com/amazon-ecs-agent-eu-west-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.eu-west-1.amazonaws.com/amazon-ecs-agent-eu-west-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| eu-west-2 | Europa (Londres) |  [Amazon ECS amd64 init](https://s3.eu-west-2.amazonaws.com/amazon-ecs-agent-eu-west-2/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.eu-west-2.amazonaws.com/amazon-ecs-agent-eu-west-2/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.eu-west-2.amazonaws.com/amazon-ecs-agent-eu-west-2/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.eu-west-2.amazonaws.com/amazon-ecs-agent-eu-west-2/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| eu-west-3 | Europa (Paris) |  [Amazon ECS amd64 init](https://s3.eu-west-3.amazonaws.com/amazon-ecs-agent-eu-west-3/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.eu-west-3.amazonaws.com/amazon-ecs-agent-eu-west-3/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.eu-west-3.amazonaws.com/amazon-ecs-agent-eu-west-3/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.eu-west-3.amazonaws.com/amazon-ecs-agent-eu-west-3/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| sa-east-1 | América do Sul (São Paulo) |  [Amazon ECS amd64 init](https://s3.sa-east-1.amazonaws.com/amazon-ecs-agent-sa-east-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.sa-east-1.amazonaws.com/amazon-ecs-agent-sa-east-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init86\$164](https://s3.sa-east-1.amazonaws.com/amazon-ecs-agent-sa-east-1/amazon-ecs-init-latest.x86_64.rpm) [Amazon ECS aarch64 init](https://s3.sa-east-1.amazonaws.com/amazon-ecs-agent-sa-east-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| us-gov-east-1 | AWS GovCloud (Leste dos EUA) |  [Amazon ECS amd64 init](https://s3.us-gov-east-1.amazonaws.com/amazon-ecs-agent-us-gov-east-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.us-gov-east-1.amazonaws.com/amazon-ecs-agent-us-gov-east-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.us-gov-east-1.amazonaws.com/amazon-ecs-agent-us-gov-east-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.us-gov-east-1.amazonaws.com/amazon-ecs-agent-us-gov-east-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| us-gov-west-1 | AWS GovCloud (Oeste dos EUA) |  [Amazon ECS amd64 init](https://s3.us-gov-west-1.amazonaws.com/amazon-ecs-agent-us-gov-west-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS arm64 init](https://s3.us-gov-west-1.amazonaws.com/amazon-ecs-agent-us-gov-west-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS x86\$164 init](https://s3.us-gov-west-1.amazonaws.com/amazon-ecs-agent-us-gov-west-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS aarch64 init](https://s3.us-gov-west-1.amazonaws.com/amazon-ecs-agent-us-gov-west-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 

**Para instalar o agente de contêiner do Amazon ECS em uma instância do Amazon EC2 usando uma AMI que não seja do Amazon Linux**

1. Inicie uma instância do Amazon EC2 com uma função do IAM que permita acesso ao Amazon ECS. Para obter mais informações, consulte [Função do IAM de instância de contêiner do Amazon ECS](instance_IAM_role.md).

1. Conecte-se à sua instância.

1. Instale a versão mais recente do Docker na instância.

1. Verifique a versão do Docker para verificar se seu sistema atende à exigência de versão mínima. Para obter mais informações sobre o suporte do Docker, consulte [Instâncias de contêineres do EC2 para Amazon ECS](ecs-agent-versions.md).

   ```
   docker --version
   ```

1. Baixe o arquivo de agente do Amazon ECS apropriado para seu sistema operacional e arquitetura de sistema e instale-o.

   Para arquiteturas `deb`:

   ```
   ubuntu:~$ curl -O https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.amd64.deb
   ubuntu:~$ sudo dpkg -i amazon-ecs-init-latest.amd64.deb
   ```

   Para arquiteturas `rpm`:

   ```
   fedora:~$ curl -O https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.x86_64.rpm
   fedora:~$ sudo yum localinstall -y amazon-ecs-init-latest.x86_64.rpm
   ```

1. Edite o arquivo `/lib/systemd/system/ecs.service` e adicione a linha apresentada a seguir no final da seção `[Unit]`.

   ```
   After=cloud-final.service
   ```

1. (Opcional) Para registrar a instância com um cluster diferente do cluster `default`, edite o arquive `/etc/ecs/ecs.config` e adicione o seguinte conteúdo. O exemplo seguinte especifica o cluster `MyCluster`.

   ```
   ECS_CLUSTER=MyCluster
   ```

   Para obter mais informações sobre essas e outras opções de runtime de agente, consulte [Configuração do agente de contêiner do Amazon ECS](ecs-agent-config.md). 
**nota**  
É possível, opcionalmente, armazenar suas variáveis de ambiente do agente no Amazon S3 (que podem ser baixadas para as instâncias de contêiner no momento da inicialização usando os dados de usuário do Amazon EC2). Isso é recomendado para informações confidenciais, como credenciais de autenticação para repositórios privados. Para obter mais informações, consulte [Armazenamento da configuração da instância de contêiner do Amazon ECS no Amazon S3](ecs-config-s3.md) e [Uso de imagens de contêiner que não são da AWS no Amazon ECS](private-auth.md).

1. Inicie o serviço `ecs`.

   ```
   ubuntu:~$ sudo systemctl start ecs
   ```

## Execução do agente do Amazon ECS com o modo de rede de host
<a name="container_agent_host"></a>

Durante a execução do agente de contêiner do Amazon ECS, `ecs-init` criará o contêiner do agente de contêiner com o modo de rede de `host`. Esse é o único modo de rede com suporte para o contêiner do agente de contêiner. 

Isso permite que você bloqueie o acesso ao [Endpoint de serviço de metadados da instância do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) (`http://169.254.169.254`) para os contêineres iniciados pelo agente de contêiner. Isso garante que os contêineres não possam acessar as credenciais de função do IAM do perfil da instância de contêiner e impõe que as tarefas usem apenas as credenciais de função de tarefa do IAM. Para obter mais informações, consulte [Perfil do IAM para tarefas do Amazon ECS](task-iam-roles.md).

Isso também permite que o agente de contêiner não dispute conexões e tráfego de rede na ponte `docker0`.

## Parâmetros de configuração do log do agente de contêiner do Amazon ECS
<a name="agent-logs"></a>

O agente de contêiner do Amazon ECS armazena logs nas instâncias de contêiner.

Para o agente de contêiner versão 1.36.0 e posteriores, por padrão, os logs estão localizados em `/var/log/ecs/ecs-agent.log` nas instâncias do Linux e em `C:\ProgramData\Amazon\ECS\log\ecs-agent.log` nas instâncias do Windows.

Para o agente de contêiner versão 1.35.0 e posteriores, por padrão, os logs estão localizados em `/var/log/ecs/ecs-agent.log.timestamp` nas instâncias do Linux e em `C:\ProgramData\Amazon\ECS\log\ecs-agent.log.timestamp` nas instâncias do Windows.

Por padrão, os logs do agente são rotacionados de hora em hora com o máximo de 24 logs armazenados.

Veja a seguir as variáveis de configuração do agente de contêiner que podem ser usadas para alterar o comportamento padrão de log do agente. Para obter informações detalhadas sobre todos os parâmetros de configuração disponíveis, consulte [Configuração do agente de contêiner do Amazon ECS](ecs-agent-config.md) o [README do agente do Amazon ECS](https://github.com/aws/amazon-ecs-agent/blob/master/README.md) no GitHub.

Para o agente de contêiner versão 1.36.0 e posteriores, veja a seguir um arquivo de log de exemplo quando o formato `logfmt` é usado.

```
level=info time=2019-12-12T23:43:29Z msg="Loading configuration" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-agent:latest" module=parse.go
level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-pause:0.1.0" module=parse.go
level=info time=2019-12-12T23:43:29Z msg="Amazon ECS agent Version: 1.36.0, Commit: ca640387" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Creating root ecs cgroup: /ecs" module=init_linux.go
level=info time=2019-12-12T23:43:29Z msg="Creating cgroup /ecs" module=cgroup_controller_linux.go
level=info time=2019-12-12T23:43:29Z msg="Loading state!" module=statemanager.go
level=info time=2019-12-12T23:43:29Z msg="Event stream ContainerChange start listening..." module=eventstream.go
level=info time=2019-12-12T23:43:29Z msg="Restored cluster 'auto-robc'" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Restored from checkpoint file. I am running as 'arn:aws:ecs:us-west-2:0123456789:container-instance/auto-robc/3330a8a91d15464ea30662d5840164cd' in cluster 'auto-robc'" module=agent.go
```

Veja a seguir um arquivo de log de exemplo quando o formato JSON é usado.

```
{"time": "2019-11-07T22:52:02Z", "level": "info", "msg": "Starting Amazon Elastic Container Service Agent", "module": "engine.go"}
```

# Configuração de instâncias de contêiner do Amazon ECS para imagens do Docker privadas
<a name="private-auth-container-instances"></a>

O agente de contêiner do Amazon ECS pode realizar a autenticação com registros privados usando a autenticação básica. Ao ativar a autenticação de registro privado, você pode utilizar imagens de docker privadas nas definições de tarefa. Esse recurso só é compatível com tarefas que usam o EC2.

Outro método para habilitar a autenticação de registro privado usa o AWS Secrets Manager para armazenar suas credenciais de registro privado de forma segura e, então, referenciá-las em sua definição de contêiner. Isso permite que suas tarefas usem imagens de repositórios privados. Esse método é compatível com tarefas que usam o EC2 ou o Fargate. Para obter mais informações, consulte [Uso de imagens de contêiner que não são da AWS no Amazon ECS](private-auth.md).

O agente de contêiner do Amazon ECS procura duas variáveis de ambiente ao ser iniciado:
+ `ECS_ENGINE_AUTH_TYPE`, que especifica o tipo de dados de autenticação que está sendo enviado.
+ `ECS_ENGINE_AUTH_DATA`, que contém as credenciais de autenticação em si.

As variantes do Linux da AMI otimizada para Amazon ECS procuram essas variáveis no arquivo `/etc/ecs/ecs.config` quando a instância de contêiner é inicializada, e cada vez que o serviço é iniciado (com o comando **sudo start ecs**). As AMIs que não são otimizadas para Amazon ECS devem armazenar essas variáveis de ambiente em um arquivo e transmiti-las com a opção `--env-file path_to_env_file` para o comando **docker run** que inicia o agente de contêiner.

**Importante**  
Não recomendamos que você injete essas variáveis de ambiente de autenticação na inicialização da instância com os dados de usuário do Amazon EC2 ou as transmita com a opção `--env` para o comando **docker run**. Esses métodos não são adequados para dados confidenciais, como credenciais de autenticação. Para obter informações sobre como adicionar credenciais de autenticação com segurança às instâncias de contêiner, consulte [Armazenamento da configuração da instância de contêiner do Amazon ECS no Amazon S3](ecs-config-s3.md).

## Formatos de autenticação
<a name="docker-auth-formats"></a>

Há dois formatos disponíveis para a autenticação de registro privado, `dockercfg` e `docker`.

**Formato de autenticação dockercfg**  
O formato `dockercfg` usa as informações de autenticação armazenadas no arquivo de configuração criado quando você executa o comando **docker login**. É possível criar esse arquivo executando **docker login** no sistema local e inserindo o nome de usuário, a senha e o endereço de e-mail do registro. Também é possível fazer login em uma instância de contêiner e executar o comando daí. Dependendo de sua versão do Docker, esse arquivo é salvo como `~/.dockercfg` ou `~/.docker/config.json`.

```
cat ~/.docker/config.json
```

Resultado:

```
{
  "auths": {
    "https://index.docker.io/v1/": {
      "auth": "zq212MzEXAMPLE7o6T25Dk0i"
    }
  }
}
```

**Importante**  
As versões mais recentes do Docker criam um arquivo de configuração como mostrado acima, com um objeto `auths` externo. O agente do Amazon ECS oferece suporte somente aos dados de autenticação `dockercfg` que estão no formato abaixo, sem o objeto `auths`. Se tiver o utilitário **jq** instalado, será possível extrair esses dados com o comando a seguir: **cat \$1/.docker/config.json \$1 jq .auths**

```
cat ~/.docker/config.json | jq .auths
```

Resultado:

```
{
  "https://index.docker.io/v1/": {
    "auth": "zq212MzEXAMPLE7o6T25Dk0i",
    "email": "email@example.com"
  }
}
```

No exemplo acima, as variáveis de ambiente a seguir devem ser adicionadas ao arquivo de variável de ambiente (`/etc/ecs/ecs.config` para a AMI otimizada para o Amazon ECS) que o agente de contêiner do Amazon ECS carrega no runtime. Se você não estiver usando a AMI otimizada para Amazon ECS e estiver iniciando o agente manualmente com **docker run**, especifique o arquivo de variável de ambiente com a opção `--env-file path_to_env_file` ao iniciar o agente.

```
ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example.com"}}
```

É possível configurar vários registros privados com a sintaxe a seguir:

```
ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA={"repo.example-01.com":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example-01.com"},"repo.example-02.com":{"auth":"fQ172MzEXAMPLEoF7225DU0j","email":"email@example-02.com"}}
```

**Formato de autenticação docker**  
O formato `docker` usa uma representação JSON do servidor de registro com que o agente deve se autenticar. Ele também inclui os parâmetros de autenticação exigidos por esse registro (como nome de usuário, senha e endereço de e-mail dessa conta). Para uma conta do Docker Hub, a representação JSON terá a seguinte aparência:

```
{
  "https://index.docker.io/v1/": {
    "username": "my_name",
    "password": "my_password",
    "email": "email@example.com"
  }
}
```

Nesse exemplo as variáveis de ambiente a seguir devem ser adicionadas ao arquivo de variável de ambiente (`/etc/ecs/ecs.config` para a AMI otimizada para o Amazon ECS) que o agente de contêiner do Amazon ECS carrega no runtime. Se você não estiver usando a AMI otimizada para Amazon ECS e estiver iniciando o agente manualmente com **docker run**, especifique o arquivo de variável de ambiente com a opção `--env-file path_to_env_file` ao iniciar o agente.

```
ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}
```

É possível configurar vários registros privados com a sintaxe a seguir:

```
ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA={"repo.example-01.com":{"username":"my_name","password":"my_password","email":"email@example-01.com"},"repo.example-02.com":{"username":"another_name","password":"another_password","email":"email@example-02.com"}}
```

## Procedimento
<a name="enabling-private-registry"></a>

Use o procedimento a seguir para ativar registros privados para as instâncias de contêiner.

**Para habilitar registros privados na AMI otimizada para Amazon ECS**

1. Faça login em sua instância de contêiner usando SSH.

1. Abra o arquivo `/etc/ecs/ecs.config` e adicione os valores `ECS_ENGINE_AUTH_TYPE` e `ECS_ENGINE_AUTH_DATA` para o seu registro e conta:

   ```
   sudo vi /etc/ecs/ecs.config
   ```

   Este exemplo autentica uma conta de usuário do Docker Hub:

   ```
   ECS_ENGINE_AUTH_TYPE=docker
   ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}
   ```

1. Verifique se o seu agente usa a variável de ambiente `ECS_DATADIR` para salvar seu estado:

   ```
   docker inspect ecs-agent | grep ECS_DATADIR
   ```

   Resultado:

   ```
   "ECS_DATADIR=/data",
   ```
**Importante**  
Se o comando anterior não retornar a variável de ambiente `ECS_DATADIR`, você deverá interromper todas as tarefas em execução nessa instância de contêiner antes de interromper o agente. Agentes mais novos com a variável de ambiente `ECS_DATADIR` salvam seu estado, e você pode interrompê-los e iniciá-los enquanto as tarefas são executadas sem problemas. Para obter mais informações, consulte [Atualizar o agente de contêiner do Amazon ECS](ecs-agent-update.md).

1. Interrompa o serviço `ecs`:

   ```
   sudo stop ecs
   ```

   Resultado:

   ```
   ecs stop/waiting
   ```

1. Reinicie o serviço `ecs`.
   + Para a AMI do Amazon Linux 2 otimizada para o Amazon ECS:

     ```
     sudo systemctl restart ecs
     ```
   + Para a AMI do Amazon Linux otimizada para o Amazon ECS:

     ```
     sudo stop ecs && sudo start ecs
     ```

1. (Opcional) É possível verificar se o agente está em execução e consultar algumas informações sobre sua nova instância de contêiner consultando a operação da API de introspecção do agente. Para obter mais informações, consulte [Introspecção de contêiner do Amazon ECS](ecs-agent-introspection.md).

   ```
   curl http://localhost:51678/v1/metadata
   ```

# Limpeza automática de tarefas e de imagens do Amazon ECS
<a name="automated_image_cleanup"></a>

Sempre que uma tarefa é colocada em uma instância de contêiner, o agente de contêiner do Amazon ECS verifica se as imagens referenciadas na tarefa são as mais recentes da etiqueta especificada no repositório. Caso contrário, o comportamento padrão permite que o agente execute pull das imagens de seus respectivos repositórios. Se você atualizar frequentemente as imagens em suas tarefas e serviços, o armazenamento de instâncias do contêiner poderá encher rapidamente com imagens do Docker que você não está mais usando e que provavelmente nunca mais usará. Por exemplo, você pode usar um pipeline de integração contínua e implantação contínua (CI/CD).

**nota**  
O comportamento da extração de imagens do agente do Amazon ECS pode ser personalizado por meio do parâmetro `ECS_IMAGE_PULL_BEHAVIOR`. Para obter mais informações, consulte [Configuração do agente de contêiner do Amazon ECS](ecs-agent-config.md).

Da mesma forma, os contêineres que pertencem a tarefas interrompidas também podem consumir armazenamento de instâncias de contêiner com informações de log, volumes de dados e outros artefatos. Esses artefatos são úteis para os contêineres de depuração que pararam inesperadamente, mas grande parte desse armazenamento pode ser liberado com segurança após um período. 

Por padrão, o agente de contêiner do Amazon ECS limpa automaticamente tarefas e imagens do Docker interrompidas que não estão sendo usadas por qualquer tarefa nas instâncias de contêiner.

**nota**  
O recurso de limpeza de imagem automatizado requer pelo menos a versão 1.13.0 do agente de contêiner do Amazon ECS. Para atualizar o agente para a versão mais recente, consulte [Atualizar o agente de contêiner do Amazon ECS](ecs-agent-update.md).

As seguintes variáveis de configuração de agente estão disponíveis para ajustar sua experiência de limpeza automatizada de tarefas e imagens. Para mais informações sobre como definir essas variáveis nas instâncias de contêiner, consulte [Configuração do agente de contêiner do Amazon ECS](ecs-agent-config.md).

`ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION`  
O tempo padrão de espera para excluir contêineres de uma tarefa interrompida. Se o valor for definido para menos de 1 segundo, ele será ignorado. Por padrão, este parâmetro é definido para 3 horas, mas é possível reduzir esse período para até 1 minuto, se isso for necessário para sua aplicação.  
O processo de limpeza de imagem não pode excluir uma imagem, contanto que haja um contêiner que faça referência a ele. Depois que os contêineres são removidos, todas as imagens não referenciadas se tornam candidatas à limpeza com base nos parâmetros de configuração da limpeza de imagens.

`ECS_DISABLE_IMAGE_CLEANUP`  
Se você definir esta variável como `true`, a limpeza automatizada de imagem será desativada na instância de contêiner e nenhuma imagem será removida automaticamente.

`ECS_IMAGE_CLEANUP_INTERVAL`  
Esta variável especifica a frequência em que o processo de limpeza automatizada de imagem deve procurar as imagens a serem excluídas. O padrão é a cada 30 minutos, mas você pode reduzir esse período para até 10 minutos, a fim de remover as imagens com mais frequência.

`ECS_IMAGE_MINIMUM_CLEANUP_AGE`  
Essa variável especifica o intervalo de tempo mínimo entre o momento em que uma imagem foi obtida e o momento em que ela pode se tornar candidata à remoção. Ela é usada para evitar a limpeza de imagens que acabaram de ser obtidas. O valor padrão é 1 hora.

`ECS_NUM_IMAGES_DELETE_PER_CYCLE`  
Esta variável especifica quantas imagens podem ser removidas em um único ciclo de limpeza. O valor padrão é 5 e o valor mínimo é 1.

Quando o agente de contêiner do Amazon ECS estiver em execução e a limpeza automatizada de imagem não estiver desativada, o agente verificará imagens do Docker que não são referenciadas por contêineres interrompidos ou em execução com uma frequência determinada pela variável `ECS_IMAGE_CLEANUP_INTERVAL`. Se as imagens não utilizadas forem localizadas e forem mais antigas do que o tempo mínimo de limpeza especificado pela variável `ECS_IMAGE_MINIMUM_CLEANUP_AGE`, o agente removerá até o número máximo de imagens especificadas com a variável `ECS_NUM_IMAGES_DELETE_PER_CYCLE`. As imagens referenciadas menos recentes são excluídas primeiro. Depois que as imagens forem removidas, o agente esperará até o intervalo seguinte e repetirá o processo novamente.