

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

# Definições de trabalho
<a name="job_definitions"></a>

AWS Batch as definições de tarefas especificam como as tarefas devem ser executadas. Embora cada tarefa deva fazer referência a uma definição de tarefa, muitos parâmetros que são especificados na definição de tarefa podem ser substituídos em runtime. 

Alguns dos atributos especificados em uma definição de tarefa incluem:
+ Qual imagem de docker usar com o contêiner em seu trabalho.
+ Quantos v CPUs e quanta memória usar com o contêiner.
+ O comando que o contêiner deve executar quando iniciado.
+ Quais (se houver alguma) variáveis de ambiente devem ser passadas para o contêiner quando iniciado.
+ Todos os volumes de dados que devem ser usados com o contêiner.
+ Qual função do IAM (se houver) que seu trabalho deve usar para obter AWS permissões.

**Topics**
+ [Criar uma definição de tarefa de nó único](create-job-definition.md)
+ [Criar uma definição de trabalho paralelo de vários nós](create-multi-node-job-def.md)
+ [Modelo de definição de trabalho que usa ContainerProperties](job-definition-template.md)
+ [Crie definições de trabalho usando EcsProperties](multi-container-jobs.md)
+ [Usar o driver de log awslogs.](using_awslogs.md)
+ [Especificar dados confidenciais](specifying-sensitive-data.md)
+ [Autenticação de registro privado para trabalhos](private-registry.md)
+ [Volumes Amazon EFS](efs-volumes.md)
+ [Exemplo de definição de trabalhos](example-job-definitions.md)

# Criar uma definição de tarefa de nó único
<a name="create-job-definition"></a>

Antes de executar trabalhos em AWS Batch, você deve criar uma definição de trabalho. Esse processo varia ligeiramente entre trabalhos em paralelo de nó único e de vários nós. Este tópico aborda especificamente como criar uma definição de tarefa para uma AWS Batch tarefa que não seja uma tarefa paralela de vários nós (também conhecida como *agendamento em grupo*).

Você pode criar uma definição de trabalho em paralelo de vários nós nos recursos do Amazon Elastic Container Service. Para obter mais informações, consulte [Criar uma definição de trabalho paralelo de vários nós](create-multi-node-job-def.md). 

**Topics**
+ [Criar uma definição de trabalho de nó único nos recursos do Amazon EC2](create-job-definition-EC2.md)
+ [Criar uma definição de trabalho de nó único nos recursos do Fargate](create-job-definition-Fargate.md)
+ [Criar uma definição de trabalho de nó único nos recursos do Amazon EKS](create-job-definition-eks.md)
+ [Criar uma definição de trabalho de nó único com vários contêineres nos recursos do Amazon EC2](create-job-definition-single-node-multi-container.md)

# Criar uma definição de trabalho de nó único nos recursos do Amazon EC2
<a name="create-job-definition-EC2"></a>

Conclua as etapas a seguir para criar uma definição de trabalho com um único nó 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 o Região da AWS a ser usado.

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 **Configuração da plataforma EC2**, desative o processamento de **Ativar paralelo de vários nós**.

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

1. (Opcional) Em **Tempo Limite de Execução**, 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. (Opcional) Ative a **Prioridade de Agendamento**. Insira um valor de prioridade de agendamento entre 0 e 100. Valores mais altos têm maior prioridade.

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

