

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á.

# Criar uma definição de trabalho de nó único com vários contêineres nos recursos do Amazon EC2
<a name="create-job-definition-single-node-multi-container"></a>

Conclua as seguintes etapas para criar uma definição de trabalho com um único nó com vários contêineres nos recursos do Amazon Elastic Compute Cloud (Amazon EC2).

**Para criar uma nova definição de trabalho em recursos do Amazon EC2:**

1. Abra o AWS Batch console em [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/).

1. Na barra de navegação, escolha Região da AWS a ser usada.

1. No painel de navegação esquerdo, escolha **Definições de trabalho**.

1. Escolha **Criar**.

1. Para o **Tipo de orquestração,** escolha **Amazon Elastic Compute Cloud (Amazon EC2)**.

1. Em **Estrutura de definição do trabalho**, desative o processamento **Usar estrutura legado containerProperties**.

1. Em **Configuração da plataforma EC2**, desative o processamento de **Ativar paralelo de vários nós**.

1. Escolha **Próximo**.

1. Na seção **Configuração geral**, insira o seguinte:

   1. Em **Nome**, insira um nome exclusivo para a sua definição de trabalho. Os nomes podem ter até 128 caracteres. Podem conter letras minúsculas, maiúsculas, números, hifens e (-) e sublinhados (\_).

   1. Em **Tempo limite de execução - *opcional***, insira o valor do tempo limite (em segundos). O tempo limite de execução é o período de tempo antes que um trabalho não concluído seja encerrado. Se uma tentativa exceder o tempo limite, ela será interrompida e passada para um status `FAILED`. Para mais informações, consulte [Tempos limite de trabalho](job_timeouts.md). O valor mínimo é 60 segundos.

   1. Ative **Prioridade de agendamento - *opcional***. Insira um valor de prioridade de agendamento entre 0 e 100. Valores mais altos têm maior prioridade.

   1. Expanda **Tags - *opcional*** e escolha **Adicionar Tag** para adicionar tags ao recurso. Insira uma chave e um valor opcional e então escolha **Adicionar Tag**.

   1. Ative **Propagar tags** para propagar tags do trabalho e da definição de trabalho para a tarefa do Amazon ECS.

1. Na seção **Estratégia de repetição - *opcional***, insira o seguinte:

   1. Para **Tentativas de trabalho**, insira o número de vezes que o AWS Batch tenta mover o trabalho para o status de `RUNNABLE`. Insira um número inteiro entre 1 e 10.

   1. Em **Repetir as condições da estratégia**, escolha **Adicionar avaliação na saída**. Insira pelo menos um valor de parâmetro e escolha uma **Ação**. Para cada conjunto de condições, **Ação** deve ser definida como **Tentar Novamente** ou **Sair**. Essas ações significam o seguinte:
      + **Tentar novamente** — AWS Batch tenta novamente até que o número de tentativas de trabalho que você especificou seja atingido.
      + **Sair** — AWS Batch para de tentar novamente o trabalho.
**Importante**  
Se você escolher **Adicionar avaliação na saída**, deverá configurar pelo menos um parâmetro e ou escolher uma **Ação** ou escolher **Remover avaliação na saída**.

1. Na seção **Propriedades da tarefa**, insira o seguinte:

   1. Em **Função de execução - *condicional***, escolha uma função para permitir que agentes do Amazon ECS façam chamadas de AWS API em seu nome. Para obter mais informações sobre criar um **Perfil de execução**, consulte [Tutorial: criar o perfil de execução do IAM](create-execution-role.md).

   1. Escolha **Habilitar o comando de execução do ECS** para permitir o acesso direto ao shell do contêiner do Amazon ECS e ignorar o sistema operacional do host. Você deve escolher uma **Função de tarefa**.
**Importante**  
O comando **Executar ECS** exige que o sistema de arquivos seja gravável. 

   1. Para a **função Task**, escolha uma função Amazon ECS Identity and Access Management (IAM) para permitir que o contêiner faça chamadas de AWS API em seu nome. Para obter mais informações, consulte [Perfil do IAM de tarefa do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) no *Guia do desenvolvedor do Amazon Elastic Container Service*.

   1. Para o **Modo IPC**, escolha `host`, `task` ou `none`. Se o `host` for especificado, todos os contêineres dentro das tarefas que especificaram o modo IPC de host na mesma instância de contêiner compartilham os mesmos recursos IPC com a instância do Amazon EC2 do host. Se uma tarefa for especificada, todos os contêineres dentro da tarefa especificada compartilharão os mesmos recursos IPC. Se nada for especificado, os recursos IPC nos contêineres de uma tarefa serão privados e não serão compartilhados com outros contêineres em uma tarefa ou na instância de contêiner. Se nenhum valor for especificado, o compartilhamento do namespace de recurso IPC dependerá da configuração do daemon do Docker na instância de contêiner.

   1. Para o **modo PID**, escolha `host` ou `task`. Por exemplo, o monitoramento de arquivos associados pode precisar que `pidMode` acesse informações sobre outros contêineres em execução na mesma tarefa. Se `host` for especificado, todos os contêineres das tarefas que especificaram o modo PID host na mesma instância de contêiner compartilharão namespace de processo com a instância do Amazon EC2 do host. Se a `task` for especificada, todos os contêineres da tarefa especificada compartilharão o mesmo namespace de processo. Se nenhum valor for especificado, o padrão será um namespace privado para cada contêiner. 

