

# 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
   ```