1. (Opcional) Em **Repetir 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. (Opcional) Expanda **Tags** e então, escolha **Adicionar Tag** para adicionar tags ao recurso. Insira uma chave e um valor opcional e então escolha **Adicionar tag**.

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

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

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

   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 (\$1), dois pontos (:), barras (/) e sinais de número (\$1). 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 **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/ \$1cmd](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. (Opcional) Para a **função Execution**, especifique uma função do IAM que conceda aos agentes de contêiner do Amazon ECS permissão para fazer chamadas de AWS API em seu nome. Esse atributo usa perfis do IAM do Amazon ECS para tarefas. Para obter mais informações, consulte [Perfis do IAM para execução de tarefa do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) no *Guia do desenvolvedor do Amazon Elastic Container Service*. 

   1. Para a **configuração do Job Role**, escolha um papel do IAM que tenha permissões para AWS APIs o. Esse atributo usa perfis do IAM do Amazon ECS para tarefas. Para mais informações, consulte [Funções do IAM para Tarefas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) no *Guia de Desenvolvedor Amazon Elastic Container Service*.
**nota**  
Somente funções que tenham o relacionamento de confiança **Função da tarefa do Amazon Elastic Container Service** são mostradas aqui. Para obter mais informações sobre a criação de uma função do IAM para seus AWS Batch trabalhos, consulte [Como criar uma função e uma política do IAM para suas tarefas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role) no *Amazon Elastic Container Service Developer Guide*.

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. Na seção **Configuração de Ambiente**:

   1. Para **v CPUs**, insira o número de v CPUs a ser reservado para o contêiner. Esse parâmetro é mapeado para `CpuShares` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API remota do Docker](https://docs.docker.com/engine/api/v1.38/) e a opção `--cpu-shares` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Cada vCPU equivale a 1.024 compartilhamentos de CPU. Você deve especificar pelo menos uma vCPU.

   1. Em **Memória**, insira o limite de memória disponível para o contêiner. Caso tente exceder a quantidade memória especificada aqui, o contêiner será interrompido. Esse parâmetro é mapeado para `Memory` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API Remota Docker](https://docs.docker.com/engine/api/v1.38/) e para a opção `--memory` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Você deve especificar pelo menos 4 MiB de memória para uma tarefa.
**nota**  
Para maximizar o uso dos recursos, priorize a memória para trabalhos de um tipo específico de instância. Para obter mais informações, consulte [Gerenciamento de memória de recursos de computação](memory-management.md).

   1. Em **Número de GPUs**, escolha o número de a GPUs ser reservado para o contêiner.

   1. (Opcional) Em **Variáveis de Ambiente**, escolha **Adicionar Variável de Ambiente** para adicionar variáveis de ambiente como pares de nome/valor. Essas variáveis serão passadas para o contêiner.

   1. (Opcional) Em **Segredos**, escolha **Adicionar segredo** para adicionar segredos como pares de nome-valor. Esses segredos são expostos no contêiner. [Para obter mais informações, consulte: LogConfiguration SecretOptions.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

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

1. Na seção **Configuração do Linux**:

   1. Para **Usuário**, insira o nome do usuário a ser usado dentro do contêiner. Esse parâmetro é mapeado para `User` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API remota do Docker](https://docs.docker.com/engine/api/v1.38/) e a opção `--user` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Opcional) Para oferecer ao contêiner de trabalho permissões elevadas na instância do host (semelhante ao usuário `root`), arraste o controle deslizante **Privilegiado** para a direita. Esse parâmetro é mapeado para `Privileged` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API remota do Docker](https://docs.docker.com/engine/api/v1.38/) e a opção `--privileged` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Opcional) Ative **Ativar processo init** para executar um processo `init` dentro do contêiner. Este processo encaminha sinais e colhe processos.

1. (Opcional) Na seção **Configuração do sistema de arquivos**:

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

   1. Para **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. [Para obter mais informações, consulte:swappinessLinuxParameters.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LinuxParameters.html#Batch-Type-LinuxParameters-swappiness)

   1. (Opcional) Expanda **Configuração adicional**.

   1. (Opcional) Para **Tmpfs**, escolha **Adicionar tmpfs** para adicionar uma montagem `tmpfs`.

   1. (Opcional) 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. (Opcional) Para **Configuração de volumes**, escolha **Adicionar volume** para criar uma lista de volumes a serem passados para o contêiner. Insira **Nome** e **Caminho de origem** para o volume e escolha **Adicionar volume**. Você também pode optar por ativar o **Habilitar EFS**.

   1. (Opcional) Em **Pontos de montagem**, escolha **Adicionar configuração de 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. Esses pontos de montagem são passados para o Docker daemon em uma instância de contêiner. Você também pode optar por tornar o volume **Somente para leitura**.

   1. (Opcional) Para **Configuração de ulimits**, 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. Na seção **Propriedades da tarefa**:

   1. Em **Função de execução - condicional**, escolha uma função para permitir que os 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. (Opcional) Na seção **Configuração de registro**:

   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. Escolha **Próxima página**.

1. Para a **Revisão de Definição de Tarefa**, revise as etapas de configuração. Se precisar fazer alterações, escolha **Edit** (Editar). Quando terminar, escolha **Criar Definição de Trabalho**.

# Criar uma definição de trabalho de nó único nos recursos do Fargate
<a name="create-job-definition-Fargate"></a>

Conclua as etapas a seguir para criar uma definição de tarefa de nó único nos AWS Fargate recursos.

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

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 superior, 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 **Tipo de orquestração**, escolha **Fargate**. Para obter mais informações, consulte [Ambientes de computação Fargate](fargate.md).

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

1. (Opcional) Em **Tempo Limite de Execução**, 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. (Opcional) Ative a **Prioridade de Agendamento**. Insira um valor de prioridade de agendamento entre 0 e 100. Valores mais altos têm maior prioridade sobre valores mais baixos.

1. (Opcional) Expanda **Tags** e então, escolha **Adicionar Tag** para adicionar tags ao recurso. Ative **Propagar tags** para propagar tags do trabalho e da definição do trabalho.

1. Na seção **Configuração da plataforma Fargate**:

   1. Para a **plataforma Runtime**, escolha a arquitetura do ambiente de computação.

   1. Em **Família do sistema operacional**, escolha o sistema operacional do ambiente de computação.

   1. Em **Arquitetura da CPU**, escolha a arquitetura vCPU.

   1. Para **Versão da plataforma Fargate**, insira `LATEST` ou uma versão específica do ambiente de runtime.

   1. (Opcional) Ative a opção **Atribuir IP público**para atribuir um endereço IP público a uma interface de rede de tarefas do Fargate. Para um trabalho que é executado em uma sub-rede privada para enviar tráfego de saída para a Internet, a sub-rede privada exige que um gateway NAT seja anexado para rotear solicitações para a Internet. Ao fazer isso, você poderá extrair imagens de contêineres. Para obter mais informações, consulte [Rede de tarefas do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) no *Guia do desenvolvedor do Serviço Amazon Elastic Container*.

   1. (Opcional) Em **Armazenamento temporário**, insira a quantidade de armazenamento temporário a ser alocada para a tarefa. A quantidade de armazenamento temporário deve estar entre 21 GiB e 200 GiB. Por padrão, 20 GiB de armazenamento temporário são alocados se você não inserir um valor.
**nota**  
O armazenamento temporário requer a versão da plataforma Fargate 1.4 ou posterior.

   1. Para **a função Execution**, especifique uma função do IAM que conceda ao contêiner do Amazon ECS e aos agentes do Fargate permissão para AWS fazer chamadas de API em seu nome. Esse atributo usa perfis do IAM Amazon ECS para funcionalidade de tarefa. Para obter mais informações, incluindo pré-requisitos de configuração, consulte [Perfis do IAM para execução de tarefa do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) no *Guia do desenvolvedor do Amazon Elastic Container Service*. 

   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. (Opcional) 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 escolher uma **Ação** ou escolher **Remover avaliação na saída**.

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

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

   1. Para **Imagem**, escolha a imagem do Docker a ser usada em seu trabalho. Por padrão, imagens no registro Docker Hub estarã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, minúsculas, números, hifens (-), sublinhados (\$1), dois pontos (:), pontos (.), barras (/) e jogos da velha (\$1). 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 **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/ \$1cmd](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. (Opcional) Adicione parâmetros à definição do trabalho como mapeamentos de nome-valor para substituir os padrões de definição do trabalho. Para adicionar um parâmetro:

      1. Em **Parâmetros**, escolha **Adicionar parâmetros**, insira um par nome-valor e então escolha **Adicionar parâmetro**.
**Importante**  
Se você escolher **Adicionar parâmetro**, deverá configurar pelo menos um parâmetro ou escolher **Remover parâmetro**

   1. Na seção **Configuração de Ambiente**:

      

      1. Para a **configuração da função Job**, escolha uma função do IAM que tenha permissões para AWS APIs o. Esse atributo usa perfis do IAM Amazon ECS para funcionalidade de tarefa. Para mais informações, consulte [Funções do IAM para Tarefas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) no *Guia de Desenvolvedor Amazon Elastic Container Service*.
**nota**  
Somente funções que tenham o relacionamento de confiança **Função da tarefa do Amazon Elastic Container Service** são mostradas aqui. Para obter mais informações sobre como criar uma função do IAM para seus AWS Batch trabalhos, consulte Como [criar uma função e uma política do IAM para suas tarefas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role) no *Amazon Elastic Container Service Developer Guide*.

      1. Para **v CPUs**, insira o número de v CPUs a ser reservado para o contêiner. Esse parâmetro é mapeado para `CpuShares` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API remota do Docker](https://docs.docker.com/engine/api/v1.38/) e a opção `--cpu-shares` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Cada vCPU equivale a 1.024 compartilhamentos de CPU. Você deve especificar pelo menos uma vCPU.

      1. Em **Memória**, insira o limite de memória que está disponível para o contêiner. Caso seu contêiner tente exceder a memória especificada, o mesmo será interrompido. Esse parâmetro é mapeado para `Memory` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API Remota Docker](https://docs.docker.com/engine/api/v1.38/) e para a opção `--memory` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Você deve especificar pelo menos 4 MiB de memória para uma tarefa.

         Se você usa o GuardDuty Runtime Monitoring, há uma pequena sobrecarga de memória para o agente GuardDuty de segurança. Portanto, o limite de memória deve incluir o tamanho do agente GuardDuty de segurança. Para obter informações sobre os limites de memória do GuardDuty Security Agent, consulte [Limites de CPU e memória](https://docs.aws.amazon.com/guardduty/latest/ug/prereq-runtime-monitoring-ecs-support.html#ecs-runtime-agent-cpu-memory-limits) no *Guia GuardDuty do usuário*. Para obter informações sobre as práticas recomendadas, consulte [Como corrigir erros de falta de memória nas minhas tarefas do Fargate após habilitar o Monitoramento de runtime](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-guard-duty-troubleshooting.html#memory-error), no *Guia do desenvolvedor do Amazon ECS*.
**nota**  
Para maximizar o uso dos recursos, priorize a memória para trabalhos de um tipo específico de instância. Para obter mais informações, consulte [Gerenciamento de memória de recursos de computação](memory-management.md).

   1. (Opcional) Em **Variáveis de Ambiente**, escolha **Adicionar Variável de Ambiente** para adicionar variáveis de ambiente como pares de nome/valor. Essas variáveis serão passadas para o contêiner.

   1. (Opcional) Em **Segredos**, escolha **Adicionar segredo** para adicionar segredos como pares de nome-valor. Esses segredos são expostos no contêiner. [Para obter mais informações, consulte: LogConfiguration SecretOptions.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

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

1. (Opcional) Na seção **Configuração do Linux**:

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

   1. Ative **Ativar processo init** para executar um processo init dentro do contêiner. Este processo encaminha sinais e colhe processos.

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

   1. (Opcional) Expanda **Configuração adicional**.

   1. Em **Configuração dos pontos de montagem**, escolha **Adicionar configuração de 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. Esses pontos de montagem são passados para o Docker daemon em uma instância de contêiner.

   1. Para **Configuração de volumes**, escolha **Adicionar volume** para criar uma lista de volumes a serem passados para o contêiner. Insira **Nome** e **Caminho de origem** para o volume, e então escolha **Adicionar volume**. 

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

      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. Na seção **Configuração do log**:

      1. (Opcional) 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. (Opcional) 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. (Opcional) Em **Segredos**, 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. Escolha **Próxima página**.

1. Para a **Revisão de Definição de Tarefa**, revise as etapas de configuração. Se precisar fazer alterações, escolha **Edit** (Editar). Quando terminar, escolha **Criar Definição de Trabalho**.

# Criar uma definição de trabalho de nó único nos recursos do Amazon EKS
<a name="create-job-definition-eks"></a>

Conclua as seguintes etapas para criar uma definição de trabalho de nó único no Amazon Elastic Kubernetes Service (Amazon EKS).

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

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 superior, escolha Região da AWS a ser usada.

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

1. Escolha **Criar**.

1. Em **Tipo de Orquestração**, escolha **Elastic Kubernetes Service (EKS)**.

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

1. (Opcional) Em **Tempo Limite de Execução**, 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. (Opcional) Ative a **Prioridade de Agendamento**. Insira um valor de prioridade de agendamento entre 0 e 100. Valores mais altos têm maior prioridade sobre valores mais baixos.

1. (Opcional) Expanda **Tags** e então, escolha **Adicionar Tag** para adicionar tags ao recurso.

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

1. Na seção **Propriedades pod EKS**:

   1. Em **Nome da Conta de Serviço**, insira uma conta que forneça uma identidade para processos executados em pod.

   1. Ative a **rede Host** para usar o modelo de rede Kubernetes pod e abrir uma porta de recepção para conexões de entrada. Desative essa configuração somente para comunicações de saída.

   1. Em **Política DNS**, escolha uma das opções a seguir:
      + **Sem Valor (Nulo)**: o pod ignora as configurações DNS do ambiente Kubernetes.
      + **Padrão**: o pod herda a configuração de resolução de nomes do nó onde for executado.
**nota**  
Se uma política DNS não for especificada, o **Padrão** não será a política DNS padrão. Em vez disso, **ClusterFirst**é usado.
      + **ClusterFirst**— Qualquer consulta de DNS que não corresponda ao sufixo do domínio de cluster configurado é encaminhada para o servidor de nomes upstream herdado do nó. 
      + **ClusterFirstWithHostNet**— Use se a **rede Host** estiver ativada.

   1. (Opcional) Para **Volumes**, selecione **Adicionar volume** e, em seguida:

      1. Adicione um **Nome** para seu volume.

      1. (Opcional) Adicione o **Caminho do host** para o diretório no host. 

      1. (Opcional) Adicione um **Meio** e um **Limite de tamanho** para configurar um [Kubernetes emptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir).

      1. (Opcional) Forneça um **Nome secreto** para o pod e se o segredo é **Opcional**.

      1. (Opcional) Defina um **Nome de declaração** para anexar uma [Declaração de volume persistente](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) do Kubernetes ao pod, e se ela é **Somente leitura**.

   1. (Opcional) Em **Rótulos de Pod**, escolha **Adicionar Rótulos de Pod** e então, insira um par nome-valor. 
**Importante**  
O prefixo de um rótulo de pod não pode conter `kubernetes.io/`, `k8s.io/` ou `batch.amazonaws.com/`.

   1. (Opcional) Para **Anotações do pod**, escolha **Adicionar anotações** e insira um par nome-valor. 
**Importante**  
O prefixo para anotação de pod não pode conter `kubernetes.io/`, `k8s.io/` ou `batch.amazonaws.com/`.

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

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

      1. Em **Nome**, insira um nome exclusivo para o contêiner. O nome deve começar com uma letra ou número e pode conter até 63 caracteres. Pode conter letras minúsculas, maiúsculas, números e hífens (-).

      1. Para **Imagem**, escolha a imagem do Docker a ser usada em seu trabalho. Por padrão, imagens no registro Docker Hub estarão disponíveis. Você também pode especificar outros repositórios com `repository-url/image:tag`. O nome pode ter até 255 caracteres. Pode conter letras maiúsculas, minúsculas, números, hifens (-), sublinhados (\$1), dois pontos (:), pontos (.), barras (/) e jogos da velha (\$1). Esse parâmetro é mapeado para `Image` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API remota Docker](https://docs.docker.com/engine/api/v1.38/) e do 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. (Opcional) Em **Política de Extração de Imagem**, escolha quando as imagens serão puxadas.

      1. (Opcional) Em **Comando**, insira um comando JSON para passar para o contêiner.

      1. (Opcional) Em **Argumentos**, insira argumentos a serem transmitidos ao contêiner. Caso um argumento não seja fornecido, o comando de imagem de contêiner será usado.

   1. (Opcional) Você pode adicionar parâmetros a definição do trabalho como mapeamentos de nome-valor para substituir padrões da definição da tarefa. Para adicionar um parâmetro:

      1. Em **Parâmetros**, insira um par nome-valor e então, escolha **Adicionar Parâmetro**.
**Importante**  
Se escolher **Adicionar Parâmetro**, deverá configurar pelo menos um parâmetro, ou escolher **Remover Parâmetro**

   1. Na seção **Configuração de Ambiente**:

      1. Para **v CPUs**, insira o número de v CPUs a ser reservado para o contêiner. Esse parâmetro é mapeado para `CpuShares` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API remota do Docker](https://docs.docker.com/engine/api/v1.38/) e a opção `--cpu-shares` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Cada vCPU equivale a 1.024 compartilhamentos de CPU. Você deve especificar pelo menos uma vCPU.

      1. Em **Memória**, insira o limite de memória disponível para o contêiner. Caso seu contêiner tente exceder a memória especificada, o mesmo será interrompido. Esse parâmetro é mapeado para `Memory` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API Remota Docker](https://docs.docker.com/engine/api/v1.38/) e para a opção `--memory` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Você deve especificar pelo menos 4 MiB de memória para uma tarefa.
**nota**  
Para maximizar o uso dos recursos, priorize a memória para trabalhos de um tipo específico de instância. Para obter mais informações, consulte [Gerenciamento de memória de recursos de computação](memory-management.md).

   1. (Opcional) Em **Variáveis de Ambiente**, escolha **Adicionar Variável de Ambiente** para adicionar variáveis de ambiente como pares de nome/valor. Essas variáveis serão passadas para o contêiner.

   1. (Opcional) Em **Montagem de Volume**:

      1. Escolha **Adicionar Montagem de Volume**.

      1. Insira um **Nome** e, em seguida, um **Caminho de Montagem** no contêiner onde o volume estiver montado. Insira **SubPath**a para especificar um subcaminho dentro do volume referenciado em vez de sua raiz. 

      1. Escolha **Somente Leitura** para remover permissões de registro no volume.

      1. Escolha **Adicionar Montagem de Volume**.

   1. (Opcional) Em **Executar como Usuário**, insira uma ID de usuário para executar o processo do contêiner.
**nota**  
A ID do usuário deve existir na imagem para que o contêiner seja executado.

   1. (Opcional) Em **Executar como Grupo**, insira uma ID de grupo para executar o tempo de processamento runtime do contêiner.
**nota**  
A ID do grupo deve existir na imagem para que o contêiner seja executado.

   1. (Opcional) Para conceder ao contêiner de trabalho permissões elevadas na instância do host (semelhante ao usuário `root`), arraste o slider **Privilegiado** para a direita. Esse parâmetro é mapeado para `Privileged` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API remota do Docker](https://docs.docker.com/engine/api/v1.38/) e a opção `--privileged` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Opcional) Ative o **Sistema de Arquivamento Raiz Somente para Leitura** para remover o acesso de registro ao sistema de arquivamento raiz.

   1. (Opcional) Ative **Executar como Não raiz** para executar contêineres em pod como usuário não raiz.
**nota**  
Caso a **Execução como Não Raiz** esteja ligada, o kubelet valida a imagem em runtime para verificar se a mesma não será executada como UID 0. 

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

1. Para a **Revisão de Definição de Tarefa**, revise as etapas de configuração. Se precisar fazer alterações, escolha **Edit** (Editar). Quando terminar, escolha **Criar Definição de Trabalho**.

# 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).

   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 (\$1), dois pontos (:), barras (/) e sinais de número (\$1). 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/ \$1cmd](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. 

# Criar uma definição de trabalho paralelo de vários nós
<a name="create-multi-node-job-def"></a>

Antes de executar trabalhos em AWS Batch, você deve criar uma definição de trabalho. Esse processo varia ligeiramente entre trabalhos em paralelo de nó único e de vários nós. Este tópico aborda especificamente como criar uma definição de tarefa para uma tarefa paralela de AWS Batch vários nós (também conhecida como *agendamento em grupo*). Para obter mais informações, consulte [Trabalhos em paralelo de vários nós](multi-node-parallel-jobs.md). 

**nota**  
AWS O Fargate não oferece suporte a trabalhos paralelos de vários nós.

**Topics**
+ [Tutorial: criar uma definição de trabalho em paralelo de vários nós nos recursos do Amazon EC2](multi-node-job-def-ec2.md)

# Tutorial: criar uma definição de trabalho em paralelo de vários nós nos recursos do Amazon EC2
<a name="multi-node-job-def-ec2"></a>

Para criar uma definição de trabalho paralelo de vários nós nos recursos do Amazon Elastic Compute Cloud (Amazon EC2).

**nota**  
Para criar uma definição de trabalho de *nó único*, consulte [Criar uma definição de trabalho de nó único nos recursos do Amazon EC2](create-job-definition-EC2.md).

**Para criar uma definição de trabalho em paralelo de vários nós nos 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, selecione o Região da AWS a ser usado.

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

1. Escolha **Criar**.

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

1. Em **Habilitar paralelo de vários nós**, ative o paralelo de vários nós.

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

1. (Opcional) Em **Execution timeout**, especifique o número máximo de segundos permitidos para as execuções das tentativas de trabalho. Se uma tentativa exceder o tempo limite, ela será interrompida e passada para um status `FAILED`. Para obter mais informações, consulte [Tempos limite de trabalho](job_timeouts.md).

1. (Opcional) Ative a **Prioridade de Agendamento**. Insira um valor de prioridade de agendamento entre 0 e 100. Valores mais altos têm maior prioridade sobre valores mais baixos.

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

1. (Opcional) Em **Repetir 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. (Opcional) Expanda **Tags** e então, escolha **Adicionar Tag** para adicionar tags ao recurso. Insira uma chave e um valor opcional e, em seguida, selecione **Add tag**. Você também pode ativar a opção **Propagate tags** para propagá-las do trabalho e da definição de trabalho para a tarefa do Amazon ECS.

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

1. Em **Number of nodes**, insira o número total de nós a serem usados em sua tarefa.

1. Em **Main node**, insira o índice do nó a ser usado para o nó principal. O índice do nó principal padrão é `0`.

1. Em **Instance Type**, selecione um tipo de instância.
**nota**  
O tipo de instância que você escolher se aplica a todos os nós.

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. Na seção **Node ranges**:

   1. Selecione **Add node range**. Isso cria uma seção **Node range**.

   1. Em **Target nodes**, especifique o intervalo para o seu grupo de nós usando a anotação `range_start:range_end`.

      Você pode criar até cinco intervalos de nós para os nós especificados para seu trabalho. Os intervalos de nós usam o valor do índice para um nó e o índice do nó começa em 0. Certifique-se de que o valor do índice final do intervalo do seu grupo final de nós seja um a menos do que o número de nós que você especificou. Por exemplo, suponha que você especificou 10 nós e deseja usar um único grupo de nós. Então, seu intervalo final é 9.

   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`. O nome pode ter até 225 caracteres. Pode conter letras maiúsculas e minúsculas, números, hifens (-), sublinhados (\$1), dois pontos (:), barras (/) e sinais de número (\$1). 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 completa`registry/repository[:tag]` ou `registry/repository[@digest]` (por exemplo, `public.ecr.aws/registry_alias/my-web-app:latest`).
      + As imagens nos repositórios do Amazon ECR usam a convenção de `registry/repository[:tag]` nomenclatura 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 **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/ \$1cmd](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. Para **v CPUs**, especifique o número de v CPUs a ser reservado para o contêiner. Esse parâmetro é mapeado para `CpuShares` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API remota do Docker](https://docs.docker.com/engine/api/v1.38/) e a opção `--cpu-shares` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Cada vCPU equivale a 1.024 compartilhamentos de CPU. Você deve especificar pelo menos uma vCPU.

   1. Para **Memória**, especifique o limite rígido (em MiB) de memória a ser apresentado ao contêiner do trabalho. Caso seu contêiner tente exceder a memória especificada, o mesmo será interrompido. Esse parâmetro é mapeado para `Memory` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API Remota Docker](https://docs.docker.com/engine/api/v1.38/) e para a opção `--memory` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Você deve especificar pelo menos 4 MiB de memória para uma tarefa.
**nota**  
Para maximizar a utilização de recursos, você pode fornecer aos seus trabalhos o máximo de memória possível para um determinado tipo de instância. Para obter mais informações, consulte [Gerenciamento de memória de recursos de computação](memory-management.md).

   1. (Opcional) Em **Número de GPUs**, especifique o número de usos do GPUs seu trabalho. O trabalho é executado em um contêiner com o número especificado de GPUs itens fixados nesse contêiner.

   1. (Opcional) Para a **função Job**, você pode especificar uma função do IAM que forneça ao contêiner em seu trabalho permissões para usar AWS APIs o. Esse atributo usa perfis do IAM Amazon ECS para funcionalidade de tarefa. Para obter mais informações, consulte [IAM Roles for Tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) no *Guia do desenvolvedor do Amazon Elastic Container Service*.
**nota**  
Para trabalhos que são executados nos recursos do Fargate, é necessário um perfil de trabalho.
**nota**  
Somente funções que tenham o relacionamento de confiança **Função da tarefa do Amazon Elastic Container Service** são mostradas aqui. Para obter mais informações sobre a criação de uma função do IAM para seus AWS Batch trabalhos, consulte [Como criar uma função e uma política do IAM para suas tarefas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role) no *Amazon Elastic Container Service Developer Guide*.

   1. (Opcional) Para a **função Execution**, especifique uma função do IAM que conceda aos agentes de contêiner do Amazon ECS permissão para fazer chamadas de AWS API em seu nome. Esse atributo usa perfis do IAM Amazon ECS para funcionalidade de tarefa. Para obter mais informações, consulte [Perfis do IAM para execução de tarefa do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) no *Guia do desenvolvedor do Amazon Elastic Container Service*. 

1. (Opcional) Expanda **Configuração adicional**:

   1. Em **Environment variables**, escolha **Adicionar Variável de Ambiente** para adicionar variáveis de ambiente como pares de nome e valor. Essas variáveis serão passadas para o contêiner.

   1. Para a **configuração da função** de Job, você pode especificar uma função do IAM que forneça ao contêiner em seu trabalho permissões para usar AWS APIs o. Esse atributo usa perfis do IAM Amazon ECS para funcionalidade de tarefa. Para obter mais informações, consulte [IAM Roles for Tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) no *Guia do desenvolvedor do Amazon Elastic Container Service*.
**nota**  
Para trabalhos que são executados nos recursos do Fargate, é necessário um perfil de trabalho.
**nota**  
Somente funções que tenham o relacionamento de confiança **Função da tarefa do Amazon Elastic Container Service** são mostradas aqui. Para obter mais informações sobre como criar um perfil do IAM para os trabalhos do seu AWS Batch , consulte [Como criar um perfil do IAM e uma política para suas tarefas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role) no *Guia do desenvolvedor do Amazon Elastic Container Service*.

   1. Para **a função Execution**, especifique uma função do IAM que conceda aos agentes de contêiner do Amazon ECS permissão para fazer chamadas de AWS API em seu nome. Esse atributo usa perfis do IAM Amazon ECS para funcionalidade de tarefa. Para obter mais informações, consulte [Perfis do IAM para execução de tarefa do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) no *Guia do desenvolvedor do Amazon Elastic Container Service*.

1. Na seção **Configuração de segurança**:

   1. (Opcional) Para oferecer ao contêiner da tarefa privilégios elevados na instância do host (semelhante ao usuário `root`), selecione **Privileged**. Esse parâmetro é mapeado para `Privileged` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API remota do Docker](https://docs.docker.com/engine/api/v1.38/) e a opção `--privileged` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Opcional) Para **Usuário**, insira o nome do usuário a ser usado dentro do contêiner. Esse parâmetro é mapeado para `User` na seção [Criar um Contêiner](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) da [API remota do Docker](https://docs.docker.com/engine/api/v1.38/) e a opção `--user` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Opcional) Em **Segredos**, escolha **Adicionar segredo** para adicionar segredos como pares de nome-valor. Esses segredos são expostos no contêiner. [Para obter mais informações, consulte:SecretOptionsLogConfiguration.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

1. Na seção **Configuração do Linux**:

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

   1. (Opcional) **Ative o processo init** para executar um processo `init` dentro do contêiner. Este processo encaminha sinais e colhe processos.

   1. Para **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 padrão será 60. [Para obter mais informações, consulte:swappinessLinuxParameters.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LinuxParameters.html#Batch-Type-LinuxParameters-swappiness)

   1. (Opcional) 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. (Opcional) Em **Pontos de montagem**, escolha **Adicionar configuração de 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. Esses pontos de montagem são passados para o Docker daemon em uma instância de contêiner. Você também pode optar por tornar o volume **somente para leitura**.

1. (Opcional) Para **Configuração de ulimits**, 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. (Opcional) Para **Configuração de volumes**, escolha **Adicionar volume** para criar uma lista de volumes a serem passados para o contêiner. Insira **Nome** e **Caminho de origem** para o volume e escolha **Adicionar volume**. Você também pode optar por ativar o **Habilitar EFS**.

1. (Opcional) Para **Tmpfs**, escolha **Adicionar tmpfs** para adicionar uma montagem `tmpfs`.

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

   1. Em **Função de execução - condicional**, escolha uma função para permitir que os 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. 
**Importante**  
Para usar o **Comando de execução ECS**, seu ambiente computacional deve atender às [considerações do ambiente computacional para trabalhos paralelos de vários nós](mnp-ce.md).

      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. (Opcional) Na seção **Configuração de registro**:

   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:SecretOptionsLogConfiguration.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

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

1. Para a **Revisão de Definição de Tarefa**, revise as etapas de configuração. Se precisar fazer alterações, escolha **Edit** (Editar). Quando terminar, escolha **Criar Definição de Trabalho**.

# Modelo de definição de trabalho que usa ContainerProperties
<a name="job-definition-template"></a>

Veja um modelo de definição de trabalho vazio que inclui um só contêiner. É possível usá-lo para criar sua definição de tarefa, que pode ser salva em um arquivo e usada com a AWS CLI `--cli-input-json` opção. Para obter mais informações sobre esses parâmetros, consulte [JobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_JobDefinition.html).

**nota**  
Você pode gerar um modelo de definição de trabalho de contêiner único com o seguinte comando AWS CLI:  

```
$ aws batch register-job-definition --generate-cli-skeleton
```

```
{
    "jobDefinitionName": "",
    "type": "container",
    "parameters": {
        "KeyName": ""
    },
    "schedulingPriority": 0,
    "containerProperties": {
        "image": "",
        "vcpus": 0,
        "memory": 0,
        "command": [
            ""
        ],
        "jobRoleArn": "",
        "executionRoleArn": "",
        "volumes": [
            {
                "host": {
                    "sourcePath": ""
                },
                "name": "",
                "efsVolumeConfiguration": {
                    "fileSystemId": "",
                    "rootDirectory": "",
                    "transitEncryption": "ENABLED",
                    "transitEncryptionPort": 0,
                    "authorizationConfig": {
                        "accessPointId": "",
                        "iam": "DISABLED"
                    }
                }
            }
        ],
        "environment": [
            {
                "name": "",
                "value": ""
            }
        ],
        "mountPoints": [
            {
                "containerPath": "",
                "readOnly": true,
                "sourceVolume": ""
            }
        ],
        "readonlyRootFilesystem": true,
        "privileged": true,
        "ulimits": [
            {
                "hardLimit": 0,
                "name": "",
                "softLimit": 0
            }
        ],
        "user": "",
        "instanceType": "",
        "resourceRequirements": [
            {
                "value": "",
                "type": "MEMORY"
            }
        ],
        "linuxParameters": {
            "devices": [
                {
                    "hostPath": "",
                    "containerPath": "",
                    "permissions": [
                        "WRITE"
                    ]
                }
            ],
            "initProcessEnabled": true,
            "sharedMemorySize": 0,
            "tmpfs": [
                {
                    "containerPath": "",
                    "size": 0,
                    "mountOptions": [
                        ""
                    ]
                }
            ],
            "maxSwap": 0,
            "swappiness": 0
        },
        "logConfiguration": {
            "logDriver": "syslog",
            "options": {
                "KeyName": ""
            },
            "secretOptions": [
                {
                    "name": "",
                    "valueFrom": ""
                }
            ]
        },
        "secrets": [
            {
                "name": "",
                "valueFrom": ""
            }
        ],
        "networkConfiguration": {
            "assignPublicIp": "DISABLED"
        },
        "fargatePlatformConfiguration": {
            "platformVersion": ""
        }
    },
    "nodeProperties": {
        "numNodes": 0,
        "mainNode": 0,
        "nodeRangeProperties": [
            {
                "targetNodes": "",
                "container": {
                    "image": "",
                    "vcpus": 0,
                    "memory": 0,
                    "command": [
                        ""
                    ],
                    "jobRoleArn": "",
                    "executionRoleArn": "",
                    "volumes": [
                        {
                            "host": {
                                "sourcePath": ""
                            },
                            "name": "",
                            "efsVolumeConfiguration": {
                                "fileSystemId": "",
                                "rootDirectory": "",
                                "transitEncryption": "DISABLED",
                                "transitEncryptionPort": 0,
                                "authorizationConfig": {
                                    "accessPointId": "",
                                    "iam": "ENABLED"
                                }
                            }
                        }
                    ],
                    "environment": [
                        {
                            "name": "",
                            "value": ""
                        }
                    ],
                    "mountPoints": [
                        {
                            "containerPath": "",
                            "readOnly": true,
                            "sourceVolume": ""
                        }
                    ],
                    "readonlyRootFilesystem": true,
                    "privileged": true,
                    "ulimits": [
                        {
                            "hardLimit": 0,
                            "name": "",
                            "softLimit": 0
                        }
                    ],
                    "user": "",
                    "instanceType": "",
                    "resourceRequirements": [
                        {
                            "value": "",
                            "type": "MEMORY"
                        }
                    ],
                    "linuxParameters": {
                        "devices": [
                            {
                                "hostPath": "",
                                "containerPath": "",
                                "permissions": [
                                    "WRITE"
                                ]
                            }
                        ],
                        "initProcessEnabled": true,
                        "sharedMemorySize": 0,
                        "tmpfs": [
                            {
                                "containerPath": "",
                                "size": 0,
                                "mountOptions": [
                                    ""
                                ]
                            }
                        ],
                        "maxSwap": 0,
                        "swappiness": 0
                    },
                    "logConfiguration": {
                        "logDriver": "awslogs",
                        "options": {
                            "KeyName": ""
                        },
                        "secretOptions": [
                            {
                                "name": "",
                                "valueFrom": ""
                            }
                        ]
                    },
                    "secrets": [
                        {
                            "name": "",
                            "valueFrom": ""
                        }
                    ],
                    "networkConfiguration": {
                        "assignPublicIp": "DISABLED"
                    },
                    "fargatePlatformConfiguration": {
                        "platformVersion": ""
                    }
                }
            }
        ]
    },
    "retryStrategy": {
        "attempts": 0,
        "evaluateOnExit": [
            {
                "onStatusReason": "",
                "onReason": "",
                "onExitCode": "",
                "action": "RETRY"
            }
        ]
    },
    "propagateTags": true,
    "timeout": {
        "attemptDurationSeconds": 0
    },
    "tags": {
        "KeyName": ""
    },
    "platformCapabilities": [
        "EC2"
    ],
    "eksProperties": {
        "podProperties": {
            "serviceAccountName": "",
            "hostNetwork": true,
            "dnsPolicy": "",
            "containers": [
                {
                    "name": "",
                    "image": "",
                    "imagePullPolicy": "",
                    "command": [
                        ""
                    ],
                    "args": [
                        ""
                    ],
                    "env": [
                        {
                            "name": "",
                            "value": ""
                        }
                    ],
                    "resources": {
                        "limits": {
                            "KeyName": ""
                        },
                        "requests": {
                            "KeyName": ""
                        }
                    },
                    "volumeMounts": [
                        {
                            "name": "",
                            "mountPath": "",
                            "readOnly": true
                        }
                    ],
                    "securityContext": {
                        "runAsUser": 0,
                        "runAsGroup": 0,
                        "privileged": true,
                        "readOnlyRootFilesystem": true,
                        "runAsNonRoot": true
                    }
                }
            ],
            "volumes": [
                {
                    "name": "",
                    "hostPath": {
                        "path": ""
                    },
                    "emptyDir": {
                        "medium": "",
                        "sizeLimit": ""
                    },
                    "secret": {
                        "secretName": "",
                        "optional": true
                    }
                }
            ]
        }
    }
}
```

# Parâmetros de definição de trabalho para ContainerProperties
<a name="job_definition_parameters"></a>

Definições de trabalho que usam [https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html) são divididas em várias partes:
+ O nome da definição do trabalho
+ O tipo de definição do trabalho
+ Os padrões do espaço reservado para substituição de parâmetros
+ As propriedades de contêiner para o trabalho
+ As propriedades do Amazon EKS para a definição do trabalho que são necessárias para trabalhos executados em recursos do Amazon EKS
+ As propriedades do nó que são necessárias para um trabalho paralelo de vários nós
+ As funcionalidades da plataforma necessárias para trabalhos executados em recursos do Fargate
+ Os detalhes padrão de propagação de tag da definição do trabalho
+ A estratégia de repetição padrão para a definição do trabalho
+ A prioridade de agendamento padrão para a definição do trabalho
+ As tags padrão para a definição do trabalho
+ O tempo limite padrão para a definição do trabalho

**Contents**
+ [Nome da definição do trabalho](#jobDefinitionName)
+ [Tipo](#type)
+ [Parameters](#parameters)
+ [Propriedades do contêiner](#containerProperties)
+ [Amazon EKS properties](#job-definition-parameters-eks-properties)
+ [Funcionalidades da plataforma](#job-definition-parameters-platform-capabilities)
+ [Propagar tags](#job-definition-parameters-propagate-tags)
+ [Propriedades de nó](#nodeProperties)
+ [Estratégia de repetição](#retryStrategy)
+ [Prioridade de agendamento](#job-definition-parameters-schedulingPriority)
+ [Tags](#job-definition-parameters-tags)
+ [Tempo limite](#timeout)

## Nome da definição do trabalho
<a name="jobDefinitionName"></a>

`jobDefinitionName`  
Ao registrar uma definição de trabalho, você especifica um nome. Os nomes podem ter até 128 caracteres. Pode conter letras minúsculas, maiúsculas, números, hifens e (-) e sublinhados (\$1). A primeira definição de trabalho que está registrada com esse nome recebe uma revisão de 1. Todas as definições de trabalho subsequentes registrados com esse nome recebem um número de revisão incremental.   
Tipo: Sequência  
Obrigatório: Sim

## Tipo
<a name="type"></a>

`type`  
Ao registrar uma definição de trabalho, você especifica o tipo de trabalho. Se o trabalho for executado em recursos do Fargate, então `multinode` não será compatível. Para obter mais informações sobre trabalho em paralelo com vários nós, consulte [Criar uma definição de trabalho paralelo de vários nós](create-multi-node-job-def.md).  
Tipo: Sequência  
Valores válidos: `container` \$1 `multinode`  
Obrigatório: Sim

## Parameters
<a name="parameters"></a>

`parameters`  
Quando você envia um trabalho, pode especificar os parâmetros que devem substituir os marcadores ou os parâmetros de definição de trabalho padrão. Os parâmetros nas solicitações de envio de trabalho têm precedência sobre os padrões em uma definição de trabalho. Isso significa que você pode usar a mesma definição de trabalho para vários outros que usam o mesmo formato. Você também pode alterar programaticamente os valores no comando no momento do envio.  
Tipo: Mapa de string para string  
Obrigatório: Não  
Ao registrar uma definição de trabaho, você pode usar espaços reservados para substituição de parâmetros no campo `command` de propriedades de contêiner de um trabalho. A sintaxe é a seguinte.  

```
"command": [
    "ffmpeg",
    "-i",
    "Ref::inputfile",
    "-c",
    "Ref::codec",
    "-o",
    "Ref::outputfile"
]
```
No exemplo acima, há os espaços reservados de substituição de parâmetro `Ref::inputfile`, `Ref::codec` e `Ref::outputfile` no comando. Você pode usar o objeto `parameters` na definição do trabalho para configurar valores padrão para esses espaços reservados. Por exemplo, para definir um padrão para o espaço reservado `Ref::codec`, você especificará o seguinte na definição do trabalho:  

```
"parameters" : {"codec" : "mp4"}
```
Quando essa definição de trabalho for enviada para execução, o argumento `Ref::codec` no comando para o contêiner será substituído pelo valor padrão, `mp4`.

## Propriedades do contêiner
<a name="containerProperties"></a>

Ao registrar uma definição de trabalho você deve especificar uma lista de propriedades de contêiner que são passadas para o daemon do Docker em uma instância de contêiner quando o trabalho é feito. As seguintes propriedades de contêiner são permitidas em uma definição de trabalho. Para trabalhos de nó único, essas propriedades de contêiner são configuradas no nível de definição do trabalho. Para trabalhos em paralelo de vários nós, as propriedades de contêiner são definidas no nível de [Propriedades de nó](#nodeProperties) para cada grupo de nós.

`command`  
O comando que é passado para o contêiner. 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 parâmetro `CMD` da Docker, consulte [https://docs.docker.com/engine/reference/builder/\$1cmd](https://docs.docker.com/engine/reference/builder/#cmd).  

```
"command": ["string", ...]
```
Tipo: Matriz de strings  
Obrigatório: Não

`environment`  
As variáveis de ambiente a serem passadas para um contêiner. Esse parâmetro é mapeado para `Env` 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 a opção `--env` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).  
Não recomendamos que você use variáveis de ambiente de texto simples para informações confidenciais, como dados de credenciais.
Variáveis de ambiente não podem começar com `AWS_BATCH`. Essa convenção de nomenclatura é reservada para variáveis definidas pelo serviço AWS Batch.
Tipo: Matriz de pares de valores-chave  
Obrigatório: Não    
`name`  
O nome da variável de ambiente.  
Tipo: Sequência  
Obrigatório: Sim, quando `environment` for usado.  
`value`  
O valor da variável de ambiente.  
Tipo: Sequência  
Obrigatório: Sim, quando `environment` for usado.

```
"environment" : [
    { "name" : "envName1", "value" : "envValue1" },
    { "name" : "envName2", "value" : "envValue2" }
]
```

`executionRoleArn`  
Ao registrar uma definição de trabalho, você pode especificar um perfil do IAM. O perfil fornece ao agente de contêiner do Amazon ECS permissões para chamar as ações da API especificadas nas políticas colaboradoras em seu nome. Para trabalhos executados em recursos do Fargate, você deve fornecer um perfil de execução. Para obter mais informações, consulte [AWS Batch Função de execução do IAM](execution-IAM-role.md).  
Tipo: Sequência  
Obrigatório: Não

`fargatePlatformConfiguration`  
A configuração da plataforma para trabalhos que são executados nos recursos do Fargate. Os trabalhos que são executados nos recursos do EC2 não devem especificar esse parâmetro.  
Tipo: Objeto [FargatePlatformConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_FargatePlatformConfiguration.html)  
Obrigatório: Não    
`platformVersion`  
Use a versão da plataforma do AWS Fargate para os trabalhos ou `LATEST` para usar uma versão recente e aprovada da plataforma do AWS Fargate.  
Tipo: Sequência  
Padrão: `LATEST`  
Obrigatório: Não

`image`  
A imagem usada para iniciar um trabalho. Esta string é passada diretamente para o daemon do Docker. As imagens no registro do Docker Hub estão disponíveis por padrão. Você também pode especificar outros repositórios com `repository-url/image:tag`. São permitidos até 255 letras (caixa alta e baixa), números, hifens, sublinhados, dois pontos, ponto, barras e sinais numéricos. 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/).  
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 no ARM só podem ser executadas em recursos de computação baseados no ARM.
+ As imagens em repositórios públicos do Amazon ECR usam as convenções de nomenclatura completa`registry/repository[:tag]` ou `registry/repository[@digest]` (por exemplo, `public.ecr.aws/registry_alias/my-web-app:latest`).
+ As imagens nos repositórios do Amazon ECR usam a convenção de `registry/repository:[tag]` nomenclatura completa. Por exemplo, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`.
+ As imagens em repositórios oficiais no Docker Hub usam um único nome (por exemplo, `ubuntu` ou `mongo`).
+ As imagens em outros repositórios no 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`).
Tipo: Sequência  
Obrigatório: Sim

`instanceType`  
O tipo de instância a ser usado para trabalhos paralelos de vários nós. Atualmente, todos os grupos de nós em um trabalho em paralelo de vários nós devem usar o mesmo tipo de instância. Esse parâmetro não é válido para trabalhos de contêiner de nó único ou para trabalhos que são executados em recursos Fargate.  
Tipo: Sequência  
Obrigatório: Não

`jobRoleArn`  
Ao registrar uma definição de trabalho, você pode especificar um perfil do IAM. A função fornece ao contêiner de trabalho permissões para chamar as ações da API especificadas em suas políticas colaboradoras em seu nome. Para obter mais informações, consulte [Perfis do IAM para tarefas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) no *Guia do desenvolvedor do Amazon Elastic Container Service*.  
Tipo: Sequência  
Obrigatório: Não

`linuxParameters`  
Modificações específicas do Linux que são aplicadas ao contêiner, como detalhes para mapeamentos do dispositivo.  

```
"linuxParameters": {
    "devices": [
        {
            "hostPath": "string",
            "containerPath": "string",
            "permissions": [
                "READ", "WRITE", "MKNOD"
            ]
        }
    ],
    "initProcessEnabled": true|false,
    "sharedMemorySize": 0,
    "tmpfs": [
        {
            "containerPath": "string",
            "size": integer,
            "mountOptions": [
                "string"
            ]
        }
    ],
    "maxSwap": integer,
    "swappiness": integer
}
```
Tipo: Objeto [LinuxParameters](https://docs.aws.amazon.com/batch/latest/APIReference/API_LinuxParameters.html)  
Obrigatório: Não    
`devices`  
Lista de dispositivos mapeados para o contêiner. Esse parâmetro é mapeado para `Devices` 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 na opção `--device` de [execução do docker](https://docs.docker.com/engine/reference/run/).  
Este parâmetro não é aplicável a trabalhos executados em recursos do Fargate.
Tipo: Matriz de objetos [Device](https://docs.aws.amazon.com/batch/latest/APIReference/API_Device.html)  
Obrigatório: Não    
`hostPath`  
Caminho onde está o dispositivo disponível na instância de contêiner host.  
Tipo: Sequência  
Obrigatório: Sim  
`containerPath`  
Caminho em que o dispositivo é exposto no contêiner. Se isso não for especificado, o dispositivo será exposto ao mesmo caminho do host.  
Tipo: Sequência  
Obrigatório: Não  
`permissions`  
Permissões para o dispositivo no contêiner. Se não for especificado, as permissões serão definidas como `READ`, `WRITE` e `MKNOD`.  
Tipo: Matriz de strings  
Obrigatório: Não  
Valores válidos: `READ` \$1 `WRITE` \$1 `MKNOD`  
`initProcessEnabled`  
Se verdadeiro, execute um processo `init` dentro do contêiner que encaminha sinais e colhe processos. Esse parâmetro mapeia para a opção `--init` para [execução do docker](https://docs.docker.com/engine/reference/run/). Este parâmetro requer a versão 1.25 ou posterior da Docker Remote API ou posterior em sua instância de contêiner. Para verificar a versão da Docker Remote API na instância de contêiner, faça login na instância de contêiner e execute o seguinte comando: `sudo docker version | grep "Server API version"`  
Tipo: Booliano  
Obrigatório: Não  
`maxSwap`  
Especifica a quantidade total de memória de troca (em MiB) que um trabalho pode usar. Esse parâmetro será convertido na opção `--memory-swap` para [execução do docker](https://docs.docker.com/engine/reference/run/) em que o valor é a soma da memória do contêiner mais o valor de `maxSwap`. Para obter mais informações, consulte [Detalhes do `--memory-swap`](https://docs.docker.com/config/containers/resource_constraints/#--memory-swap-details) na documentação do Docker.  
Se um valor `maxSwap` de `0` for especificado, o contêiner não usará a troca. Os valores aceitos são `0` ou qualquer número inteiro positivo. Se o parâmetro `maxSwap` for omitido, o contêiner usará a configuração de troca para a instância de contêiner na qual ele está sendo executado. Um valor `maxSwap` deve ser definido para que o parâmetro `swappiness` seja usado.  
Este parâmetro não é aplicável a trabalhos executados em recursos do Fargate.
Tipo: Inteiro  
Obrigatório: Não  
`sharedMemorySize`  
O valor do tamanho (em MiB) do volume `/dev/shm`. Esse parâmetro mapeia para a opção `--shm-size` para [execução do docker](https://docs.docker.com/engine/reference/run/).  
Este parâmetro não é aplicável a trabalhos executados em recursos do Fargate.
Tipo: Inteiro  
Obrigatório: Não  
`swappiness`  
É possível usar isso para ajustar o comportamento de troca de memória de um contêiner. Um valor `swappiness` de `0` fará com que a troca não ocorra, a menos que seja absolutamente necessário. Um valor `swappiness` de `100` fará com que as páginas sejam trocadas de forma agressiva. Os valores aceitos são números inteiros entre `0` e `100`. Se o parâmetro `swappiness` não for especificado, será usado um valor padrão de `60`. Se nenhum valor for especificado para `maxSwap`, esse parâmetro será ignorado. Se `maxSwap` estiver definido como 0, o contêiner não usará troca. Esse parâmetro mapeia para a opção `--memory-swappiness` para [execução do docker](https://docs.docker.com/engine/reference/run/).  
Considere o seguinte ao usar uma configuração de troca de contêiner.  
+ O espaço de troca deve ser habilitado e alocado na instância de contêiner para os contêineres usarem.
**nota**  
As AMIs otimizadas do Amazon ECS não têm a troca habilitada por padrão. É necessário habilitar a troca na instância para usar esse recurso. Para obter mais informações, consulte [Volumes de troca de armazenamento de instâncias](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-store-swap-volumes.html) no *Manual do usuário do Amazon EC2* ou [Como alocar memória para funcionar como espaço de troca em uma instância do Amazon EC2 usando uma partição no meu disco rígido?](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-memory-swap-file/).
+ Os parâmetros de espaço de troca só são suportados para definições de trabalho usando recursos do EC2.
+ Se os parâmetros `maxSwap` e `swappiness` forem omitidos de uma definição de trabalho, cada contêiner terá um valor de `swappiness` padrão de 60. Além disso, o uso total de troca tem um limite de duas vezes a reserva de memória do contêiner.
Este parâmetro não é aplicável a trabalhos executados em recursos do Fargate.
Tipo: Inteiro  
Obrigatório: Não  
`tmpfs`  
O caminho do contêiner, as opções de montagem e o tamanho da montagem do tmpfs.  
Tipo: Matriz de objetos [Tmpfs](https://docs.aws.amazon.com/batch/latest/APIReference/API_Tmpfs.html)  
Este parâmetro não é aplicável a trabalhos executados em recursos do Fargate.
Obrigatório: Não    
`containerPath`  
O caminho absoluto do arquivo no contêiner onde o volume tmpfs é montado.  
Tipo: Sequência  
Obrigatório: Sim  
`mountOptions`  
A lista de opções de montagem do volume tmpfs.  
Valores válidos: "`defaults`" \$1 "`ro`" \$1 "`rw`" \$1 "`suid`" \$1 "`nosuid`" \$1 "`dev`" \$1 "`nodev`" \$1 "`exec`" \$1 "`noexec`" \$1 "`sync`" \$1 "`async`" \$1 "`dirsync`" \$1 "`remount`" \$1 "`mand`" \$1 "`nomand`" \$1 "`atime`" \$1 "`noatime`" \$1 "`diratime`" \$1 "`nodiratime`" \$1 "`bind`" \$1 "`rbind`" \$1 "`unbindable`" \$1 "`runbindable`" \$1 "`private`" \$1 "`rprivate`" \$1 "`shared`" \$1 "`rshared`" \$1 "`slave`" \$1 "`rslave`" \$1 "`relatime`" \$1 "`norelatime`" \$1 "`strictatime`" \$1 "`nostrictatime`" \$1 "`mode`" \$1 "`uid`" \$1 "`gid`" \$1 "`nr_inodes`" \$1 "`nr_blocks`" \$1 "`mpol`"  
Tipo: Matriz de strings  
Obrigatório: Não  
`size`  
O tamanho (em MiB) do volume tmpfs.  
Tipo: Inteiro  
Obrigatório: Sim

`logConfiguration`  
A especificação de configuração do log para o contêiner.  
Esse parâmetro é mapeado `LogConfig` 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 na opção `--log-driver` de [execução do docker](https://docs.docker.com/engine/reference/run/). Por padrão, os contêineres usam o mesmo driver de registro que o daemon do Docker usa. No entanto, o contêiner pode usar um driver de registro diferente do daemon do Docker especificando um driver de log com esse parâmetro na definição de contêiner. Para usar um driver de registro diferente para um contêiner, o sistema de registro deve ser configurado na instância de contêiner ou em outro servidor de registro para fornecer opções de registro remoto. Para obter mais informações sobre as opções para drivers de log compatíveis diferentes, consulte [Configure logging drivers](https://docs.docker.com/engine/admin/logging/overview/) na documentação do Docker.  
No momento, o AWS Batch é compatível com um subconjunto dos drivers de registro em log disponíveis para o daemon do Docker (mostrado no tipo de dados [LogConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html)).
Este parâmetro requer a versão 1.18 da Docker Remote API ou posterior em sua instância de contêiner. Para verificar a versão da Docker Remote API na instância de contêiner, faça login na instância de contêiner e execute o seguinte comando: `sudo docker version | grep "Server API version"`   

```
"logConfiguration": {
    "devices": [
        {
            "logDriver": "string",
            "options": {
                "optionName1" : "optionValue1",
                "optionName2" : "optionValue2"
            }
            "secretOptions": [
              {
                  "name" : "secretOptionName1",
                  "valueFrom" : "secretOptionArn1"
              },
              {
                  "name" : "secretOptionName2",
                  "valueFrom" : "secretOptionArn2"
              }
            ]
        }
    ]
}
```
Tipo: Objeto [LogConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html)  
Obrigatório: Não    
`logDriver`  
O driver de log a ser usado para o contêiner. Por padrão, o AWS Batch ativa o driver de log `awslogs`. Os valores válidos listados para esse parâmetro são drivers de log com os quais o agente de contêiner do Amazon ECS pode se comunicar por padrão.  
Esse parâmetro é mapeado `LogConfig` 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 na opção `--log-driver` de [execução do docker](https://docs.docker.com/engine/reference/run/). Por padrão, os trabalhos usam o mesmo driver de registro que o daemon do Docker usa. No entanto, o trabalho pode usar um driver de registro diferente do daemon do Docker especificando um driver de log com esse parâmetro na definição do trabalho. Se você quiser especificar outro driver de registro em log para um trabalho, o sistema de log deve ser configurado na instância de contêiner no ambiente de computação. Ou, como alternativa, configure-o em outro servidor de log para fornecer opções de registro remoto. Para obter mais informações sobre as opções para drivers de log compatíveis diferentes, consulte [Configure logging drivers](https://docs.docker.com/engine/admin/logging/overview/) na documentação do Docker.  
AWS Batch atualmente é compatível com um subconjunto de drivers de registro disponíveis para o daemon do Docker. Os drivers de log adicionais podem estar disponíveis em versões futuras do agente de contêiner do Amazon ECS.
Os drivers de log compatíveis são `awslogs`, `fluentd`, `gelf`, `json-file`, `journald`, `logentries`, `syslog` e `splunk`.  
Os trabalhos em execução nos recursos do Fargate são restritos aos drivers de log `awslogs` e `splunk`.
Este parâmetro requer a versão 1.18 da Docker Remote API ou posterior em sua instância de contêiner. Para verificar a versão da Docker Remote API na instância de contêiner, faça login na instância de contêiner e execute o seguinte comando: `sudo docker version | grep "Server API version"`  
O agente de contêiner do Amazon ECS que é executado em uma instância de contêiner deve registrar os drivers de registro que estão disponíveis nessa instância com o variável de ambiente `ECS_AVAILABLE_LOGGING_DRIVERS`. Caso contrário, os contêineres colocados nessa instância não poderão usar essas opções de configuração de log. Para obter mais informações, consulte [Configuração do Agente de Contêineres do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) no *Guia do desenvolvedor do Amazon Elastic Container Service*.  
`awslogs`  
Especifica o driver de registro em log do Amazon CloudWatch Logs. Para obter mais informações, consulte [Usar o driver de log awslogs.](using_awslogs.md) e [Driver de registro do Amazon CloudWatch Logs](https://docs.docker.com/config/containers/logging/awslogs/) na documentação do Docker.  
`fluentd`  
Especifica o driver de registro do Fluentd. Para obter mais informações, incluindo uso e opções, consulte [Driver de registro Fluentd](https://docs.docker.com/config/containers/logging/fluentd/) na documentação do Docker.  
`gelf`  
Especifica o driver de registro Graylog Extended Format (GELF). Para obter mais informações, incluindo uso e opções, consulte [Driver de registro Graylog Extended Format](https://docs.docker.com/config/containers/logging/gelf/) na documentação do Docker.  
`journald`  
Especifica o driver de registro journald. Para obter mais informações, incluindo uso e opções, consulte [Driver de registro Journald](https://docs.docker.com/config/containers/logging/journald/) na documentação do Docker.  
`json-file`  
Especifica o driver de registro de arquivos JSON. Para obter mais informações, incluindo uso e opções, consulte [driver de registro de arquivo JSON](https://docs.docker.com/config/containers/logging/json-file/) na documentação do Docker.  
`splunk`  
Especifica o driver de registro do Splunk. Para obter mais informações, incluindo uso e opções, consulte [driver de registro do Splunk](https://docs.docker.com/config/containers/logging/splunk/) na documentação do Docker.  
`syslog`  
Especifica o driver de registro em log do syslog. Para obter mais informações, incluindo uso e opções, consulte [driver de registro de log do Syslog](https://docs.docker.com/config/containers/logging/syslog/) na documentação do Docker.
Tipo: Sequência  
Obrigatório: Sim  
Valores válidos: `awslogs` \$1 `fluentd` \$1 `gelf` \$1 `journald` \$1 `json-file` \$1 `splunk` \$1 `syslog`  
Se você tiver um driver personalizado não listado acima que você deseja que funcione no agente de contêiner do Amazon ECS, divida o projeto do agente de contêiner do Amazon ECS [disponível no GitHub](https://github.com/aws/amazon-ecs-agent) e personalize-o para funcionar com esse driver. Incentivamos você a enviar solicitações pull para alterações que você gostaria de ter incluído. No entanto, o Amazon Web Services atualmente não oferece suporte para solicitações a execução de cópias modificadas desse software.  
`options`  
Opções de configuração de log para enviar para um driver de log personalizado para o contêiner.  
Este parâmetro requer a versão 1.19 da Docker Remote API ou posterior em sua instância de contêiner.  
Tipo: Mapa de string para string  
Obrigatório: Não  
`secretOptions`  
Um objeto que representa o segredo a ser passado para a configuração de log. Para obter mais informações, consulte [Especificar dados confidenciais](specifying-sensitive-data.md).  
Tipo: Matriz de objeto  
Obrigatório: Não    
`name`  
O nome da opção do driver de log a ser definida no trabalho.  
Tipo: Sequência  
Obrigatório: Sim  
`valueFrom`  
O nome do recurso da Amazon (ARN) do segredo a ser exposto à configuração de log do contêiner. Os valores compatíveis são o ARN completo do segredo do Secrets Manager ou o ARN completo do parâmetro na SSM Parameter Store.  
Se o parâmetro do Parameter Store do SSM existir na mesma região Região da AWS que está sendo iniciada, você poderá usar o ARN completo ou o nome do parâmetro. Se o parâmetro existir em uma Região diferente, o ARN completo deverá ser especificado.
Tipo: Sequência  
Obrigatório: Sim

`memory`  
*Este parâmetro está obsoleto, use `resourceRequirements` alternativamente.*  
O número de MiB de memória a ser reservado para o contêiner.  
Como exemplo de como usar `resourceRequirements`, se sua definição de trabalho contiver uma sintaxe semelhante à seguinte.  

```
"containerProperties": {
  "memory": 512
}
```
A sintaxe equivalente usando `resourceRequirements` é a seguinte.  

```
"containerProperties": {
  "resourceRequirements": [
    {
      "type": "MEMORY",
      "value": "512"
    }
  ]
}
```
Tipo: Inteiro  
Obrigatório: Sim

`mountPoints`  
Os pontos de montagem para volumes de dados no contêiner. Esse parâmetro é mapeado para `Volumes` 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 a opção `--volume` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).  

```
"mountPoints": [
                {
                  "sourceVolume": "string",
                  "containerPath": "string",
                  "readOnly": true|false
                }
              ]
```
Tipo: Matriz de objeto  
Obrigatório: Não    
`sourceVolume`  
O nome do volume a ser montado.  
Tipo: Sequência  
Obrigatório: Sim, quando `mountPoints` for usado.  
`containerPath`  
O caminho no contêiner no qual montar o volume de host.  
Tipo: Sequência  
Obrigatório: Sim, quando `mountPoints` for usado.  
`readOnly`  
Caso o valor seja `true`, o contêiner tem acesso somente leitura ao volume. Caso esse valor seja `false`, o contêiner pode gravar no volume.  
Tipo: Booliano  
Obrigatório: Não  
Padrão: Falso

`networkConfiguration`  
A configuração de rede para trabalhos que estão em execução nos recursos do Fargate. Os trabalhos que são executados nos recursos do EC2 não devem especificar esse parâmetro.  

```
"networkConfiguration": { 
   "assignPublicIp": "string"
}
```
Tipo: Matriz de objeto  
Obrigatório: Não    
`assignPublicIp`  
Indica se o trabalho tem um endereço IP público. Isso é necessário se o trabalho precisar de acesso externo à rede.  
Tipo: Sequência  
Valores válidos: `ENABLED` \$1 `DISABLED`  
Obrigatório: Não  
Padrão: `DISABLED`

`privileged`  
Quando esse parâmetro é verdadeiro, o contêiner recebe permissões elevadas na instância de contêiner host (semelhante ao usuário `root`). Esse parâmetro é mapeado para `Privileged` 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 a opção `--privileged` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Este parâmetro não é aplicável a trabalhos executados em recursos do Fargate. Não o forneça nem o especifique como falso.  

```
"privileged": true|false
```
Tipo: Booliano  
Obrigatório: Não

`readonlyRootFilesystem`  
Quando esse parâmetro é verdadeiro, o contêiner recebe acesso somente leitura ao sistema de arquivos raiz. Esse parâmetro é mapeado para `ReadonlyRootfs` 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 a opção `--read-only` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).  

```
"readonlyRootFilesystem": true|false
```
Tipo: Booliano  
Obrigatório: Não

`resourceRequirements`  
O tipo e a quantidade de um recurso a serem atribuídos a um contêiner. Os recursos suportados incluem `GPU`, `MEMORY` e `VCPU`.  

```
"resourceRequirements" : [
  {
    "type": "GPU",
    "value": "number"
  }
]
```
Tipo: Matriz de objeto  
Obrigatório: Não    
`type`  
O tipo de recurso a ser atribuído a um contêiner. Os recursos suportados incluem `GPU`, `MEMORY` e `VCPU`.  
Tipo: Sequência  
Obrigatório: Sim, quando `resourceRequirements` for usado.  
`value`  
A quantidade do recurso especificado a ser reservado para o contêiner. Os valores variam de acordo com o `type` especificado.    
Tipo=“GPU”  
O número de GPUs físicas a serem reservadas para o contêiner. O número de GPUs reservadas para todos os contêineres em um trabalho não deve exceder o número de GPUs disponíveis no recurso de computação no qual o trabalho é executado.  
Tipo=“MEMORY”  
O limite rígido (em MiB) de memória a ser apresentado ao contêiner. Caso tente exceder a memória especificada aqui, o contêiner será excluído. Esse parâmetro é mapeado `Memory` 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 na opção `--memory` de [execução do docker](https://docs.docker.com/engine/reference/run/). Você deve especificar pelo menos 4 MiB de memória para uma tarefa. Isso é necessário, mas pode ser especificado em vários lugares para trabalhos paralelos de vários nós (MNP). Ele deve ser especificado para cada nó pelo menos uma vez. Esse parâmetro é mapeado `Memory` 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 na opção `--memory` de [execução do docker](https://docs.docker.com/engine/reference/run/).  
Se você deseja maximizar a utilização de recursos fornecendo aos trabalhos o máximo de memória possível para um determinado tipo de instância, consulte [Gerenciamento de memória de recursos de computação](memory-management.md).
Para trabalhos executados em recursos do Fargate, `value` deve corresponder a um dos valores compatíveis. Além disso, os valores `VCPU` devem ser um dos valores compatíveis com esse valor de memória.      
<a name="Fargate-memory-vcpu"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/batch/latest/userguide/job_definition_parameters.html)  
type=“VCPU”  
O número de vCPUs reservado para o trabalho. Esse parâmetro é mapeado para `CpuShares` 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 a opção `--cpu-shares` para [execução do docker](https://docs.docker.com/engine/reference/run/). Cada vCPU equivale a 1.024 compartilhamentos de CPU. Para recursos do EC2, você deve especificar pelo menos uma vCPU. Isso é necessário, mas pode ser especificado em vários lugares. Ele deve ser especificado para cada nó pelo menos uma vez.  
Para trabalhos que são executados em recursos do Fargate, `value` deve corresponder a um dos valores compatíveis, e os valores `MEMORY` devem ser um dos valores compatíveis para esse valor de VCPU. Os valores compatíveis são 0,25, 0,5, 1, 2, 4, 8 e 16.  
O padrão para a cota de contagem de recursos de vCPU sob demanda do Fargate é 6 vCPUs. Para obter mais informações sobre cotas de serviço, consulte [AWS quotas](https://docs.aws.amazon.com/general/latest/gr/ecs-service.html#service-quotas-fargate) na *Referência geral da Amazon Web Services*.
Tipo: Sequência  
Obrigatório: Sim, quando `resourceRequirements` for usado.

`secrets`  
Os segredos do trabalho que são expostos como variáveis de ambiente. Para obter mais informações, consulte [Especificar dados confidenciais](specifying-sensitive-data.md).  

```
"secrets": [
    {
      "name": "secretName1",
      "valueFrom": "secretArn1"
    },
    {
      "name": "secretName2",
      "valueFrom": "secretArn2"
    }
    ...
]
```
Tipo: Matriz de objeto  
Obrigatório: Não    
`name`  
O nome da variável de ambiente que contém o segredo.  
Tipo: Sequência  
Obrigatório: Sim, quando `secrets` for usado.  
  
`valueFrom`  
O segredo a ser exposto ao contêiner. Os valores com suporte são o nome do recurso da Amazon (ARN) completo do segredo do Secrets Manager ou o ARN completo do parâmetro no SSM Parameter Store.  
Se o parâmetro do SSM Parameter Store existir na mesma Região da AWS do trabalho que está sendo iniciado, você poderá usar o ARN completo ou o nome do parâmetro. Se o parâmetro existir em uma Região diferente, o ARN completo deverá ser especificado.
Tipo: Sequência  
Obrigatório: Sim, quando `secrets` for usado.

`ulimits`  
Uma lista de valores `ulimits` a ser definida no contêiner. Esse parâmetro é mapeado para `Ulimits` 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 a opção `--ulimit` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).   

```
"ulimits": [
  {
    "name": string,
    "softLimit": integer,
    "hardLimit": integer
  }
  ...
]
```
Tipo: Matriz de objeto  
Obrigatório: Não    
`name`  
O `type` do `ulimit`.  
Tipo: Sequência  
Obrigatório: Sim, quando `ulimits` for usado.  
  
`hardLimit`  
O limite rígido do tipo `ulimit`.  
Tipo: Inteiro  
Obrigatório: Sim, quando `ulimits` for usado.  
  
`softLimit`  
O limite flexível do tipo `ulimit`.  
Tipo: Inteiro  
Obrigatório: Sim, quando `ulimits` for usado.  


`user`  
O nome de usuário a ser usado dentro do contêiner. Esse parâmetro é mapeado para `User` 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 a opção `--user` para [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).  

```
"user": "string"
```
Tipo: Sequência  
Obrigatório: Não

`vcpus`  
*Este parâmetro está obsoleto, use `resourceRequirements` alternativamente.*  
O número de vCPUs reservado para o contêiner.  
Como exemplo de como usar `resourceRequirements`, se sua definição de trabalho contiver linhas semelhantes a esta:  

```
"containerProperties": {
  "vcpus": 2
}
```
As linhas equivalentes usadas `resourceRequirements` são as seguintes.  

```
"containerProperties": {
  "resourceRequirements": [
    {
      "type": "VCPU",
      "value": "2"
    }
  ]
}
```
Tipo: Inteiro  
Obrigatório: Sim

`volumes`  
Ao registrar uma definição de trabalho, você pode especificar uma lista de volumes que são passados para o daemon do Docker em uma instância de contêiner. Os parâmetros a seguir são permitidos na propriedades de contêiner:  

```
"volumes": [
  {
    "name": "string",
    "host": {
      "sourcePath": "string"
    },
    "efsVolumeConfiguration": {
      "authorizationConfig": {
        "accessPointId": "string",
        "iam": "string"
      },
      "fileSystemId": "string",
      "rootDirectory": "string",
      "transitEncryption": "string",
      "transitEncryptionPort": number
    }
  }
]
```  
`name`  
O nome do volume. São permitidos até 255 letras (caixa alta e baixa), números, hífens e sublinhados. Este nome é referenciado no parâmetro `sourceVolume` da definição de contêiner `mountPoints`.  
Tipo: Sequência  
Obrigatório: Não  
`host`  
O conteúdo do parâmetro `host` determina se o seu volume de dados persiste na instância de contêiner host e onde ele é armazenado. Se o parâmetro `host` estiver vazio, o daemon do Docker atribuirá um caminho de host para o volume de dados. No entanto, não há garantia de que os dados persistirão após os contêineres associados a eles deixarem de ser executados.  
Este parâmetro não é aplicável a trabalhos executados em recursos do Fargate.
Tipo: Objeto  
Obrigatório: Não    
`sourcePath`  
O caminho na instância de contêiner host apresentada ao contêiner. Caso esse parâmetro esteja vazio, o daemon do Docker atribui um caminho host para você.  
Caso o parâmetro `host` contenha um local de arquivo `sourcePath`, o volume de dados persiste no local especificado na instância de contêiner host até você excluí-lo manualmente. Caso o valor `sourcePath` não exista na instância de contêiner do host, o daemon do Docker o criará. Caso o local exista, o conteúdo da pasta do caminho de origem é exportado.  
Tipo: Sequência  
Obrigatório: Não  
`efsVolumeConfiguration`  
Esse parâmetro é especificado quando você estiver usando um sistema de arquivos do Amazon Elastic File System para o armazenamento de tarefas. Para obter mais informações, consulte [Volumes Amazon EFS](efs-volumes.md).  
Tipo: Objeto  
Obrigatório: Não    
`authorizationConfig`  
Detalhes de configuração de autorização do sistema de arquivamento Amazon EFS.  
Tipo: Sequência  
Obrigatório: Não    
`accessPointId`  
O ID do ponto de acesso do Amazon EFS a ser usado. Se um ponto de acesso for especificado, o valor do diretório raiz especificado no `EFSVolumeConfiguration` deve ser omitido ou definido como. `/` Isso impõe o caminho definido no ponto de acesso EFS. Se um ponto de acesso for usado, a criptografia em trânsito deverá ser habilitada em `EFSVolumeConfiguration`. Para mais informações, consulte [Trabalhando com Pontos de Acesso Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) no *Guia de Usuário Amazon Elastic File System*.  
Tipo: Sequência  
Obrigatório: Não  
`iam`  
Se o perfil do IAM de trabalho do AWS Batch, estabelecido em uma definição de trabalho ao montar o sistema de arquivos do Amazon EFS, deve ou não ser usado. Em caso positivo, a criptografia de trânsito deve estar habilitada em `EFSVolumeConfiguration`. Se o parâmetro for omitido, o valor padrão `DISABLED` será usado. Para obter mais informações, consulte [Uso dos pontos de acesso do Amazon EFS](efs-volumes.md#efs-volume-accesspoints).  
Tipo: Sequência  
Valores válidos: `ENABLED` \$1 `DISABLED`  
Obrigatório: Não  
`fileSystemId`  
A ID do sistema de arquivamento Amazon EFS a ser usada.  
Tipo: string  
Obrigatório: Não  
`rootDirectory`  
O diretório dentro do sistema de arquivamento Amazon EFS a ser montado como diretório raiz dentro do host. Caso esse parâmetro seja omitido, a raiz do volume Amazon EFS será usada. Especificar `/` tem o mesmo efeito que omitir esse parâmetro. O tamanho máximo é de 4.096 caracteres.  
Se um ponto de acesso EFS for especificado em `authorizationConfig`, o parâmetro do diretório raiz deverá ser omitido ou definido para `/`. Isso impõe o caminho definido no ponto de acesso do Amazon EFS.
Tipo: Sequência  
Obrigatório: Não  
`transitEncryption`  
Determina se a criptografia deve ou não ser habilitada para dados do Amazon EFS em trânsito entre o host do Amazon ECS e o servidor do Amazon EFS. A criptografia de trânsito deverá ser habilitada caso a autorização IAM Amazon EFS for usada. Se o parâmetro for omitido, o valor padrão `DISABLED` será usado. Para mais informações, consulte [Criptografando Dados em Trânsito](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) no *Guia de Usuário Amazon Elastic File System*.  
Tipo: Sequência  
Valores válidos: `ENABLED` \$1 `DISABLED`  
Obrigatório: Não  
`transitEncryptionPort`  
A porta a ser usada ao enviar dados criptografados entre o host do Amazon ECS e o servidor do Amazon EFS. Caso não especifique uma porta de criptografia em trânsito, a estratégia de seleção de porta usada pelo assistente de montagem Amazon EFS será utilizada. O valor precisar estar compreendido entre 0 e 65.535. Para mais informações, consulte [Auxiliar de Montagem EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) no *Guia de Usuário Amazon Elastic File System*.  
Tipo: Inteiro  
Obrigatório: Não

## Amazon EKS properties
<a name="job-definition-parameters-eks-properties"></a>

Um objeto com diversas propriedades específicas de trabalhos baseados no Amazon EKS. Isso não pode ser especificado para definições de trabalho baseados no Amazon ECS.

`podProperties`  
As propriedades dos recursos do pod Kubernetes de um trabalho.  
Tipo: Objeto [EksPodProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html)  
Obrigatório: Não    
`containers`  
As propriedades do contêiner que é usado no pod do Amazon EKS.  
Tipo: Objeto [EksContainer](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainer.html)  
Obrigatório: Não    
`args`  
Uma matriz de argumentos para o ponto de entrada. Se isso não for especificado, o `CMD` da imagem do contêiner será usado. Isso corresponde ao membro `args` na parte do [Entrypoint](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#entrypoint) do [Pod](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/) em Kubernetes. As referências de variáveis de ambiente são expandidas usando o ambiente do contêiner.  
Se a variável de ambiente referenciada não existir, a referência no comando não será alterada. Por exemplo, se a referência for a "`$(NAME1)`" e a variável de ambiente `NAME1` não existir, a string de comando continuará a ser "`$(NAME1)`". `$$` será substituído por `$` e a string resultante não será expandida. Por exemplo, `$$(VAR_NAME)` é passado como `$(VAR_NAME)`, independentemente da variável de ambiente `VAR_NAME` existir ou não. Para obter mais informações, consulte [CMD](https://docs.docker.com/engine/reference/builder/#cmd) na *referência do Dockerfile* e [Definir um comando e argumentos para um pod](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/) na *Kubernetes documentação*.  
Tipo: Matriz de strings  
Obrigatório: Não  
`command`  
O ponto de entrada para o contêiner. Isso não é executado dentro de uma shell. Se isso não for especificado, o `ENTRYPOINT` da imagem do contêiner será usado. As referências de variáveis de ambiente são expandidas usando o ambiente do contêiner.  
Se a variável de ambiente referenciada não existir, a referência no comando não será alterada. Por exemplo, se a referência for a "`$(NAME1)`" e a variável de ambiente `NAME1` não existir, a string de comando continuará a ser "`$(NAME1)`". `$$` será substituído por `$` e a string resultante não será expandida. Por exemplo, `$$(VAR_NAME)` será passado como `$(VAR_NAME)` independentemente da variável de ambiente `VAR_NAME` existir ou não. O ponto de entrada não pode ser atualizado. Para obter mais informações, consulte [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/#entrypoint) na *referência do Dockerfile* e [Definir um comando e argumentos para um contêiner](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/) e [Entrypoint](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#entrypoint) na *Kubernetes documentação*.  
Tipo: Matriz de strings  
Obrigatório: Não  
`env`  
As variáveis de ambiente a serem passadas para um contêiner.  
Variáveis de ambiente não podem começar com "`AWS_BATCH`". Essa convenção de nomenclatura é reservada para as variáveis que o AWS Batch define.
Tipo: matriz de objetos [EKS ContainerEnvironmentVariable](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerEnvironmentVariable.html)  
Obrigatório: Não    
`name`  
O nome da variável de ambiente.  
Tipo: Sequência  
Obrigatório: Sim  
`value`  
O valor da variável de ambiente.  
Tipo: Sequência  
Obrigatório: Não  
`image`  
A imagem do Docker usada para iniciar um contêiner.  
Tipo: Sequência  
Obrigatório: Sim  
`imagePullPolicy`  
A política de extração de imagens para o contêiner. Os valores compatíveis são `Always`, `IfNotPresent` e `Never`. Por padrão, esse parâmetro é `IfNotPresent`. No entanto, se a tag `:latest` for especificada, o padrão será `Always`. Para obter mais informações, consulte [Atualizando imagens](https://kubernetes.io/docs/concepts/containers/images/#updating-images) na *Kubernetes documentação*.  
Tipo: Sequência  
Obrigatório: Não  
`name`  
O nome do contêiner. Se o nome não for especificado, o nome padrão "`Default`" será usado. Cada contêiner em um pod deve ter um nome exclusivo.  
Tipo: Sequência  
Obrigatório: Não  
`resources`  
O tipo e a quantidade de um recurso a serem atribuídos a um contêiner. Os recursos suportados incluem `memory`, `cpu` e `nvidia.com/gpu`. Para obter mais informações, consulte [Resource de recursos para pods e contêineres](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) na *Kubernetes documentação*.  
Tipo: Objeto [EksContainerResourceRequirements](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerResourceRequirements.html)  
Obrigatório: Não    
`limits`  
O tipo e a quantidade dos recursos a reservar para o contêiner. Os valores variam de acordo com o `name` especificado. Os recursos podem ser solicitados usando o `limits` ou os objetos do `requests`.    
memória  
O limite rígido de memória (em MiB) para o contêiner, usando inteiros, com um sufixo "Mi". Caso o container tente exceder a memória especificada, o contêiner será encerrado. Você deve especificar pelo menos 4 MiB de memória para um trabalho. `memory`pode ser especificada em `limits`, `requests` ou em ambos. Se `memory` for especificado nos dois lugares, o valor especificado em `limits` deverá ser igual ao valor especificado em `requests`.  
Para maximizar a utilização de recursos, forneça aos trabalhos o máximo de memória possível para o tipo de instância específico que você está usando. Para saber como, consulte [Gerenciamento de memória de recursos de computação](memory-management.md).  
cpu  
O número de CPUs reservado para o contêiner. Os valores devem ser um múltiplo par de `0.25`. `cpu` pode ser especificado em `limits`, `requests` ou em ambos. Se `cpu` for especificada em ambos, o valor especificado em `limits` deverá ser no mínimo igual ao valor especificado em `requests`.  
nvidia.com/gpu  
O número de GPUs reservado para o contêiner. Os valores devem ser um inteiro par. `memory` pode ser especificado em `limits`, `requests` ou em ambos. Se `memory` for especificado nos dois lugares, o valor especificado em `limits` deverá ser igual ao valor especificado em `requests`.
Tipo: Mapa de string para string  
Restrições de tamanho do valor: tamanho mínimo 1. Tamanho máximo de 256.  
Obrigatório: Não  
`requests`  
O tipo e a quantidade dos recursos a solicitar para o contêiner. Os valores variam de acordo com o `name` especificado. Os recursos podem ser solicitados usando o `limits` ou os objetos do `requests`.    
memória  
O limite rígido de memória (em MiB) para o contêiner, usando inteiros, com um sufixo "Mi". Caso o container tente exceder a memória especificada, o contêiner será encerrado. Você deve especificar pelo menos 4 MiB de memória para um trabalho. `memory`pode ser especificada em `limits`, `requests` ou em ambos. Se `memory` for especificado em ambos, o valor especificado em `limits` deverá ser igual ao valor especificado em `requests`.  
Se você deseja maximizar a utilização de recursos fornecendo aos trabalhos o máximo de memória possível para um determinado tipo de instância, consulte [Gerenciamento de memória de recursos de computação](memory-management.md).  
cpu  
O número de CPUs reservado para o contêiner. Os valores devem ser um múltiplo par de `0.25`. `cpu` pode ser especificado em `limits`, `requests` ou em ambos. Se `cpu` for especificada em ambos, o valor especificado em `limits` deverá ser no mínimo igual ao valor especificado em `requests`.  
nvidia.com/gpu  
O número de GPUs reservado para o contêiner. Os valores devem ser um inteiro par. `nvidia.com/gpu` pode ser especificado em `limits`, `requests` ou em ambos. Se `nvidia.com/gpu` for especificado em ambos, o valor especificado em `limits` deverá ser igual ao valor especificado em `requests`.
Tipo: Mapa de string para string  
Restrições de tamanho do valor: tamanho mínimo 1. Tamanho máximo de 256.  
Obrigatório: Não  
`securityContext`  
O contexto de segurança de um trabalho. Para obter mais informações, consulte [Configure um contexto de segurança para um pod ou contêiner](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) na *Kubernetes documentação*.  
Tipo: Objeto [EKSContainerSecurityContext](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerSecurityContext.html)  
Obrigatório: Não    
`privileged`  
Quando esse parâmetro é `true`, o contêiner recebe permissões elevadas na instância de contêiner host. O nível das permissões é semelhante às permissões do usuário `root`. O valor padrão é `false`. Esse parâmetro é mapeado para a `privileged` política nas [políticas de segurança do pod Privileged](https://kubernetes.io/docs/concepts/security/pod-security-policy/#privileged) na *Kubernetes documentação*.  
Tipo: Booliano  
Obrigatório: Não  
`readOnlyRootFilesystem`  
Quando esse parâmetro é `true`, o contêiner recebe acesso somente para leitura ao sistema de arquivos raiz. O valor padrão é `false`. Esse parâmetro é mapeado para a `ReadOnlyRootFilesystem` política nas [políticas de segurança do pod de sistemas de arquivos e volumes](https://kubernetes.io/docs/concepts/security/pod-security-policy/#volumes-and-file-systems) na *documentação Kubernetes*.  
Tipo: Booliano  
Obrigatório: Não  
`runAsGroup`  
Quando esse parâmetro é especificado, o contêiner é executado como o ID de grupo especificado (`gid`). Se esse parâmetro não for especificado, o padrão será o grupo que for especificado nos metadados da imagem. Esse parâmetro mapeia para `RunAsGroup` e `MustRunAs` política nas [políticas de segurança do pod de grupos e usuários](https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups) na *Kubernetes documentação*.  
Tipo: Long  
Obrigatório: Não  
`runAsNonRoot`  
Quando esse parâmetro é especificado, o contêiner é executado como um usuário com um valor de `uid` diferente de 0. Se esse parâmetro não for especificado, essa regra será imposta. Esse parâmetro mapeia para `RunAsUser` e `MustRunAsNonRoot` política nas [políticas de segurança do pod de grupos e usuários](https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups) na *Kubernetes documentação*.  
Tipo: Long  
Obrigatório: Não  
`runAsUser`  
Quando esse parâmetro é especificado, o contêiner é executado como o ID de usuário especificado (`uid`). Se esse parâmetro não for especificado, o padrão será o usuário que for especificado nos metadados da imagem. Esse parâmetro mapeia para `RunAsUser` e `MustRanAs` política nas [políticas de segurança do pod de grupos e usuários](https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups) na *Kubernetes documentação*.  
Tipo: Long  
Obrigatório: Não  
`volumeMounts`  
O volume é montado para um contêiner para um trabalho do Amazon EKS. Para obter mais informações sobre volumes e montagens de volumes em Kubernetes, consulte [Volumes](https://kubernetes.io/docs/concepts/storage/volumes/) na *Kubernetes documentação*.  
Tipo: Matriz de objetos [EKSContainerVolumeMount](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerVolumeMount.html)  
Obrigatório: Não    
`mountPath`  
O caminho no contêiner em que o volume está montado.  
Tipo: Sequência  
Obrigatório: Não  
`name`  
O nome do volume a ser montado. Isso deve corresponder ao nome de um dos volumes no pod.  
Tipo: Sequência  
Obrigatório: Não  
`readOnly`  
Caso o valor seja `true`, o contêiner tem acesso somente leitura ao volume. Caso contrário, o contêiner pode gravar no volume. O valor padrão é `false`.  
Tipo: Booliano  
Obrigatório: Não  
`dnsPolicy`  
A política de DNS para o pod. O valor padrão é `ClusterFirst`. Se o parâmetro `hostNetwork` não for especificado, o padrão será `ClusterFirstWithHostNet`. `ClusterFirst` indica que qualquer consulta ao DNS que não corresponda ao sufixo de domínio de cluster configurado será encaminhada para o servidor de nomes upstream herdado do nó. Se nenhum valor foi especificado para `dnsPolicy` na operação da API [RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html), nenhum valor será retornado para `dnsPolicy` pelas operações da API [DescribeJobDefinitions](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobDefinitions.html) ou [DescribeJobs](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobs.html). A configuração de especificação do pod conterá `ClusterFirst` ou `ClusterFirstWithHostNet`, dependendo do valor do parâmetro `hostNetwork`. Para obter mais informações, consulte [política Pod's DNS](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy) na *Kubernetes documentação*.  
Valores válidos: `Default` \$1 `ClusterFirst` \$1 `ClusterFirstWithHostNet`  
Tipo: Sequência  
Obrigatório: Não  
`hostNetwork`  
Indica se o pod usa o endereço IP da rede dos hosts. O valor padrão é `true`. Definir essa opção como `false` ativa o modelo de rede de pods Kubernetes. A maioria das cargas AWS Batch de trabalho é somente de saída e não requer a sobrecarga de alocação de IP para cada pod para conexões de entrada. Para obter mais informações, consulte [Espaços de nomes de Host](https://kubernetes.io/docs/concepts/security/pod-security-policy/#host-namespaces) e [rede de Pods](https://kubernetes.io/docs/concepts/workloads/pods/#pod-networking) na *Kubernetes documentação*.  
Tipo: Booliano  
Obrigatório: Não  
`serviceAccountName`  
O nome da conta de serviço que é usada para executar o pod. Para obter mais informações, consulte [Kubernetes contas de serviço](https://docs.aws.amazon.com/eks/latest/userguide/service-accounts.html) e [Configure uma conta de serviço Kubernetes para assumir um perfil do IAM](https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html) no *Amazon EKS User Guide* e [Configure contas de serviço para pods](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) na *Kubernetes documentação*.  
Tipo: Sequência  
Obrigatório: Não  
`volumes`  
Especifica os volumes para uma definição de trabalho que usa recursos do Amazon EKS.  
Tipo: Matriz de objetos [EksVolume](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksVolume.html)  
Obrigatório: Não    
emptyDir  
Especifica a configuração de um volume Kubernetes `emptyDir`. Um volume `emptyDir` é criado pela primeira vez quando um pod é atribuído a um nó. Ele existirá enquanto o pod estiver sendo executado nesse nó. O volume `emptyDir` está inicialmente vazio. Todos os contêineres no pod podem ler e gravar os arquivos no volume `emptyDir`. No entanto, o volume `emptyDir` pode ser montado no mesmo caminho ou em caminhos diferentes em cada contêiner. Quando um pod é removido de um nó por qualquer motivo, os dados no `emptyDir` são excluídos permanentemente. Para obter mais informações, consulte [emptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) na *Kubernetes documentação*.  
Tipo: Objeto [ekSemptyDir](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksEmptyDir.html)  
Obrigatório: Não    
medium  
A mídia para armazenar o volume. O valor padrão é uma string vazia, que usa o armazenamento do nó.    
""  
**(Padrão)** Usar o armazenamento em disco do nó.  
"Memory" (Memória)  
Usar o volume `tmpfs` que tem o suporte da RAM do nó. O conteúdo do volume é perdido quando o nó é reinicializado e qualquer armazenamento no volume é contabilizado no limite de memória do contêiner.
Tipo: Sequência  
Obrigatório: Não  
sizeLimit  
O tamanho máximo do volume. Por padrão, não há tamanho máximo definido.  
Tipo: Sequência  
Restrições de tamanho: tamanho mínimo 1. Tamanho máximo de 256.  
Obrigatório: Não  
hostPath  
Especifica a configuração de um volume Kubernetes `hostPath`. Um volume `hostPath` monta um arquivo ou diretório existente do sistema de arquivos do nó host no pod. Para obter mais informações, consulte [hostPath](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath) na *Kubernetes documentação*.  
Tipo: Objeto [EKSHostPath](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksHostPath.html)  
Obrigatório: Não    
path  
O caminho do arquivo ou diretório no host a ser montado em contêineres no pod.  
Tipo: Sequência  
Obrigatório: Não  
nome  
O nome do volume. O nome deve ser permitido como um nome de subdomínio do DNS. Para obter mais informações, consulte [Nomes de subdomínios DNS](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names) na *Kubernetes documentação*.  
Tipo: Sequência  
Obrigatório: Sim  
secret  
Especifica a configuração de um volume Kubernetes `secret`. Para obter mais informações, consulte [secret](https://kubernetes.io/docs/concepts/storage/volumes/#secret) na *Kubernetes documentação*.  
Tipo: Objeto [EksSecret](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksSecret.html)  
Obrigatório: Não    
optional  
Especifica se o segredo ou as chaves do segredo devem ser definidas.  
Tipo: Booliano  
Obrigatório: Não  
secretName  
O nome do segredo. O nome deve ser permitido como um nome de subdomínio do DNS. Para obter mais informações, consulte [Nomes de subdomínios DNS](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names) na *Kubernetes documentação*.  
Tipo: Sequência  
Obrigatório: Sim

## Funcionalidades da plataforma
<a name="job-definition-parameters-platform-capabilities"></a>

`platformCapabilities`  
As funcionalidades da plataforma necessárias pela definição do cargo. Se nenhum valor for especificado, o padrão será `EC2`. Para trabalhos executados em recursos do Fargate, `FARGATE` é especificado.  
Se o trabalho for executado em recursos do Amazon EKS, você não deve especificar`platformCapabilities`.
Tipo: Sequência  
Valores válidos: `EC2` \$1 `FARGATE`  
Obrigatório: Não

## Propagar tags
<a name="job-definition-parameters-propagate-tags"></a>

`propagateTags`  
Especifica se as tags devem ser propagadas a partir do trabalho ou da definição de trabalho para a tarefa correspondente do Amazon ECS. Se nenhum valor for especificado, as tags não serão propagadas. As tags só podem ser propagadas para as tarefas quando as tarefas são criadas. Para tags com o mesmo nome, as tags de trabalho têm prioridade sobre as tags de definições de trabalho. Se o número total de tags combinadas do trabalho e da definição do trabalho for superior a 50, o trabalho será movido para o estado `FAILED`.  
Se o trabalho for executado em recursos do Amazon EKS, você não deve especificar`propagateTags`.
Tipo: Booliano  
Obrigatório: Não

## Propriedades de nó
<a name="nodeProperties"></a>

`nodeProperties`  
Ao registrar uma definição de trabalho paralela de vários nós, você deve especificar uma lista de propriedades de nós. Essas propriedades do nó definem o número de nós a serem usados em seu trabalho, o índice do nó principal e os diferentes intervalos de nós a serem usados. Se o trabalho for executado em recursos do Fargate, não especifique `nodeProperties`. Em seu lugar, use `containerProperties`. As seguintes propriedades de nó são permitidas em uma definição de trabalho. Para obter mais informações, consulte [Trabalhos em paralelo de vários nós](multi-node-parallel-jobs.md).  
Se o trabalho for executado em recursos do Amazon EKS, você não deve especificar`nodeProperties`.
Tipo: Objeto [NodeProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_NodeProperties.html)  
Obrigatório: Não    
`mainNode`  
Especifica o índice de nó para o nó principal de um trabalho em paralelo de vários nós. Esse valor de índice do nó deve ser menor que o número de nós.  
Tipo: Inteiro  
Obrigatório: Sim  
`numNodes`  
O número de nós que são associados a um trabalho em paralelo de vários nós.  
Tipo: Inteiro  
Obrigatório: Sim  
`nodeRangeProperties`  
Uma lista de intervalos de nós e suas propriedades que são associadas a uma trabalho em paralelo de vários nós.  
Um grupo de nós é um grupo idêntico de nós de trabalhos que compartilham as mesmas propriedades do contêiner. Você pode usar o AWS Batch para especificar até cinco grupos de nós distintos para cada trabalho.
Tipo: Matriz de objetos [NodeRangeProperty](https://docs.aws.amazon.com/batch/latest/APIReference/API_NodeRangeProperty.html)  
Obrigatório: Sim    
`targetNodes`  
O intervalo de nós, usando valores de índice de nó. Um intervalo de `0:3` indica nós com valores de índice de `0` a `3`. Se o valor do intervalo inicial for omitido (`:n`), então 0 será usado para iniciar o intervalo. Se o valor do intervalo final for omitido (`n:`), o índice de nó mais alto possível será usado para finalizar o intervalo. Seus intervalos de nós acumulativos devem considerar todos os nós (`0:n`). Você pode aninhar intervalos de nós (por exemplo, `0:10` e `4:5`). Nesse caso, as propriedades do intervalo `4:5` substituem as propriedades de `0:10`.   
Tipo: Sequência  
Obrigatório: Não  
`container`  
Os detalhes do contêiner para o intervalo de nós. Para obter mais informações, consulte [Propriedades do contêiner](#containerProperties).  
Tipo: objeto [ContainerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html)   
Obrigatório: Não

## Estratégia de repetição
<a name="retryStrategy"></a>

`retryStrategy`  
Ao registrar uma definição de trabalho, você pode opcionalmente especificar uma estratégia de nova tentativa a ser usada para trabalhos com falha que são enviados com essa definição de trabalho. Qualquer estratégia de repetição especificada durante uma operação [SubmitJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html) substitui a estratégia de repetição definida aqui. Por padrão, cada trabalho é tentado uma vez. Se você especificar mais de uma tentativa, o trabalho será repetido se falhar. Exemplos de uma tentativa de falha incluem o trabalho retornar um código de saída diferente de zero ou a instância de contêiner ser encerrada. Para obter mais informações, consulte [Repetições de trabalho automatizadas](job_retries.md).  
Tipo: Objeto [RetryStrategy](https://docs.aws.amazon.com/batch/latest/APIReference/API_RetryStrategy.html)  
Obrigatório: Não    
`attempts`  
O número de vezes para mover um trabalho para o status `RUNNABLE`. Você pode especificar entre 1 e 10 tentativas. Se `attempts` for maior que um, o trabalho será repetido essa quantidade de vezes se falhar, até ser movido para `RUNNABLE`.  

```
"attempts": integer
```
Tipo: inteiro  
Obrigatório: Não  
`evaluateOnExit`  
Matriz de até 5 objetos que especificam condições sob as quais o trabalho deve ser repetido ou considerado com falha. Se esse parâmetro for especificado, o parâmetro `attempts` também deverá ser especificado. Se `evaluateOnExit` for especificado, mas nenhuma das entradas corresponder, o trabalho será repetido.  

```
"evaluateOnExit": [
   {
      "action": "string",
      "onExitCode": "string",
      "onReason": "string",
      "onStatusReason": "string"
   }
]
```
Tipo: Matriz de objetos [EvaluateOnExit](https://docs.aws.amazon.com/batch/latest/APIReference/API_EvaluateOnExit.html)  
Obrigatório: Não    
`action`  
Especifica a ação a ser executada se todas as condições especificadas (`onStatusReason`, `onReason`, e `onExitCode`) forem atendidas. Os valores não diferenciam maiúsculas e minúsculas  
Tipo: Sequência  
Obrigatório: Sim  
Valores válidos: `RETRY` \$1 `EXIT`  
`onExitCode`  
Contém um padrão glob para corresponder à representação decimal do `ExitCode` retornado para um trabalho. O padrão pode ter até 512 caracteres de comprimento. Ele pode conter somente números. Ele não pode conter letras ou caracteres especiais. Ele pode, opcionalmente, terminar com um asterisco (\$1) para que apenas o início da string precise ser uma correspondência exata.  
Tipo: Sequência  
Obrigatório: Não  
`onReason`  
Contém um padrão glob para corresponder ao `Reason` retornado para um trabalho. O padrão pode ter até 512 caracteres de comprimento. Ele pode conter letras, números, pontos (.), dois pontos (:) e espaço em branco (incluindo espaços ou tabulações). Ele pode, opcionalmente, terminar com um asterisco (\$1) para que apenas o início da string precise ser uma correspondência exata.  
Tipo: Sequência  
Obrigatório: Não  
`onStatusReason`  
Contém um padrão glob para corresponder ao `StatusReason` retornado para um trabalho. O padrão pode ter até 512 caracteres de comprimento. Ele pode conter letras, números, pontos (.), dois pontos (:) e espaço em branco (incluindo espaços ou tabulações). Ele pode, opcionalmente, terminar com um asterisco (\$1) para que apenas o início da string precise ser uma correspondência exata.  
Tipo: Sequência  
Obrigatório: Não

## Prioridade de agendamento
<a name="job-definition-parameters-schedulingPriority"></a>

`schedulingPriority`  
A prioridade de agendamento para trabalhos enviados com essa definição de trabalho. Isso afeta apenas os trabalhos nas filas de trabalhos com uma política de compartilhamento justo. Trabalhos com prioridade de agendamento mais alta são agendados antes de trabalhos com prioridade de agendamento mais baixa.  
O valor mínimo compatível é 0 e o valor máximo compatível é 9999.  
Tipo: Inteiro  
Obrigatório: Não

## Tags
<a name="job-definition-parameters-tags"></a>

`tags`  
Etiquetas de pares de valores-chave a serem associadas à definição do trabalho. Para obter mais informações, consulte [Marcar com tag os recursos do AWS Batch](using-tags.md).  
Tipo: Mapa de string para string  
Obrigatório: Não

## Tempo limite
<a name="timeout"></a>

`timeout`  
Você pode configurar uma duração de tempo limite para os seus trabalhos para que, caso uma execução de trabalho seja maior, AWS Batch possa encerrar o trabalho. Para obter mais informações, consulte [Tempos limite de trabalho](job_timeouts.md). Se um trabalho for encerrado devido a um tempo limite, ele não será tentado novamente. Qualquer configuração de tempo limite especificada durante uma operação [SubmitJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html) substituirá a configuração de tempo limite definida aqui. Para obter mais informações, consulte [Tempos limite de trabalho](job_timeouts.md).  
Tipo: Objeto [JobTimeout](https://docs.aws.amazon.com/batch/latest/APIReference/API_JobTimeout.html)  
Obrigatório: Não    
`attemptDurationSeconds`  
O tempo de duração em segundos (medido a partir do registro de data e hora `startedAt` da tentativa de trabalho) após o encerramento de trabalhos inacabados AWS Batch. O valor mínimo do tempo limite é 60 segundos.  
Em trabalhos de matriz, o tempo limite se aplica aos trabalhos secundários, não ao trabalho de matriz principal.  
Para trabalhos paralelos de vários nós (MNP), o tempo limite se aplica ao trabalho inteiro, não aos nós individuais.  
Tipo: Inteiro  
Obrigatório: Não

# Crie definições de trabalho usando EcsProperties
<a name="multi-container-jobs"></a>

Com o uso das definições de AWS Batch tarefas [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html), você pode modelar hardware, sensores, ambientes 3D e outras simulações em contêineres separados. É possível usar esse atributo para organizar logicamente componentes de workload e separá-los da aplicação principal. Esse recurso pode ser usado AWS Batch no Amazon Elastic Container Service (Amazon ECS), no Amazon Elastic Kubernetes Service (Amazon EKS) e. AWS Fargate

## Definições de trabalho `ContainerProperties` versus `EcsProperties`
<a name="containerpropertions-vs-ecsproperties"></a>

Você pode optar por usar [https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html) ou definições de trabalho [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html) de acordo com seu caso de uso. Em um alto nível, executar AWS Batch trabalhos com `EcsProperties` é semelhante à execução de trabalhos com um`ContainerProperties`.

A estrutura antiga de definição de tarefas, usando `ContainerProperties`, permanece compatível. Se você já tem fluxos de trabalho usando essa estrutura, pode continuar a executá-los.

A principal diferença é que há um novo objeto adicionado à definição do trabalho para acomodar as definições com base em `EcsProperties`.

Por exemplo, uma definição de trabalho que usa o `ContainerProperties` no Amazon ECS e no Fargate tem esta estrutura:

```
{
   "containerProperties": {
     ...
     "image": "my_ecr_image1",
     ...
  },
...
}
```

Uma definição de trabalho que usa o `EcsProperties` no Amazon ECS e no Fargate tem esta estrutura:

```
{
  "ecsProperties": {
    "taskProperties": [{
      "containers": [
        { 
          ...
          "image": "my_ecr_image1",
          ...
        },
        { 
          ...
          "image": "my_ecr_image2",
          ...
        },
```

## Mudanças gerais no AWS Batch APIs
<a name="multi-container-general"></a>

Descrevemos algumas das principais diferenças ao usar `ContainerProperties` e os tipos de dados da API `EcsProperties`:
+ Muitos dos parâmetros usados em `ContainerProperties` aparecem em `TaskContainerProperties`. Alguns exemplos incluem `command`, `image`, `privileged`, `secrets` e `users`. Todos eles podem ser encontrados dentro [TaskContainerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html).
+ Alguns dos parâmetros `TaskContainerProperties` não têm equivalentes funcionais na estrutura legada. Alguns exemplos incluem `dependsOn`, `essential`, `name`, `ipcMode` e `pidMode`. Para obter mais informações, consulte [EcsTaskDetails](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskDetails.html) e [TaskContainerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html).

  Além disso, alguns parâmetros `ContainerProperties` não têm equivalentes ou aplicação na estrutura `EcsProperties`. Em [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html#Batch-Type-EcsProperties-taskProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html#Batch-Type-EcsProperties-taskProperties), `container` foi substituído por `containers`, para que o novo objeto possa aceitar até dez elementos. [https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-containerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-containerProperties)
+ `taskRoleArn` é funcionalmente equivalente a `jobRoleArn`. Para obter mais informações, consulte [EcsTaskProperties: taskRoleArn](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html) e [ContainerProperties: jobRoleArn](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html).
+ Você pode incluir de um (1) a dez (10) contêineres na estrutura `EcsProperties`. [Para obter mais informações, consulte:containersEcsTaskProperties.](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html)
+ Os objetos `taskProperties` e instanceTypes são matrizes, mas aceitam apenas um elemento. [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html)

## Definições de trabalho de vários contêineres para o Amazon ECS
<a name="multi-container-ecs-updates"></a>

Para acomodar a estrutura de vários contêineres do Amazon ECS, alguns dos tipos de dados da API são diferentes. Por exemplo,
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-ecsProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-ecsProperties) é o mesmo nível de `containerProperties` na definição de contêiner único. Para obter mais informações, consulte [EcsProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html) no *AWS Batch API Reference Guide (Guia de referência da API do &CDSlong;)*.
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html#Batch-Type-EcsProperties-taskProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html#Batch-Type-EcsProperties-taskProperties) contém as propriedades definidas para a tarefa do Amazon ECS. Para obter mais informações, consulte [EcsProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html) no *AWS Batch API Reference Guide (Guia de referência da API do &CDSlong;)*.
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html#Batch-Type-EcsTaskProperties-containers](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html#Batch-Type-EcsTaskProperties-containers) inclui informações semelhantes a `containerProperties` na definição de contêiner único. A principal diferença é que `containers` permite definir até dez contêineres. *Para obter mais informações, consulte [ECSTaskproperties:Containers](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html) no Guia de referência da AWS Batch API.*
+ O parâmetro [https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-essential](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-essential) indica como o contêiner afeta o trabalho. Todos os contêineres essenciais devem ser concluídos com sucesso (encerrar como 0) para que o trabalho possa progredir. Se um contêiner marcado como essencial falhar (encerrar como diferente de 0), o trabalho falhará.

  O valor padrão é `true`, e pelo menos um contêiner deve ser marcado como `essential`. Para obter mais informações, consulte [https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-essential](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-essential) no *AWS Batch API Reference Guide (Guia de referência da API do &CDSlong;)*.
+ Com o parâmetro [https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-dependsOn](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-dependsOn), você pode definir uma lista de dependências de contêineres. Para obter mais informações, consulte [https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-dependsOn](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-dependsOn) no *AWS Batch API Reference Guide (Guia de referência da API do &CDSlong;)*.
**nota**  
A complexidade da lista `dependsOn` e do runtime do contêiner associado podem afetar o horário de início do seu trabalho. Se dependências demorarem muito para serem executadas, o trabalho permanecerá em estado `STARTING` até que seja concluído.

Para obter mais informações sobre a estrutura `ecsProperties` e, consulte a sintaxe de [RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#API_RegisterJobDefinition_RequestBody)solicitação para [ECSProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-ecsProperties).

## Definições de trabalho de vários contêineres para o Amazon EKS
<a name="multi-container-eks-updates"></a>

Para acomodar a estrutura de vários contêineres do Amazon EKS, alguns dos tipos de dados da API são diferentes. Por exemplo,
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainer.html#Batch-Type-EksContainer-name](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainer.html#Batch-Type-EksContainer-name) é um identificador exclusivo para o contêiner. Esse objeto não é necessário para um único contêiner, mas é necessário ao definir vários contêineres em um pod. Quando `name` não está definido para contêineres únicos, o nome padrão, `default`, é aplicado.
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html#Batch-Type-EksPodProperties-initContainers](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html#Batch-Type-EksPodProperties-initContainers)são definidos dentro do tipo de [eksPodProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html)dados. Eles são executados antes dos contêineres da aplicação, sempre são executados até a conclusão e devem ser concluídos com êxito antes do início do próximo contêiner.

  Esses contêineres são registrados no atendente Amazon EKS Connector e mantêm as informações de registro no armazenamento de dados de backend do Amazon Elastic Kubernetes Service. O objeto `initContainers` pode aceitar até dez (10) elementos. Para obter mais informações, consulte [Contêineres de inicialização](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/), na *documentação do Kubernetes*.
**nota**  
O objeto `initContainers` pode afetar a hora de início do seu trabalho. Se `initContainers` demorarem muito para serem executados, o trabalho permanecerá em estado `STARTING` até a conclusão.
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html#Batch-Type-EksPodProperties-shareProcessNamespace](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html#Batch-Type-EksPodProperties-shareProcessNamespace) indica se os contêineres no pod podem compartilhar o mesmo namespace de processo. O valor padrão é `false`. Defina isso como `true` para permitir que os contêineres vejam e sinalizem processos em outros contêineres localizados no mesmo pod.
+ Cada contêiner tem importância. Todos os contêineres devem ser concluídos com êxito (sair como 0) para que o trabalho seja bem-sucedido. Se um contêiner falhar (sair como diferente de 0), o trabalho falhará.

Para obter mais informações sobre a estrutura `eksProperties` e, consulte a sintaxe de [RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#API_RegisterJobDefinition_RequestBody)solicitação para [EksProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-eksProperties).

# Referência: cenários de trabalho do AWS Batch usando EcsProperties
<a name="multi-container-jobs-scenarios"></a>

Para ilustrar como as definições de trabalho do AWS Batch que usam `EcsProperties` podem ser estruturadas com base nas suas necessidades, este tópico apresenta as seguintes cargas úteis de [https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html). É possível copiar esses exemplos em um arquivo, personalizá-los de acordo com suas necessidades e, em seguida, usar o AWS Command Line Interface (AWS CLI) para chamar `RegisterJobDefinition`.

## Trabalho do AWS Batch para o Amazon ECS no Amazon EC2
<a name="multi-container-scenario-on-ec2"></a>

Veja a seguir um exemplo de um trabalho do AWS Batch para o Amazon Elastic Container Service no Amazon Elastic Compute Cloud:

```
{
    "jobDefinitionName": "multicontainer-ecs-ec2",
    "type": "container",
    "ecsProperties": {
        "taskProperties": [
          {
            "containers": [
              {
                "name": "c1",
                "essential": false,
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "2"
                  },
                  {
                    "type": "MEMORY",
                    "value": "4096"
                  }
                ]
              },
              {
                "name": "c2",
                "essential": false,
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "2"
                  },
                  {
                    "type": "MEMORY",
                    "value": "4096"
                  }
                ]
              },
              {
                "name": "c3",
                "essential": true,
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "firelensConfiguration": {
                  "type": "fluentbit",
                  "options": {
                    "enable-ecs-log-metadata": "true"
                  }
                 },
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "6"
                  },
                  {
                    "type": "MEMORY",
                    "value": "12288"
                  }
                ]
              }
            ]
          }
        ]
  }
}
```

## Trabalho do AWS Batch para o Amazon ECS no Fargate
<a name="multi-containers-ecs-on-fargate"></a>

Veja a seguir um exemplo de um trabalho do AWS Batch para o Amazon Elastic Container Service no AWS Fargate:

```
{
    "jobDefinitionName": "multicontainer-ecs-fargate",
    "type": "container",
    "platformCapabilities": [
        "FARGATE"
    ],
    "ecsProperties": {
        "taskProperties": [
          {
            "containers": [
              {
                "name": "c1",
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "2"
                  },
                  {
                    "type": "MEMORY",
                    "value": "4096"
                  }
                ]
              },
              {
                "name": "c2",
                "essential": true,
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "6"
                  },
                  {
                    "type": "MEMORY",
                    "value": "12288"
                  }
                ]
              }
            ],
            "executionRoleArn": "arn:aws:iam::1112223333:role/ecsTaskExecutionRole"
          }
        ]
  }
}
```

## Trabalho do AWS Batch para o Amazon EKS
<a name="multi-containers-eks-example"></a>

Veja a seguir um exemplo de um trabalho do AWS Batch para o Amazon Elastic Kubernetes Service:

```
{
  "jobDefinitionName": "multicontainer-eks",
  "type": "container",
  "eksProperties": {
    "podProperties": {
      "shareProcessNamespace": true,
      "initContainers": [
        {
          "name": "init-container",
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
          "command": [
            "echo"
          ],
          "args": [
            "hello world"
          ],
          "resources": {
            "requests": {
              "cpu": "1",
              "memory": "512Mi"
            }
          }
        },
        {
          "name": "init-container-2",
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
          "command": [
            "echo",
            "my second init container"
          ],
          "resources": {
            "requests": {
              "cpu": "1",
              "memory": "512Mi"
            }
          }
        }
      ],
      "containers": [
        {
          "name": "c1",
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
          "command": [
            "echo world"
         ],
          "resources": {
            "requests": {
              "cpu": "1",
              "memory": "512Mi"
            }
          }
        },
        {
          "name": "sleep-container",
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
          "command": [
            "sleep",
            "20"
          ],
          "resources": {
            "requests": {
              "cpu": "1",
              "memory": "512Mi"
            }
          }
        }
      ]
    }
  }
}
```

## Trabalho MNP do AWS Batch com vários contêineres por nó
<a name="multi-container-ecs-mnp"></a>

Veja a seguir um exemplo de um trabalho paralelo de vários nós (MNP) do AWS Batch com vários contêineres por nó:

```
{
  "jobDefinitionName": "multicontainer-mnp",
  "type": "multinode",
  "nodeProperties": {
    "numNodes": 6,
    "mainNode": 0,
    "nodeRangeProperties": [
      {
        "targetNodes": "0:5",
        "ecsProperties": {
          "taskProperties": [
            {
              "containers": [
                {
                  "name": "range05-c1",
                  "command": [
                    "echo",
                    "hello world"
                  ],
                  "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                  "resourceRequirements": [
                    {
                      "type": "VCPU",
                      "value": "2"
                    },
                    {
                      "type": "MEMORY",
                      "value": "4096"
                    }
                  ]
                },
                {
                  "name": "range05-c2",
                  "command": [
                    "echo",
                    "hello world"
                  ],
                  "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                  "resourceRequirements": [
                    {
                      "type": "VCPU",
                      "value": "2"
                    },
                    {
                      "type": "MEMORY",
                      "value": "4096"
                    }
                  ]
                }
              ]
            }
          ]
        }
      }
    ]
  }
}
```

# Usar o driver de log awslogs.
<a name="using_awslogs"></a>

Por padrão, AWS Batch permite que o driver de `awslogs` registro envie informações de registro para o CloudWatch Logs. Você pode usar esse atributo para visualizar logs diferentes dos contêineres em um local indicado e evita que os logs de contêiner ocupem espaço em disco nas instâncias de contêiner. Este tópico ajuda você a configurar o driver de log `awslogs` em suas definições de trabalho.

**nota**  
No AWS Batch console, você pode configurar o driver de `awslogs` registro na seção **Configuração de registro** ao criar uma definição de tarefa.

**nota**  
O tipo de informações registradas em log pelos contêineres em seu trabalho depende principalmente do comando `ENTRYPOINT`. Por padrão, os registros capturados mostram a saída do comando que você normalmente vê em um terminal interativo se você executou o contêiner localmente, que são os `STDERR` I/O fluxos `STDOUT` e. O driver de `awslogs` log simplesmente passa esses registros do Docker para o CloudWatch Logs. Para obter mais informações sobre como os logs do Docker são processados, incluindo maneiras alternativas de capturar fluxos ou dados de arquivos diferentes, consulte [Visualizar logs de um contêiner ou serviço](https://docs.docker.com/config/containers/logging/) na documentação do Docker.

Para enviar registros do sistema de suas instâncias de contêiner para o CloudWatch Logs, consulte[Usando CloudWatch registros com AWS Batch](using_cloudwatch_logs.md). Para obter mais informações sobre CloudWatch registros, consulte [Monitoramento de arquivos de log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html) e [cotas de CloudWatch registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html) no *Guia do usuário do Amazon CloudWatch Logs*.

## opções do driver de log awslogs no tipo de AWS Batch JobDefiniton dados
<a name="create_awslogs_logdriver_options"></a>

O driver de `awslogs` log oferece suporte às seguintes opções nas definições de AWS Batch tarefas. Para obter mais informações, consulte [Driver de registro de CloudWatch registros](https://docs.docker.com/config/containers/logging/awslogs/) na documentação do Docker.

`awslogs-region`  
Obrigatório: não  
Especifique a região para a qual o driver de log `awslogs` deve enviar os logs do Docker. Por padrão, a região usada é a mesma do trabalho. Você pode optar por enviar todos os seus registros de trabalhos em diferentes regiões para uma única região em CloudWatch Registros. Isso permite que todos sejam visíveis em um único local. Como alternativa, você pode separá-los por região para uma abordagem mais granular. No entanto, quando escolher esta opção, certifique-se de que os grupos de logs especificados existam na região especificada.

`awslogs-group`  
Obrigatório: opcional  
Com a opção `awslogs-group`, você pode especificar o grupo de logs para o qual o driver de log `awslogs` envia seus fluxos de logs. Se esse campo não for especificado, será usado `aws/batch/job`.

`awslogs-stream-prefix`  
Obrigatório: opcional  
Com a `awslogs-stream-prefix` opção, você pode associar um fluxo de log ao prefixo especificado e ao ID da tarefa do Amazon ECS do AWS Batch trabalho ao qual o contêiner pertence. Caso você especifique um prefixo com essa opção, o fluxo de log utiliza o seguinte formato:  

```
prefix-name/default/ecs-task-id
```

`awslogs-datetime-format`  
Obrigatório: não  
Essa opção define um padrão de início de várias linhas no formato `strftime` em Python. Uma mensagem de log é formada por uma linha em conformidade com o padrão e as linhas seguintes que não correspondem ao padrão. Assim, a linha em conformidade é o delimitador entre as mensagens de log.  
Um exemplo de um caso de uso para esse formato é a análise da saída, como um despejo de pilha, que poderia ser registrado em várias entradas. O padrão correto permite que ele seja capturado em uma única entrada.  
Para obter mais informações, consulte [awslogs-datetime-format](https://docs.docker.com/config/containers/logging/awslogs/#awslogs-datetime-format).  
Essa opção sempre terá precedência se `awslogs-datetime-format` e `awslogs-multiline-pattern` estiverem configurados.  
O registro em várias linhas executa a análise da expressão regular e a correspondência de todas as mensagens de log. Isso pode ter um impacto negativo na performance do registro em log.

`awslogs-multiline-pattern`  
Obrigatório: não  
Essa opção define um padrão inicial de várias linhas usando uma expressão regular. Uma mensagem de log é formada por uma linha em conformidade com o padrão e as linhas seguintes que não correspondem ao padrão. Assim, a linha em conformidade é o delimitador entre as mensagens de log.  
Para obter mais informações, consulte [awslogs-multiline-pattern](https://docs.docker.com/config/containers/logging/awslogs/#awslogs-multiline-pattern)a documentação do Docker.  
Essa opção será ignorada se `awslogs-datetime-format` também estiver configurado.  
O registro em várias linhas executa a análise da expressão regular e a correspondência de todas as mensagens de log. Isso pode ter um impacto negativo na performance do registro em log.

`awslogs-create-group`  
Obrigatório: não  
Especifique se você deseja que o grupo de logs seja criado automaticamente. Se essa opção não for especificada, o padrão será `false`.  
Essa opção não é recomendada. Recomendamos que você crie o grupo de CloudWatch registros com antecedência usando a ação da [CreateLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html)API Logs, pois cada trabalho tenta criar o grupo de registros, aumentando a chance de falha do trabalho.
A política do IAM para seu perfil de execução deve incluir a permissão `logs:CreateLogGroup` antes que você tente usar `awslogs-create-group`.

## Especificar uma configuração de log na definição de trabalho
<a name="specify-log-config"></a>

Por padrão, AWS Batch ativa o driver de `awslogs` log. Esta seção descreve como personalizar a configuração de log `awslogs` de um trabalho. Para obter mais informações, consulte [Criar uma definição de tarefa de nó único](create-job-definition.md).

Os trechos JSON de configuração de log a seguir têm um objeto `logConfiguration` especificado para cada trabalho. Uma é para um WordPress trabalho que envia registros para um grupo de registros chamado `awslogs-wordpress` e outra é para um contêiner MySQL que envia registros para um grupo de registros chamado. `awslogs-mysql` Ambos os contêineres usam o prefixo de fluxo de log `awslogs-example`.

```
"logConfiguration": {
    "logDriver": "awslogs",
    "options": {
        "awslogs-group": "awslogs-wordpress",
        "awslogs-stream-prefix": "awslogs-example"
    }
}
```

```
"logConfiguration": {
    "logDriver": "awslogs",
    "options": {
        "awslogs-group": "awslogs-mysql",
        "awslogs-stream-prefix": "awslogs-example"
    }
}
```

No AWS Batch console, a configuração de log para a definição do `wordpress` trabalho é especificada conforme mostrado na imagem a seguir. 

![\[Log configuration interface showing awslogs driver with group and stream prefix options.\]](http://docs.aws.amazon.com/pt_br/batch/latest/userguide/images/awslogs-console-config.png)


Depois de registrar uma definição de tarefa com o driver de `awslogs` registro em uma configuração de registro de definição de trabalho, você pode enviar um trabalho com essa definição de trabalho para começar a enviar CloudWatch registros para o Logs. Para obter mais informações, consulte [Tutorial: enviar um trabalho](submit_job.md).

# Especificar dados confidenciais
<a name="specifying-sensitive-data"></a>

Com AWS Batch, você pode injetar dados confidenciais em seus trabalhos armazenando seus dados confidenciais em AWS Secrets Manager segredos ou em parâmetros do AWS Systems Manager Parameter Store e, em seguida, referenciá-los na definição de seu trabalho.

Dados sigilosos podem ser expostos a uma tarefa das seguintes formas:
+ Para injetar dados confidenciais em seus contêineres como variáveis de ambiente, use o parâmetro `secrets` de definição de tarefa.
+ Para fazer referência a informações confidenciais na configuração de log de uma tarefa, use o parâmetro `secretOptions` de definição de trabalho.

**Topics**
+ [Especificar dados confidenciais com o Secrets Manager](specifying-sensitive-data-secrets.md)
+ [Especificar dados sigilosos com o Systems Manager Parameter Store](specifying-sensitive-data-parameters.md)

# Especificar dados confidenciais com o Secrets Manager
<a name="specifying-sensitive-data-secrets"></a>

Com AWS Batch, você pode injetar dados confidenciais em seus trabalhos armazenando seus dados confidenciais em AWS Secrets Manager segredos e, em seguida, referenciando-os na definição de seu trabalho. Os dados sigilosos armazenados em segredos do Secrets Manager podem ser expostos a um trabalho como variáveis de ambiente, ou como parte da configuração do log.

Ao injetar um segredo como uma variável de ambiente, você pode especificar uma chave JSON ou versão de um segredo a ser injetado. Esse processo ajuda a controlar os dados sigilosos expostos a sua tarefa. Para mais informações sobre versionamento de segredos, consulte [Termos e Conceitos Importantes para AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret) no *Guia do Usuário AWS Secrets Manager *.

## Considerações ao especificar dados sigilosos usando o Secrets Manager
<a name="secrets-considerations"></a>

As informações a seguir devem ser consideradas quando o Secrets Manager for usado para especificar dados sigilosos para tarefas.
+ Para injetar um segredo usando uma chave JSON específica ou versão de um segredo, sua instância de contêiner no ambiente de computação do atendente de contêiner do Amazon ECS instalado deve ser 1.37.0 ou superior. Recomendamos usar a versão mais recente do atendente de contêiner. Para mais informações sobre como verificar a versão do atendente e atualizá-la para a versão mais recente, consulte [Atualizando atendente de Contêiner Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) no *Guia do Desenvolvedor Amazon Elastic Container Service*.

  Para injetar o conteúdo completo de um segredo como variável de ambiente, ou injetar um segredo em uma configuração de registro de log, sua instância do atendente de contêiner deve ser versão 1.23.0 ou superior.
+ Somente segredos que armazenam dados de texto, que são segredos criados com o `SecretString` parâmetro da [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)API, são suportados. Segredos que armazenam dados binários, que são segredos criados com o `SecretBinary` parâmetro da [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)API, não são compatíveis.
+ Ao usar uma definição de trabalho que faça referência a segredos Secrets Manager para recuperar dados confidenciais para suas tarefas, caso também esteja usando VPC endpoint de interface, você deverá criar endpoints de VPC de interface para Secrets Manager. Para mais informações, consulte [Usando Secrets Manager com endpoints VPC](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) no *Guia de Usuário AWS Secrets Manager *.
+ Os dados sigilosos são injetados na tarefa quando a mesma é iniciada. Caso o segredo seja subsequentemente atualizado ou alternado, a tarefa não receberá o valor atualizado automaticamente. Você deve iniciar uma nova tarefa para forçar o serviço a iniciá-la com o valor do segredo atualizado.

## Permissões do IAM necessárias para AWS Batch segredos
<a name="secrets-iam"></a>

Para este atributo, você precisa possuir a função de execução e referenciá-la em sua definição de trabalho. Isso permite que o atendente de contêiner puxe os recursos Secrets Manager necessários. Para mais informações, consulte [AWS Batch Função de execução do IAM](execution-IAM-role.md).

Para prover acesso aos segredos Secrets Manager criados por você, adicione manualmente as permissões a seguir como política em linha ao papel de execução. Para mais informações, consulte [Adicionando e Removendo Políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) no *Guia de Usuário do IAM*.
+ `secretsmanager:GetSecretValue`: obrigatório caso faça referência a um segredo Secrets Manager.
+ `kms:Decrypt`: obrigatório apenas se o seu segredo usar uma chave KMS personalizada, não a chave padrão. O ARN da sua chave personalizada deve ser adicionado como recurso.

O exemplo de política em linha a seguir adiciona as permissões obrigatórias.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-2:777777777777:secret:<secret_name>",
                "arn:aws:kms:us-east-2:777777777777:key/<key_id>"
            ]
        }
    ]
}
```