1. Na seção **Recurso consumível**, insira o seguinte:

   1. Insira um **Nome** exclusivo e o **Valor solicitado**.

   1. Você pode adicionar mais recursos consumíveis escolhendo **Adicionar recurso consumível**.

1. Na seção **Armazenamento**, faça o seguinte:

   1. Insira um **Nome** e **Caminho de origem** para o volume e, então, escolha **Adicionar volume**. Você também pode optar por ativar o Habilitar EFS.

   1. Você pode adicionar mais Volumes escolhendo **Adicionar volume**.

1. Em **Parâmetros**, escolha **Adicionar parâmetros** para adicionar espaços reservados para substituição de parâmetros como pares de **Chave** e **Valor** opcionais.

1. Escolha **Próxima página**.

1. Na seção **Configuração de Contêiner**:

   1. Em **Name** (Nome), insira um nome para o contêiner.

   1. Em **Contêiner essencial**, ative se o contêiner for essencial.

   1. Para **Imagem**, escolha a imagem do Docker a ser usada em seu trabalho. Por padrão, as imagens no registro do Docker Hub estão disponíveis. Você também pode especificar outros repositórios com `{{repository-url}}/{{image}}:{{tag}}`. Os nomes podem ter até 225 caracteres. Pode conter letras maiúsculas e minúsculas, números, hifens (-), sublinhados (\_), dois pontos (:), barras (/) e sinais de número (\#). Esse parâmetro é mapeado para `Image` na seção [Criar um contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) e o parâmetro `IMAGE` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).
**nota**  
A arquitetura da imagem do Docker deve corresponder à arquitetura do processador dos recursos de computação nos quais eles foram programados. Por exemplo, imagens do Docker baseadas em ARM só podem ser executadas em recursos computacionais baseados em ARM.
      + As imagens em repositórios públicos do Amazon ECR usam as convenções de nomenclatura `registry/repository[:tag]` ou `registry/repository[@digest]` completa (por exemplo, `public.ecr.aws/{{registry_alias}}/{{my-web-app}}:{{latest}}`).
      + As imagens em repositórios do Amazon ECR usam as convenções de nomenclatura `registry/repository[:tag]` completa (por exemplo, `{{aws_account_id}}.dkr.ecr.{{region}}.amazonaws.com``/{{my-web-app}}:{{latest}}`).
      + Imagens em repositórios oficiais em Docker Hub usam um único nome (por exemplo, `ubuntu` ou `mongo`).
      + Imagens em outros repositórios Docker Hub são qualificadas com um nome de organização (por exemplo, `amazon/amazon-ecs-agent`).
      + Imagens em outros repositórios online também são qualificadas por um nome de domínio (por exemplo, `quay.io/assemblyline/ubuntu`).

   1. Em **Requisitos de recursos**, configure cada um dos seguintes:

      1. Para **v CPUs**, escolha o número de CPUs para o contêiner.

      1. Em **Memória**, escolha a quantidade de memória para o contêiner.

      1. Para **GPU - *opcional***, escolha o número de GPUs para o contêiner.

   1. Para **Usuário**, insira o nome do usuário a ser usado dentro do contêiner.

   1. Ative **Habilitar sistema de arquivos somente para leitura** para remover o acesso de gravação ao volume.

   1. Ative **Privilegiado** para oferecer ao contêiner de trabalho permissões elevadas na instância do host, semelhante ao usuário-raiz. 

   1. Em **Comando**, insira os comandos no campo como o equivalente da matriz de string **JSON**.

      Esse parâmetro é mapeado para `Cmd` na seção [Criar um contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) e o parâmetro `COMMAND` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Para obter mais informações sobre o Docker `CMD` parâmetro, consulte [https://docs.docker.com/engine/reference/builder/ \#cmd](https://docs.docker.com/engine/reference/builder/#cmd).
**nota**  
Você pode usar os valores padrão de substituição de parâmetros e espaços reservados no seu comando. Para obter mais informações, consulte [Parameters](job_definition_parameters.md#parameters).

   1. Em **Credenciais do repositório - *opcional***, insira o ARN do segredo que contém suas credenciais.

   1. Em **Variáveis de ambiente - *opcional***, escolha **Adicionar variáveis de ambiente** para adicionar variáveis de ambiente a serem passadas para o contêiner.

   1. Na seção **Parâmetros do Linux - *opcional***:

      1. Ative **Ativar processo init** para executar um processo init dentro do contêiner. 

      1. Em **Tamanho da memória compartilhada**, insira o tamanho (em MiB) do volume /dev/shm

      1. Em **Tamanho máximo de troca**, insira a quantidade total de memória de troca (em MiB) que o contêiner pode usar.

      1. Em **Swappiness**, insira um valor entre 0 e 100 para indicar o comportamento de troca de memória do contêiner. Se você não especificar um valor e a troca estiver ativada, o valor assumirá 60 como padrão. 

      1. Em **Dispositivos**, escolha **Adicionar dispositivo** para adicionar um dispositivo:

         1. Em **Container path (Caminho do contêiner)**, especifique o caminho na instância de contêiner para expor o dispositivo mapeado para a instância de host. Se isso for deixado em branco, o caminho de host será usado no contêiner.

         1. Em **Host path**, especifique o caminho de um dispositivo na instância de host.

         1. Em **Permissões**, selecione uma ou mais permissões para serem aplicadas ao dispositivo. As permissões disponíveis são **LER**, **GRAVAR** e **MKNOD**.

      1. Em **Tmpfs**, escolha **Adicionar tmpfs** para adicionar uma montagem `tmpfs`.

   1. 
**nota**  
O registro em logs do Firelens deve ser feito em um contêiner dedicado. Para configurar o registro em log do Firelens:  
Em cada contêiner, exceto seu contêiner dedicado do Firelens, defina o **Driver de registro em log** como `awsfirelens`
Em seu contêiner Firelens, defina a **Configuração Firelens - opcional** e a **Configuração de registro em log - *opcional*** para o destino de registro em log.

      Na seção **Configuração Direlens - opcional**:
**Importante**  
AWS Batch impõe o modo `host` de rede em tarefas Amazon ECS não MNP e não Fargate. [O usuário-raiz é necessário](https://github.com/aws/aws-for-fluent-bit/blob/mainline/troubleshooting/debugging.md#amazon-ecs-firelens-root-is-required) para o Amazon ECS Firelens. Ao executar tarefas que usam o modo de rede `host`, a Amazon ECS aconselha a não executar contêineres usando o usuário raiz (UID 0) para [melhor segurança](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#network_mode). Portanto, todos os trabalhos não MNP e não Fargate ECS com log Firelens não atenderão às melhores práticas de segurança.

      1. Para **Tipo**, escolha `fluentd` ou `fluentbit`. 

      1. Em **Opções**, insira o name/value par da opção. Você pode adicionar mais **Opções** usando **Opção adicionada**.

   1.  Na seção **Configuração de registro em log - *opcional***:

      1. Em **Driver de log**, escolha o driver de log a ser usado. [Para obter mais informações sobre os drivers de log disponíveis, LogConfiguration consulte:LogDriver.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-logDriver)
**nota**  
Por padrão, o driver de log `awslogs` é usado.

      1. Em **Opções**, escolha **Adicionar opção** para adicionar uma opção. Insira um par nome-valor e então escolha **Adicionar opção**.

      1. Em **Segredos**, escolha **Adicionar segredo**. Insira um par nome-valor e escolha **Adicionar segredo** para adicionar um segredo.
**dica**  
[Para obter mais informações, consulte: LogConfiguration SecretOptions.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

   1. Em **Pontos de montagem - *opcional***, escolha **Adicionar pontos de montagem** para adicionar pontos de montagem para volumes de dados. Você deve especificar o volume de origem e o caminho do contêiner. 

   1. Em **Segredos - *opcional***, escolha **Adicionar segredo** para adicionar um segredo. Em seguida, insira um par nome-valor e escolha **Adicionar segredo**.
**dica**  
[Para obter mais informações, consulte: LogConfiguration SecretOptions.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

   1. Em **Ulimits - *opcional***, escolha **Adicionar ulimit** para adicionar um valor de `ulimits` ao contêiner. Insira os valores de **Nome**, **Limite flexível**, e **Limite rígido** e, em seguida, escolha **Adicionar ulimit**.

   1. Em **Dependências - *opcional***, escolha **Adicionar dependências de contêiner**. Escolha o nome do contêiner e seu estado para determinar quando o contêiner é iniciado.

1. Se você tiver apenas um contêiner configurado, deverá escolher **Adicionar contêiner** e concluir a configuração do novo contêiner. Caso contrário, escolha **Avançar** para revisar. 