------

## Injetando dados sigilosos como uma variável de ambiente
<a name="secrets-envvar"></a>

Você pode especificar o seguinte em sua definição de trabalho:
+ Objeto `secrets` contendo o nome da variável de ambiente a ser definido no campo
+ Nome do recurso da Amazon (ARN) do segredo Secrets Manager
+ Parâmetros adicionais contendo dados sigilosos a serem apresentados a tarefa

O exemplo a seguir mostra a sintaxe completa a ser especificada para o segredo Secrets Manager.

```
arn:aws:secretsmanager:region:aws_account_id:secret:secret-name:json-key:version-stage:version-id
```

A seção a seguir descreve os parâmetros adicionais. Esses parâmetros são opcionais. No entanto, caso opte por não utilizá-los, você precisará incluir dois pontos `:` para valores padrão. Abaixo, exemplos provendo mais contexto.

`json-key`  
Especifica o nome da chave em um par de chave/ valor, com o valor que deseje definir como o valor da variável de ambiente. Somente valores formato JSON são compatíveis. Caso não especifique uma chave JSON, o conteúdo completo do segredo será utilizado.

`version-stage`  
Especifique o rótulo de preparação da versão do segredo que deseja usar. Caso um rótulo de preparação de versão seja especificado, você não poderá especificar um ID da versão. Se nenhum estágio de versão for especificado, o comportamento padrão será recuperar o segredo com o rótulo de preparação `AWSCURRENT`.  
Rótulos de preparação são usados para monitoramento de diferentes versões de um segredo quando eles forem atualizados ou alternados. Cada versão de um segredo tem um ou mais rótulos de preparação e uma ID. Para obter mais informações, consulte [Key Terms and AWS Concepts for Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret) no *Guia AWS Secrets Manager do Usuário*.

`version-id`  
Especifica o identificador exclusivo da versão do segredo que você deseja usar. Se uma ID da versão for especificada, você não poderá especificar um rótulo de preparação da versão. Se nenhuma ID de versão for especificada, o comportamento padrão será recuperar o segredo com o rótulo de preparação `AWSCURRENT`.  
 IDs As versões são usadas para rastrear diferentes versões de um segredo quando elas são atualizadas ou alteradas. Cada versão de um segredo tem uma ID. Para obter mais informações, consulte [Key Terms and AWS Concepts for Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret) no *Guia AWS Secrets Manager do Usuário*.

### Exemplo de definições de contêiner
<a name="secrets-examples"></a>

Os exemplos a seguir mostram maneiras de fazer referência a segredos Secrets Manager nas suas definições de contêiner.

**Example Referenciando um segredo completo**  
O seguinte é um trecho de definição de tarefa mostrando formato, ao fazer referência ao texto completo de um segredo Secrets Manager.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
    }]
  }]
}
```

**Example Referenciando uma chave específica dentro de um segredo**  
Veja a seguir um exemplo de saída de um get-secret-value comando [>](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html) que exibe o conteúdo de um segredo junto com o rótulo de teste da versão e o ID da versão associado a ele.  

```
{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "VersionId": "871d9eca-18aa-46a9-8785-981dd39ab30c",
    "SecretString": "{\"username1\":\"password1\",\"username2\":\"password2\",\"username3\":\"password3\"}",
    "VersionStages": [
        "AWSCURRENT"
    ],
    "CreatedDate": 1581968848.921
}
```
Faça referência a uma chave específica de saída anterior em uma definição de contêiner especificando o nome da chave no fim do ARN.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::"
    }]
  }]
}
```

**Example Referenciando uma versão secreta específica**  
O seguinte é um exemplo de saída de comando [ >describe-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html) que exibe o conteúdo não criptografado de um segredo junto aos metadados de todas as versões do segredo.  

```
{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "Description": "Example of a secret containing application authorization data.",
    "RotationEnabled": false,
    "LastChangedDate": 1581968848.926,
    "LastAccessedDate": 1581897600.0,
    "Tags": [],
    "VersionIdsToStages": {
        "871d9eca-18aa-46a9-8785-981dd39ab30c": [
            "AWSCURRENT"
        ],
        "9d4cb84b-ad69-40c0-a0ab-cead36b967e8": [
            "AWSPREVIOUS"
        ]
    }
}
```
Faça referência a um rótulo específico de preparação de versão de saída anterior em uma definição de contêiner especificando o nome da chave no fim do ARN.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::AWSPREVIOUS:"
    }]
  }]
}
```
Faça referência a uma ID da versão específica da saída anterior em uma definição de contêiner especificando o nome da chave no final do ARN.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::9d4cb84b-ad69-40c0-a0ab-cead36b967e8"
    }]
  }]
}
```

**Example Referenciando uma chave específica e um rótulo de estágio de versão de um segredo**  
O seguinte é um exemplo de como fazer referência a uma chave específica dentro de um segredo e rótulo de estágio de versão específico.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1:AWSPREVIOUS:"
    }]
  }]
}
```
Para uma chave específica e ID da versão, use a sintaxe a seguir.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::9d4cb84b-ad69-40c0-a0ab-cead36b967e8"
    }]
  }]
}
```

## Injetar dados sigilosos em uma configuração de registro em log
<a name="secrets-logconfig"></a>

Ao especificar um `logConfiguration` na definição de trabalho, você pode especificar `secretOptions` com o nome da opção do driver de log a ser definida no contêiner e o ARN completo do segredo do Secrets Manager que contém os dados confidenciais a serem apresentados ao contêiner.

O seguinte é um trecho de uma definição de trabalho mostrando formato, ao referenciar um segredo Secrets Manager.

```
{
  "containerProperties": [{
    "logConfiguration": [{
      "logDriver": "splunk",
      "options": {
        "splunk-url": "https://cloud.splunk.com:8080"
      },
      "secretOptions": [{
        "name": "splunk-token",
        "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
      }]
    }]
  }]
}
```

## Crie um AWS Secrets Manager segredo
<a name="secrets-create-secret"></a>

Você pode usar o console Secrets Manager para criar um segredo para seus dados sigilosos. Para mais informações, consulte [Criando um Segredo Básico](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) no *Guia do Usuário AWS Secrets Manager *.

**Para criar um segredo básico**

Use Secrets Manager para criar um segredo para seus dados sigilosos.

1. Abra o console do Secrets Manager em [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Escolha **Armazenar Novo Segredo**.

1. Em **Selecionar Tipo de Segredo**, selecione **Outro Tipo de Segredo**.

1. Especifique os detalhes do seu segredo personalizado como pares de **Chave** e **Valor**. Por exemplo, você pode especificar uma chave de `UserName` e, em seguida, fornecer o nome do usuário apropriado como valor. Adicione uma segunda chave com o nome de `Password` e texto da senha como valor. Você também pode adicionar entradas para nome de banco de dados, endereço de servidor ou porta TCP. Adicione quantos pares quiser para armazenar as informações obrigatórias.

   Como alternativa, você pode escolher a guia **Texto Simples** e inserir o valor do segredo como desejar.

1. Escolha a chave de AWS KMS criptografia que você deseja usar para criptografar o texto protegido no segredo. Caso não escolha uma opção, o Secrets Manager verificará a existência de uma chave padrão para a conta e a utilizará, caso exista. Caso não exista uma chave padrão, o Secrets Manager criará uma automaticamente. Você também pode escolher **Adicionar Nova Chave** para criar uma chave personalizada KMS específica para esse segredo. Para criar sua própria chave do KMS, você deve ter permissões para criar chaves do KMS na sua conta.

1. Escolha **Próximo**.

1. Em **Nome do Segredo**, digite nome e caminho opcionais, como **production/MyAwesomeAppSecret** ou **development/TestSecret**, e, em seguida, escolha **Avançar**. Você pode adicionar opcionalmente uma descrição para ajudá-lo a lembrar o objetivo desse segredo mais tarde.

   O nome do segredo deve ter apenas letras ASCII, dígitos, ou qualquer um dos seguintes caracteres: /\$1\$1=.@-

1. (Opcional) Nesse momento, você poderá configurar a rotação para o seu segredo. Para esse procedimento, deixe em **Desabilitar Rotação Automática** e escolha **Avançar**.

   Para obter informações sobre como configurar a rotação em segredos novos ou existentes, consulte Como [girar seus AWS Secrets Manager segredos](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html).

1. Analise suas configurações e, em seguida, escolha **Armazenar Segredo** para salvar tudo que inseriu como novo segredo no Secrets Manager.

# Especificar dados sigilosos com o Systems Manager Parameter Store
<a name="specifying-sensitive-data-parameters"></a>

Com AWS Batch, você pode injetar dados confidenciais em seus contêineres armazenando seus dados confidenciais nos parâmetros do AWS Systems Manager Parameter Store e, em seguida, referenciando-os na definição do contêiner.

**Topics**
+ [Considerações ao especificar dados confidenciais usando o Systems Manager Parameter Store](#secrets--parameterstore-considerations)
+ [Permissões do IAM necessárias para AWS Batch segredos](#secrets-iam-parameters)
+ [Injetar dados sigilosos como uma variável de ambiente](#secrets-envvar-parameters)
+ [Injetar dados sigilosos em uma configuração de registro em log](#secrets-logconfig-parameters)
+ [Criar um AWS Systems Manager parâmetro do Parameter Store](#secrets-create-parameter)

## Considerações ao especificar dados confidenciais usando o Systems Manager Parameter Store
<a name="secrets--parameterstore-considerations"></a>

As informações a seguir devem ser consideradas ao especificar dados confidenciais para contêineres usando parâmetros Systems Manager Parameter Store.
+ Esse atributo exige que a instância de contêiner tenha versão 1.23.0 ou acima do atendente de contêiner. Recomendamos usar a versão mais recente do atendente de contêiner. Para mais informações sobre como verificar a versão do atendente e atualizá-la para a versão mais recente, consulte [Atualizando atendente de Contêiner Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) no *Guia do Desenvolvedor Amazon Elastic Container Service*.
+ Os dados confidenciais são injetados no contêiner do seu trabalho o mesmo for iniciado. Caso o segredo ou parâmetro Parameter Store seja posteriormente atualizado ou alternado, o contêiner não receberá o valor atualizado automaticamente. Você deve iniciar uma nova tarefa para forçar seu início com segredos atualizados.

## Permissões do IAM necessárias para AWS Batch segredos
<a name="secrets-iam-parameters"></a>

Para este atributo, você precisa possuir a função de execução e referenciá-la em sua definição de trabalho. Isso permite que o agente de contêineres do Amazon ECS extraia os AWS Systems Manager recursos necessários. Para obter mais informações, consulte [AWS Batch Função de execução do IAM](execution-IAM-role.md).

Para fornecer acesso aos AWS Systems Manager parâmetros do Parameter Store que você cria, adicione manualmente as seguintes permissões como uma política embutida à função de execução. Para mais informações, consulte [Adicionando e Removendo Políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) no *Guia de usuário do IAM*.
+ `ssm:GetParameters`: obrigatório se fizer referência a um parâmetro Systems Manager Parameter Store em uma definição de tarefa.
+ `secretsmanager:GetSecretValue`: obrigatório se fizer referência a um segredo Secrets Manager diretamente, ou se o parâmetro Systems Manager Parameter Store fizer referência a um segredo Secrets Manager em uma definição de tarefa.
+ `kms:Decrypt`: obrigatório somente se o segredo usar uma chave personalizada KMS e não a chave padrão. O ARN da chave personalizada deve ser adicionado como recurso.

O exemplo de política alinhada a seguir adiciona as permissões necessárias:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameters",
                "secretsmanager:GetSecretValue",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-2:999999999999:parameter/<parameter_name>",
                "arn:aws:secretsmanager:us-east-2:999999999999:secret:<secret_name>",
                "arn:aws:kms:us-east-2:999999999999:key/<key_id>"
            ]
        }
    ]
}
```

------

## Injetar dados sigilosos como uma variável de ambiente
<a name="secrets-envvar-parameters"></a>

Em sua definição de contêiner, especifique `secrets` com o nome da variável de ambiente a ser definida no contêiner e o ARN completo do parâmetro Systems Manager Parameter Store contendo os dados sigilosos a serem apresentados.

O seguinte é um trecho de uma definição de tarefa mostrando formato ao referenciar um parâmetro Systems Manager Parameter Store. Se o parâmetro Systems Manager Parameter Store existir na mesma Região da tarefa sendo iniciada, você poderá usar o ARN completo ou nome do parâmetro. Se o parâmetro existir em uma Região diferente, o ARN completo deverá ser especificado.

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }]
  }]
}
```

## Injetar dados sigilosos em uma configuração de registro em log
<a name="secrets-logconfig-parameters"></a>

Em sua definição de contêiner, ao especificar `logConfiguration`, você poderá especificar `secretOptions` com o nome da opção de registro de log a ser definida no contêiner e o ARN completo do parâmetro Systems Manager Parameter Store contendo os dados confidenciais a serem apresentados.

**Importante**  
Se o parâmetro Systems Manager Parameter Store existir na mesma Região da tarefa sendo iniciada, você poderá usar o ARN completo ou nome do parâmetro. Se o parâmetro existir em uma Região diferente, o ARN completo deverá ser especificado.

O seguinte é um trecho de uma definição de tarefa mostrando formato ao referenciar um parâmetro Systems Manager Parameter Store.

```
{
  "containerProperties": [{
    "logConfiguration": [{
      "logDriver": "fluentd",
      "options": {
        "tag": "fluentd demo"
      },
      "secretOptions": [{
        "name": "fluentd-address",
        "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
      }]
    }]
  }]
}
```

## Criar um AWS Systems Manager parâmetro do Parameter Store
<a name="secrets-create-parameter"></a>

Você pode usar o AWS Systems Manager console para criar um parâmetro do Systems Manager Parameter Store para seus dados confidenciais. Para mais informações, consulte [Demonstração: Crie e Use um Parâmetro em um Comando (Console)](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-console.html) no *Guia de Usuário AWS Systems Manager *.

**Para criar um parâmetro Parameter Store**

1. Abra o AWS Systems Manager console em [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. No painel de navegação, escolha **Parameter Store**, **Criar Parâmetro**.

1. Para **Nome**, digite uma hierarquia e nome de parâmetro. Por exemplo, digite `test/database_password`.

1. Para **Descrição**, digite uma descrição opcional.

1. Em **Tipo**, escolha **Cadeia de caracteres **StringList****, ou **SecureString**.
**nota**  
Se você escolher **SecureString**, o campo **ID da chave KMS** será exibido. Se não fornecer o ID da chave KMS, o ARN da chave KMS, um apelido ou apelido ARN, o sistema usará `alias/aws/ssm`. Essa é a chave KMS padrão para o Systems Manager. Para evitar o uso dessa chave, escolha uma personalizada. Para mais informações, consulte [Use Parâmetros de Strings Seguros](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-about.html) no *Guia de Usuário AWS Systems Manager *.
Ao criar um parâmetro de string seguro no console usando o parâmetro `key-id` com um apelido personalizado de chave KMS ou apelido ARN, você deve especificar o prefixo `alias/` antes do apelido. O seguinte é um exemplo de ARN:  

     ```
     arn:aws:kms:us-east-2:123456789012:alias/MyAliasName
     ```
O seguinte é um exemplo de apelido:  

     ```
     alias/MyAliasName
     ```

1. Em **Valor**, digite um valor. Por exemplo, .`MyFirstParameter` Se você escolher **SecureString**, o valor será mascarado exatamente como você o inseriu.

1. Escolha **Criar Parâmetro**.

# Autenticação de registro privado para trabalhos
<a name="private-registry"></a>

A autenticação de registro privado para uso de trabalhos AWS Secrets Manager permite que você armazene suas credenciais com segurança e, em seguida, faça referência a elas na definição de seu trabalho. Isso fornece uma forma de referenciar imagens de contêiner que existem em registros privados fora dos quais AWS é necessária autenticação em suas definições de trabalho. Esse atributo é compatível em trabalhos hospedados em instâncias do Amazon EC2 e Fargate.

**Importante**  
Se a definição de trabalho faz referência a uma imagem armazenada no Amazon ECR, esse tópico não se aplica. Para obter mais informações, consulte [Usar imagens do Amazon ECR com o Amazon ECS](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_ECS.html) no *Guia do usuário do Amazon Elastic Container Registry*.

Para trabalhos hospedados em instâncias do Amazon EC2, esse atributo requer a versão `1.19.0` ou posterior do atendente de contêiner. Recomendamos usar a versão mais recente do atendente de contêiner. Para mais informações sobre como verificar a versão do atendente e atualizá-la para a versão mais recente, consulte [Atualizando atendente de Contêiner Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) no *Guia do Desenvolvedor Amazon Elastic Container Service*.

Para trabalhos hospedados no Fargate, esse atributo requer a versão da plataforma `1.2.0` ou posterior. Para obter informações, consulte [Versões da plataforma AWS Fargate Linux](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform-linux-fargate.html), no *Guia do desenvolvedor do Amazon Elastic Container Service*.

Em sua definição do contêiner, especifique o objeto `repositoryCredentials` com os detalhes do segredo que você criou. O segredo que você menciona pode ser de uma conta diferente Região da AWS ou diferente do trabalho que o usa.

**nota**  
Ao usar a AWS Batch API ou o AWS SDK, se o segredo existir da Região da AWS mesma forma que o trabalho que você está iniciando, você poderá usar o ARN completo ou o nome do segredo. AWS CLI Se o segredo existir em outra conta, o ARN completo do segredo deve ser especificado. Ao usar o Console de gerenciamento da AWS, o ARN completo do segredo deve ser especificado sempre.

Veja a seguir um trecho de uma definição de trabalho que mostra os parâmetros necessários.

```
"containerProperties": [
  {
    "image": "private-repo/private-image",
    "repositoryCredentials": {
      "credentialsParameter": "arn:aws:secretsmanager:region:123456789012:secret:secret_name"
    }
  }
]
```

# Permissões do IAM necessárias para a autenticação de registro privado
<a name="private-auth-iam"></a>

O perfil de execução é necessário para usar esse atributo. Isso permite que o atendente de contêiner obtenha a imagem do contêiner. Para obter mais informações, consulte [AWS Batch Função de execução do IAM](execution-IAM-role.md).

Para fornecer acesso aos segredos criados por você, adicione as permissões a seguir como uma política em linha ao perfil de execução. Para obter mais informações, consulte [Adicionar e remover políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).
+ `secretsmanager:GetSecretValue`
+ `kms:Decrypt`: exigido somente se a chave usar uma chave do KMS personalizada e não a chave padrão. O nome do recurso da Amazon (ARN) da chave personalizada deve ser adicionado como um recurso.

Veja a seguir um exemplo de política em linha que adiciona as permissões.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:secret_name",
                "arn:aws:kms:us-east-1:123456789012:key/key_id"
            ]
        }
    ]
}
```

------

# Tutorial: criar um segredo para a autenticação de registro privado
<a name="private-auth-enable"></a>

Conclua as etapas a seguir para criar um segredo para suas credenciais de registro privado com AWS Secrets Manager.

**Criar um segredo básico**

1. Abra o AWS Secrets Manager console em [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Escolha **Armazenar Novo Segredo**.

1. Em **Selecionar Tipo de Segredo**, selecione **Outro Tipo de Segredo**.

1. Selecione **Plaintext (Texto simples)** e insira suas credenciais de registro privado usando o seguinte formato:

   ```
   {
     "username" : "privateRegistryUsername",
     "password" : "privateRegistryPassword"
   }
   ```

1. Escolha **Próximo**.

1. Em **Secret name** (Nome de segredo), insira um nome e caminho opcionais, como **production/MyAwesomeAppSecret** ou **development/TestSecret** e escolha **Next** (Avançar). Você pode adicionar opcionalmente uma descrição para ajudá-lo a lembrar o objetivo desse segredo mais tarde.

   O nome do segredo deve ter somente letras ASCII, números ou qualquer um dos seguintes caracteres: `/_+=.@-`.

1. (Opcional) Nesse momento, será possível configurar a rotação para o segredo. Para esse procedimento, deixe em **Desabilitar Rotação Automática** e escolha **Avançar**.

   Para obter instruções sobre como configurar a rotação em segredos novos ou existentes, consulte Como [girar seus AWS Secrets Manager segredos](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html).

1. Reveja suas configurações e, em seguida, escolha **Store secret** (Armazenar segredo) para salvar tudo o que você inseriu como novo segredo no Secrets Manager.

Registre uma definição de trabalho e, em **Registro privado**, ative a **Autenticação de registro privado**. Em seguida, em **ARN ou nome do Secrets Manager**, insira o nome do recurso da Amazon (ARN) do segredo. Para obter mais informações, consulte [Permissões do IAM necessárias para a autenticação de registro privado](private-auth-iam.md).

# Volumes Amazon EFS
<a name="efs-volumes"></a>

O Amazon Elastic File System (Amazon EFS) oferece armazenamento simples e escalável de arquivos para uso com suas tarefas AWS Batch. Com Amazon EFS, a capacidade de armazenamento é elástica. Ela é escalada automaticamente a medida que arquivos são adicionados e removidos. Suas aplicações podem ter o armazenamento de que precisarem, quando precisarem.

Use os sistemas de arquivamento Amazon EFS com AWS Batch para exportar dados do sistema de arquivamento em sua frota de instâncias de contêiner. Assim, seus trabalhos têm acesso ao mesmo armazenamento persistente. Contudo, você deve configurar a AMI da instância de contêiner para montar o sistema de arquivos Amazon EFS antes que o daemon Docker seja iniciado. Além disso, as definições de tarefa devem referenciar montagens de volume na instância de contêiner para poderem usa o sistema de arquivamento. As seções a seguir lhe ajudarão nesse início de uso do Amazon EFS com AWS Batch.

## Considerações de volume Amazon EFS
<a name="efs-volume-considerations"></a>

As seguintes informações devem ser consideradas ao usar volumes Amazon EFS:
+ Para trabalhos usando recursos EC2, o suporte ao sistema de arquivamento Amazon EFS foi adicionado como visualização prévia pública com a versão AMI otimizada Amazon ECS `20191212` com a versão 1.35.0 do agente de contêiner. No entanto, o suporte ao sistema de arquivamento Amazon EFS tornou-se disponível para o público com a versão AMI otimizada Amazon ECS `20200319` com a versão 1.38.0 do agente de contêiner, que incluía atributos de ponto de acesso Amazon EFS e autorização IAM. Recomendamos o uso da versão otimizada AMI Amazon ECS `20200319` ou superior para aproveitamento desses recursos. Para mais informações, consulte [Versões AMI otimizadas Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html) no *Guia de Desenvolvedor Amazon Elastic Container Service*.
**nota**  
Caso crie sua própria AMI, você deverá usar o agente de contêiner 1.38.0 ou superior, `ecs-init` versão 1.38.0-1 ou superior e executar os comandos a seguir em sua instância Amazon EC2. Tudo isso para habilitar o plug-in de volume Amazon ECS. Os comandos dependem do uso do Amazon Linux 2 ou Amazon Linux como imagem base.  

Amazon Linux 2  

  ```
  $ yum install amazon-efs-utils
  systemctl enable --now amazon-ecs-volume-plugin
  ```

Amazon Linux  

  ```
  $ yum install amazon-efs-utils
  sudo shutdown -r now
  ```
+ Para tarefas utilizando recursos Fargate, o suporte de sistema de arquivamento Amazon EFS foi adicionado ao utilizar a versão 1.4.0 ou superior da plataforma. Para mais informações, consulte [Versões de Plataforma AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html) no *Guia de Desenvolvedor Amazon Elastic Container Service*.
+ Ao especificar volumes Amazon EFS em tarefas usando recursos Fargate, o mesmo cria um contêiner supervisor responsável pelo gerenciamento do volume Amazon EFS. O contêiner supervisor usa uma pequena quantidade de memória da tarefa. O contêiner supervisor fica visível ao consultar a versão 4 do endpoint de metadados de tarefa. Para mais informações, consulte [Endpoint de Metadados de Tarefas Versão 4](https://docs.aws.amazon.com/AmazonECS/latest/userguide/task-metadata-endpoint-v4-fargate.html) do *Guia de Usuário Amazon Elastic Container Service para AWS Fargate*.

## Uso dos pontos de acesso do Amazon EFS
<a name="efs-volume-accesspoints"></a>

Os pontos de acesso Amazon EFS são pontos de entrada específicos da aplicação em um sistema de arquivamento EFS que ajudam a gerenciar o acesso a aplicações a conjuntos de dados compartilhados. Para mais informações sobre pontos de acesso Amazon EFS e como controlar o acesso a eles, consulte [Trabalhando com Pontos de Acesso Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) no *Guia de Usuário Amazon Elastic File System*.

Os pontos de acesso podem impor uma identidade de usuário, inclusive grupos POSIX do usuário, para todas as solicitações do sistema de arquivamento feitas por meio do ponto de acesso. Os pontos de acesso também podem impor um diretório raiz diferente para o sistema de arquivamento fazendo com que clientes só possam acessar dados no diretório especificado ou em seus subdiretórios.

**nota**  
Ao criar um ponto de acesso EFS, você especifica um caminho no sistema de arquivamento para servir como diretório raiz. Ao fazer referência ao sistema de arquivos EFS com uma ID de ponto de acesso na definição de trabalho AWS Batch, o diretório raiz deve ser omitido ou definido para `/` Isso impõe o caminho definido no ponto de acesso EFS.

É possível usar um perfil do IAM de uma tarefa AWS Batch para forçar aplicativos específicos a usarem um ponto de acesso específico. Ao combinar políticas do IAM com pontos de acesso, é possível oferecer acesso fácil e seguro a conjuntos de dados específicos para seus aplicativos. Esse atributo usa perfis do IAM Amazon ECS para funcionalidade de tarefa. Para mais informações, consulte [Funções do IAM para Tarefas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) no *Guia de Desenvolvedor Amazon Elastic Container Service*.

## Especificação de um sistema de arquivos do Amazon EFS na definição de trabalho
<a name="specify-efs-config"></a>

Para usar volumes do sistema de arquivamento Amazon EFS em seus contêineres, você deve especificar as configurações de volume e ponto de montagem na definição de tarefa. O trecho JSON de definição de tarefa a seguir mostra a sintaxe para os objetos `volumes` e `mountPoints` de um contêiner:

```
{
    "containerProperties": [
        {
            "image": "amazonlinux:2",
            "command": [
                "ls",
                "-la",
                "/mount/efs"
            ],
            "mountPoints": [
                {
                    "sourceVolume": "myEfsVolume",
                    "containerPath": "/mount/efs",
                    "readOnly": true
                }
            ],
            "volumes": [
                {
                    "name": "myEfsVolume",
                    "efsVolumeConfiguration": {
                        "fileSystemId": "fs-12345678",
                        "rootDirectory": "/path/to/my/data",
                        "transitEncryption": "ENABLED",
                        "transitEncryptionPort": integer,
                        "authorizationConfig": {
                            "accessPointId": "fsap-1234567890abcdef1",
                            "iam": "ENABLED"
                        }
                    }
                }
            ]
        }
    ]
}
```

`efsVolumeConfiguration`  
Tipo: Objeto  
Obrigatório: Não  
Esse parâmetro é especificado quando volumes Amazon EFS são usados.    
`fileSystemId`  
Tipo: string  
Obrigatório: Sim  
A ID do sistema de arquivamento Amazon EFS a ser usada.  
`rootDirectory`  
Tipo: string  
Obrigatório: Não  
O diretório dentro do sistema de arquivamento Amazon EFS a ser montado como diretório raiz dentro do host. Caso esse parâmetro seja omitido, a raiz do volume Amazon EFS será usada. Especificar `/` tem o mesmo efeito que omitir esse parâmetro. Ele pode ter até 4.096 caracteres de comprimento.  
Se um ponto de acesso EFS for especificado em `authorizationConfig`, o parâmetro do diretório raiz deverá ser omitido ou definido para `/`. Isso impõe o caminho definido no ponto de acesso EFS.  
`transitEncryption`  
Tipo: String  
Valores válidos: `ENABLED` \$1 `DISABLED`  
Obrigatório: não  
Determina se a criptografia deve ou não ser habilitada para dados Amazon EFS em trânsito entre host AWS Batch e servidor Amazon EFS. A criptografia de trânsito deverá ser habilitada caso a autorização IAM Amazon EFS for usada. Se o parâmetro for omitido, o valor padrão `DISABLED` será usado. Para mais informações, consulte [Criptografando Dados em Trânsito](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) no *Guia de Usuário Amazon Elastic File System*.  
`transitEncryptionPort`  
Tipo: inteiro  
Obrigatório: Não  
A porta a ser usada ao enviar dados criptografados do host AWS Batch para o servidor Amazon EFS. Caso não especifique uma porta de criptografia em trânsito, a estratégia de seleção de porta usada pelo assistente de montagem Amazon EFS será utilizada. O valor precisar estar compreendido entre 0 e 65.535. Para mais informações, consulte [Auxiliar de Montagem EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) no *Guia de Usuário Amazon Elastic File System*.  
`authorizationConfig`  
Tipo: Objeto  
Obrigatório: Não  
Detalhes de configuração de autorização do sistema de arquivamento Amazon EFS.    
`accessPointId`  
Tipo: Sequência  
Obrigatório: Não  
ID do ponto de acesso a ser usado. Se um ponto de acesso for especificado, o valor do diretório raiz em `efsVolumeConfiguration` deverá ser omitido, ou definido como `/`. Isso impõe o caminho definido no ponto de acesso EFS. Se um ponto de acesso for usado, a criptografia em trânsito deverá ser habilitada em `EFSVolumeConfiguration`. Para mais informações, consulte [Trabalhando com Pontos de Acesso Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) no *Guia de Usuário Amazon Elastic File System*.  
`iam`  
Tipo: String  
Valores válidos: `ENABLED` \$1 `DISABLED`  
Obrigatório: Não  
Determina se é necessário utilizar o perfil do IAM de tarefa AWS Batch estabelecido em uma definição de tarefa ao montar o sistema de arquivamento Amazon EFS. Em caso positivo, a criptografia de trânsito deve estar habilitada em `EFSVolumeConfiguration`. Se o parâmetro for omitido, o valor padrão `DISABLED` será usado. Para mais informações sobre perfis de execução do IAM, consulte [AWS Batch Função de execução do IAM](execution-IAM-role.md).

# Exemplo de definição de trabalhos
<a name="example-job-definitions"></a>

Os exemplos de definições de trabalhos a seguir ilustram como usar padrões comuns, como variáveis de ambiente, substituição de parâmetros e montagens do volume.

**Topics**
+ [Variáveis de ambiente](example-use-envvars.md)
+ [Substituição de parâmetros](example-use-parameters.md)
+ [Testar funcionalidade de GPU](example-test-gpu.md)
+ [Trabalho em paralelo de vários nós](example-mnp-job-definition.md)

# Variáveis de ambiente
<a name="example-use-envvars"></a>

O exemplo de definição de tarefa a seguir usa variáveis de ambiente para especificar um tipo de arquivo e o URL do Amazon S3. Esse exemplo específico é da postagem do blog de computação [Criar uma tarefa simples "Buscar e executar" do AWS Batch](https://aws.amazon.com/blogs/compute/creating-a-simple-fetch-and-run-aws-batch-job/). O script [https://github.com/awslabs/aws-batch-helpers/blob/master/fetch-and-run/fetch_and_run.sh](https://github.com/awslabs/aws-batch-helpers/blob/master/fetch-and-run/fetch_and_run.sh) que é descrito na postagem do blog usa essas variáveis do ambiente para fazer download do script `myjob.sh` do S3 e declarar seu tipo de arquivo.

Embora o comando e as variáveis do ambiente sejam criptografados na definição de tarefa neste exemplo, você pode especificar as substituições de comando e variável de ambiente para tornar a definição de tarefa mais versátil.

```
{
    "jobDefinitionName": "fetch_and_run",
    "type": "container",
    "containerProperties": {
        "image": "123456789012.dkr.ecr.us-east-1.amazonaws.com/fetch_and_run",
        "resourceRequirements": [
            {
                "type": "MEMORY",
                "value": "2000"
            },
            {
                "type": "VCPU",
                "value": "2"
            }
        ],
        "command": [
            "myjob.sh",
            "60"
        ],
        "jobRoleArn": "arn:aws:iam::123456789012:role/AWSBatchS3ReadOnly",
        "environment": [
            {
                "name": "BATCH_FILE_S3_URL",
                "value": "s3://amzn-s3-demo-source-bucket/myjob.sh"
            },
            {
                "name": "BATCH_FILE_TYPE",
                "value": "script"
            }
        ],
        "user": "nobody"
    }
}
```

# Substituição de parâmetros
<a name="example-use-parameters"></a>

O exemplo de definição de tarefa a seguir ilustra como permitir a substituição de parâmetros e definir valores padrão.

As declarações `Ref::` na seção `command` são usadas para definir marcadores para a substituição de parâmetros. Quando envia um trabalho com essa definição de tarefa, você especifica as substituições de parâmetro para preencher esses valores, como `inputfile` e `outputfile`. A seção `parameters` a seguir define um padrão para o `codec`, mas você pode substituir esse parâmetro conforme necessário.

Para obter mais informações, consulte [Parameters](job_definition_parameters.md#parameters).

```
{
    "jobDefinitionName": "ffmpeg_parameters",
    "type": "container",
    "parameters": {"codec": "mp4"},
    "containerProperties": {
        "image": "my_repo/ffmpeg",
        "resourceRequirements": [
            {
                "type": "MEMORY",
                "value": "2000"
            },
            {
                "type": "VCPU",
                "value": "2"
            }
        ],
        "command": [
            "ffmpeg",
            "-i",
            "Ref::inputfile",
            "-c",
            "Ref::codec",
            "-o",
            "Ref::outputfile"
        ],
        "jobRoleArn": "arn:aws:iam::123456789012:role/ECSTask-S3FullAccess",
        "user": "nobody"
    }
}
```

# Testar funcionalidade de GPU
<a name="example-test-gpu"></a>

O exemplo de definição de tarefa a seguir testa se a AMI de workload de GPU descrita em [Usar uma AMI de workload de GPU](batch-gpu-ami.md) está configurada corretamente. Este exemplo de definição de trabalho executa o [exemplo](https://github.com/tensorflow/tensorflow/blob/r1.8/tensorflow/examples/tutorials/mnist/mnist_deep.py) do classificador de MNIST profundo do Tensorflow do GitHub.

```
{
    "containerProperties": {
        "image": "tensorflow/tensorflow:1.8.0-devel-gpu",
        "resourceRequirements": [
            {
                "type": "MEMORY",
                "value": "32000"
            },
            {
                "type": "VCPU",
                "value": "8"
            }
        ],
        "command": [
            "sh",
            "-c",
            "cd /tensorflow/tensorflow/examples/tutorials/mnist; python mnist_deep.py"
        ]
    },
    "type": "container",
    "jobDefinitionName": "tensorflow_mnist_deep"
}
```

É possível criar um arquivo com o texto JSON anterior chamado `tensorflow_mnist_deep.json` e registrar uma definição de trabalho do AWS Batch com o seguinte comando:

```
aws batch register-job-definition --cli-input-json file://tensorflow_mnist_deep.json
```

# Trabalho em paralelo de vários nós
<a name="example-mnp-job-definition"></a>

O exemplo de definição de trabalho ilustra um trabalho em paralelo de vários nós. Para obter mais detalhes, consulte [Criar um fluxo de trabalho de dinâmica molecular fortemente acoplado com trabalhos paralelos de vários nós no AWS Batch](https://aws.amazon.com/blogs/compute/building-a-tightly-coupled-molecular-dynamics-workflow-with-multi-node-parallel-jobs-in-aws-batch/) no blog *AWS Compute*.

```
{
  "jobDefinitionName": "gromacs-jobdef",
  "jobDefinitionArn": "arn:aws:batch:us-east-2:123456789012:job-definition/gromacs-jobdef:1",
  "revision": 6,
  "status": "ACTIVE",
  "type": "multinode",
  "parameters": {},
  "nodeProperties": {
    "numNodes": 2,
    "mainNode": 0,
    "nodeRangeProperties": [
      {
        "targetNodes": "0:1",
        "container": {
          "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/gromacs_mpi:latest",
          "resourceRequirements": [
              {
                  "type": "MEMORY",
                  "value": "24000"
              },
              {
                  "type": "VCPU",
                  "value": "8"
              }
          ],
          "command": [],
          "jobRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
          "ulimits": [],
          "instanceType": "p3.2xlarge"
        }
      }
    ]
  }
}
```