

# Criar uma definição de tarefa do Amazon ECS usando o console
<a name="create-task-definition"></a>

Crie uma definição de tarefa para poder definir a aplicação que você executa como tarefa ou serviço.

Ao criar uma definição de tarefa para o tipo de execução externo, é necessário criar a definição da tarefa usando o editor JSON e definir o parâmetro `requireCapabilities` como `EXTERNAL`.

É possível criar uma definição de tarefa usando a experiência do console ou especificando um arquivo JSON. Você pode fazer com que o Amazon Q forneça recomendações ao usar o editor JSON. Para obter mais informações, consulte . [Usar o Amazon Q Developer para fornecer recomendações de definição de tarefa no console do Amazon ECS](using-amazon-q.md)

## Validação de JSON
<a name="json-validate-for-create"></a>

O editor de JSON do console do Amazon ECS valida o seguinte no arquivo JSON:
+ O arquivo é um arquivo JSON válido.
+ O arquivo não contém nenhuma chave estranha.
+ O arquivo contém o parâmetro `familyName`.
+ Há pelo menos uma entrada em `containerDefinitions`.

## Pilhas do CloudFormation
<a name="cloudformation-stack"></a>

O comportamento a seguir é aplicável às definições de tarefa criadas no novo console do Amazon ECS antes de 12 de janeiro de 2023.

Ao criar uma definição de tarefa, o console do Amazon ECS cria automaticamente uma pilha do CloudFormation com um nome que começa com `ECS-Console-V2-TaskDefinition-`. Se tiver usado a AWS CLI ou um AWS SDK para cancelar o registro da definição de tarefa, você deverá excluir manualmente a pilha de definições de tarefa. Para obter mais informações, consulte [Excluir uma pilha](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) no *Guia do usuário do CloudFormation*.

As definições de tarefa criadas após 12 de janeiro de 2023 não têm uma pilha do CloudFormation criada automaticamente para elas.

## Procedimento
<a name="create-task-procedure"></a>

------
#### [ Amazon ECS console ]

1. Abra o console em [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. No painel de navegação, escolha **Task definitions** (Definições de tarefa).

1. No menu **Criar definição de tarefa**, escolha **Criar definição de tarefa**.

1. Em **Task definition family** (Família de definição de tarefa), especifique um nome exclusivo para a definição de tarefa.

1. Em **Tipo de inicialização**, escolha o ambiente da aplicação. O padrão do console é **AWS Fargate** (tecnologia sem servidor). O Amazon ECS usa esse valor para realizar a validação e garantir que os parâmetros de definição de tarefa sejam válidos para o tipo de infraestrutura.

1. Em **Operating system/Architecture** (Sistema operacional/arquitetura), escolha o sistema operacional e a arquitetura da CPU para a tarefa. 

   Para executar a tarefa em uma arquitetura ARM de 64 bits, selecione **Linux/ARM64**. Para obter mais informações, consulte [Plataforma de runtime](task_definition_parameters.md#runtime-platform).

   Para executar suas tarefas do **AWS Fargate** em contêineres do Windows, escolha um sistema operacional Windows compatível. Para obter mais informações, consulte [Arquiteturas e sistemas operacionais](fargate-tasks-services.md#fargate-task-os).

1. Em **Task size** (Tamanho da tarefa), escolha os valores de CPU e memória a serem reservados para a tarefa. O valor da CPU é especificado como vCPUs e a memória é especificada como GB.

   Para tarefas hospedadas no Fargate, a tabela a seguir mostra as combinações válidas de CPU e memória.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonECS/latest/developerguide/create-task-definition.html)

   Para tarefas que usam instâncias do EC2 ou externas, os valores compatíveis de CPU da tarefa são entre 128 unidades de CPU (0,125 vCPUs) e 196.608 unidades de CPU (192 vCPUs).

   Para especificar o valor da memória em GB, insira **GB** após o valor. Por exemplo, para definir o **Valor da memória** como 3 GB, insira **3 GB**.
**nota**  
Os parâmetros de CPU e memória em nível de tarefa são ignorados para contêineres do Windows.

1. Em **Network mode** (Modo de rede), escolha o modo de rede a ser usado. O padrão é o modo **awsvpc**. Para obter mais informações, consulte [Redes de tarefas no Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html).

   Se escolher **bridge**, em **Mapeamentos de portas**, em **Porta do host**, insira o número da porta na instância de contêiner a ser reservada para o contêiner.

1. (Opcional) Expanda a seção **Perfis de tarefa** para configurar os perfis do AWS Identity and Access Management (IAM) para a tarefa:

   1. Em **Task role** (Perfil da tarefa), escolha um perfil do IAM para atribuir à tarefa. Um perfil do IAM de tarefa fornece permissões aos contêineres em uma tarefa para chamar operações de API da AWS.

   1. Em **Perfil de execução de tarefas**, escolha o perfil.

      Para obter mais informações sobre quando usar um perfil de execução de tarefas, consulte [Função do IAM de execução de tarefas do Amazon ECS](task_execution_IAM_role.md). Se você não precisar do perfil, escolha **Nenhum**.

1. (Opcional) Expanda a seção **Posicionamento de tarefas** para adicionar restrições de posicionamento. Restrições de posicionamento de tarefas permitem filtrar instâncias de contêiner utilizadas para o posicionamento das suas tarefas usando atributos integrados ou personalizados.

1. (Opcional) Expanda a seção **Injeção de falhas** para habilitar a injeção de falhas. A injeção de falhas permite testar como sua aplicação responde a certos cenários de comprometimento.

1. Para cada contêiner ser definido em sua definição de tarefa, conclua as seguintes etapas.

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

   1. Em **Image URI** (URI da imagem), especifique a imagem a ser usada para iniciar um contêiner. As imagens no registro da Galeria pública do Amazon ECR podem ser especificadas usando apenas o nome do registro do Amazon ECR Public. Por exemplo, se `public.ecr.aws/ecs/amazon-ecs-agent:latest` for especificado, o contêiner do Amazon Linux hospedado na Galeria pública do Amazon ECR será usado. Para todos os outros repositórios, especifique o repositório usando os formatos `repository-url/image:tag` ou `repository-url/image@digest`.

   1. Se sua imagem estiver em um registro privado fora do Amazon ECR, 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.

   1. Em **Contêiner essencial**, se a definição de tarefa tiver dois ou mais contêineres definidos, é possível especificar se o contêiner deve ser considerado essencial. Se um contêiner estiver marcado como **Essencial**, caso esse contêiner pare, a tarefa será interrompida. Cada definição de tarefa deve conter pelo menos um contêiner essencial.

   1. Um mapeamento de porta permite que o contêiner acesse portas no host para enviar ou receber tráfego. Em **Port mappings** (Mapeamentos de porta), siga um destes procedimentos: 
      + Quando você usar o modo de rede **awsvpc**, em **Container port** (Porta do contêiner) e **Protocol** (Protocolo), escolha o mapeamento de porta a ser usado para o contêiner.
      + Quando você usar o modo de rede **bridge**, em **Container port** (Porta do contêiner) e **Protocol** (Protocolo), especifique o mapeamento de porta a ser usado para o contêiner.

      Escolha **Add more port mappings** (Adicionar mais mapeamentos de portas) para especificar mapeamentos de porta de contêiner adicionais.

   1. Para dar ao contêiner acesso somente de leitura ao sistema de arquivos raiz, em **Sistema de arquivos raiz somente leitura**, selecione **Somente leitura**.

   1. (Opcional) Para definir os limites de CPU, GPU e memória em nível de contêiner que sejam diferentes dos valores em nível de tarefa, em **Limites de alocação de recursos**, faça o seguinte:
      + Em **CPU**, insira o número de unidades de CPU que o agente de contêiner do Amazon ECS reserva para o contêiner.
      + Em **GPU**, insira o número de unidades de GPU para a instância de contêiner. 

        Uma instância do Amazon EC2 compatível com GPU tem 1 unidade de GPU para cada GPU. Para obter mais informações, consulte [Definições de tarefa do Amazon ECS para workloads de GPU](ecs-gpu.md).
      + Em **Limite rígido de memória**, insira a quantidade de memória, em GB, para fornecer ao contêiner. Se o contêiner tentar exceder o limite rígido, o contêiner será interrompido.
      + O daemon 20.10.0 ou posterior do Docker reserva um mínimo de 6 mebibytes (MiB) de memória para um contêiner, portanto, não especifique menos de 6 MiB de memória para os contêineres.

        O daemon 19.03.13-ce ou anterior do Docker reserva um mínimo de 4 MiB de memória para um contêiner, portanto, não especifique menos de 4 MiB de memória para os contêineres.
      + Em **Limite flexível de memória**, insira o limite flexível (em GB) de memória a ser reservada para o contêiner. 

        Quando a memória do sistema estiver em contenção, o Docker tentará manter a memória do contêiner dentro desse limite flexível. Se não especificar memória no nível de tarefa, será necessário especificar um número inteiro diferente de zero para um ou ambos os **Limite rígido de memória** e **limite flexível de memória**. Se você especificar ambos, o **Limite rígido de memória** deverá ser maior que o **Limite flexível de memória**. 

        Não há suporte para esse recurso em contêineres do Windows.

   1. (Opcional) Expanda a seção **Variáveis de ambiente** para especificar variáveis de ambiente a serem injetadas no contêiner. É possível especificar variáveis de ambiente individualmente usando pares de chave-valor ou em massa, especificando um arquivo de variável de ambiente hospedado em um bucket do Amazon S3. Para obter informações sobre como formatar um arquivo de variáveis de ambiente, consulte [Transferência de uma variável de ambiente individual para um contêiner do Amazon ECS](taskdef-envfiles.md).

      Ao especificar uma variável de ambiente para o armazenamento de segredos, em **Key**, insira o nome do segredo. Em seguida, para **ValueFrom**, insira o ARN completo do segredo do Systems Manager Parameter Store ou do segredo do Secrets Manager. 

   1. (Opcional) Selecione a opção **Use log collection** (Usar coleção de logs) para especificar uma configuração de log. Para cada driver de log disponível, há opções de driver de log a serem especificadas. A opção padrão envia os logs do contêiner ao Amazon CloudWatch Logs. As outras opções de driver de log são configuradas usando o AWS FireLens. Para obter mais informações, consulte [Envio de logs do Amazon ECS para um serviço da AWS ou para uma AWS Partner](using_firelens.md).

      Veja a seguir a descrição de cada destino de log de contêiner mais detalhadamente.
      + **Amazon CloudWatch**: configura a tarefa para enviar logs de contêiner ao CloudWatch Logs. São fornecidas as opções de driver de log padrão, que criam um grupo de logs do CloudWatch em seu nome. Para especificar um nome de grupo de logs diferente, altere os valores da opção de driver.
      + **Exportar logs para o Splunk**: configure a tarefa para enviar os log do contêiner ao driver do Splunk que envia os logs para a serviço remoto. Você deve inserir o URL do serviço Web Splunk. O token do Splunk é especificado como uma opção secreta, pois ele pode ser tratado como dados confidenciais.
      + **Exportar logs para o Amazon Data Firehose**: configure a tarefa para enviar logs de contêiner ao Firehose. São fornecidas as opções de driver de log padrão, que envia logs para um fluxo de entrega do Firehose. Para especificar um nome de fluxo de entrega diferente, altere os valores da opção de driver.
      + **Exportar logs para o Amazon Kinesis Data Streams**: configure a tarefa para enviar logs de contêiner ao Kinesis Data Streams. São fornecidas as opções de driver de log padrão, que envia logs a um fluxo do Kinesis Data Streams. Para especificar um nome de transmissão diferente, altere os valores da opção de driver.
      + **Exportar logs para o Amazon OpenSearch Service**: configure a tarefa para enviar logs de contêiner a um domínio do OpenSearch Service. As opções de driver de log devem ser fornecidas.
      + **Exportar logs para o Amazon S3**: configure a tarefa para enviar logs de contêiner a um bucket do Amazon S3. As opções de driver de log padrão são fornecidas, mas você deve especificar um nome de bucket válido do Amazon S3.

   1. (Opcional) Configure parâmetros adicionais do contêiner.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonECS/latest/developerguide/create-task-definition.html)

   1. (Opcional) Escolha **Add more containers** (Adicionar mais contêineres) para incluir contêineres adicionais à definição de tarefa. 

1. (Opcional) A seção **Armazenamento** é usada para expandir a quantidade de armazenamento temporário para tarefas hospedadas no Fargate. Também é possível usar essa seção para adicionar uma configuração de volume de dados à tarefa.

   1. Para expandir o armazenamento temporário disponível além do valor padrão de 20 gibibytes (GiB) para as tarefas do Fargate, em **Amount** (Quantidade), insira um valor até 200 GiB.

1. (Opcional) Para adicionar uma configuração de volume de dados à definição da tarefa, escolha **Adicionar volume** e siga as etapas a seguir.

   1. Em **Volume name** (Nome do volume), insira um nome para o volume de dados. O nome do volume de dados é usado na ocasião da criação de um ponto de montagem de contêiner.

   1. Em **Configuração de volume**, selecione se deseja configurar o volume ao criar a definição de tarefa ou durante a implantação.
**nota**  
Os volumes que podem ser configurados ao criar uma definição de tarefa incluem montagem vinculada, Docker, Amazon EFS e Amazon FSx para Windows File Server. Os volumes que podem ser configurados na implantação ao executar uma tarefa ou ao criar ou atualizar um serviço incluem o Amazon EBS.

   1. Em **Tipo de volume**, selecione um tipo de volume compatível com o tipo de configuração selecionado e configure o tipo de volume.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonECS/latest/developerguide/create-task-definition.html)

1. Para adicionar um volume de outro contêiner, escolha **Adicionar volume de** e configure o seguinte:
   + Em **Contêiner**, escolha o contêiner.
   + Em **Origem**, escolha o contêiner que tem o volume que você deseja montar.
   + Em **Somente leitura**, selecione se o contêiner tem acesso somente leitura ao volume.

1. (Opcional) Para definir as configurações de rastreamento e coleção de métricas de aplicações usando a integração AWS Distro for OpenTelemetry, expanda **Monitoramento** e selecione **Usar coleção de métricas** para coletar e enviar métricas das tarefas ao Amazon CloudWatch ou ao Amazon Managed Service for Prometheus. Quando essa opção é selecionada, o Amazon ECS cria um arquivo associado de contêiner do AWS Distro for OpenTelemetry pré-configurado para enviar as métricas da aplicação. Para obter mais informações, consulte [Correlação do desempenho da aplicação do Amazon ECS usando métricas de aplicações](metrics-data.md).

   1. Quando **Amazon CloudWatch** está selecionado, suas métricas de aplicação personalizadas são roteadas para o CloudWatch como métricas personalizadas. Para obter mais informações, consulte [Exportação de métricas de aplicações para o Amazon CloudWatch](application-metrics-cloudwatch.md).
**Importante**  
Ao exportar métricas de aplicações para o Amazon CloudWatch, sua definição de tarefa requer uma função do IAM de tarefa com as permissões necessárias. Para obter mais informações, consulte [Permissões obrigatórias do IAM para integração da distribuição da AWS do OpenTelemetry com o Amazon CloudWatch](application-metrics-cloudwatch.md#application-metrics-cloudwatch-iam). 

   1. Quando **Amazon Managed Service for Prometheus (Prometheus libraries instrumentation)** (Amazon Managed Service for Prometheus [instrumentação das bibliotecas Prometheus]) está selecionado, as métricas de CPU, memória, rede e armazenamento no nível da tarefa e as métricas de aplicação personalizadas são roteadas para o Amazon Managed Service for Prometheus. Em **Endpoint de gravação remoto do espaço de trabalho**, insira o URL do endpoint de gravação remoto para o espaço de trabalho do Prometheus. Em **Destino de rascunho**, insira o host e a porta que o coletor  Distro for OpenTelemetry da AWS pode usar para extrair dados de métricas. Para obter mais informações, consulte [Exportação de métricas de aplicações para o Amazon Managed Service for Prometheus](application-metrics-prometheus.md).
**Importante**  
Ao exportar métricas de aplicações para o Amazon Managed Service for Prometheus, sua definição de tarefa requer uma função do IAM de tarefa com as permissões necessárias. Para obter mais informações, consulte [Permissões obrigatórias do IAM para integração da distribuição da AWS do OpenTelemetry com o Amazon Managed Service for Prometheus](application-metrics-prometheus.md#application-metrics-prometheus-iam). 

   1. Ao selecionar **Amazon Managed Service for Prometheus (instrumentação do OpenTelemetry)**, as métricas de CPU, memória, rede e armazenamento em nível de tarefa e as métricas de aplicação personalizadas são encaminhadas ao Amazon Managed Service for Prometheus. Em **Endpoint de gravação remoto do espaço de trabalho**, insira o URL do endpoint de gravação remoto para o espaço de trabalho do Prometheus. Para obter mais informações, consulte [Exportação de métricas de aplicações para o Amazon Managed Service for Prometheus](application-metrics-prometheus.md).
**Importante**  
Ao exportar métricas de aplicações para o Amazon Managed Service for Prometheus, sua definição de tarefa requer uma função do IAM de tarefa com as permissões necessárias. Para obter mais informações, consulte [Permissões obrigatórias do IAM para integração da distribuição da AWS do OpenTelemetry com o Amazon Managed Service for Prometheus](application-metrics-prometheus.md#application-metrics-prometheus-iam). 

1. (Opcional) Expanda a seção **Tags** para adicionar tags à definição da tarefa, como pares de chave-valor.
   + [Adicionar uma etiqueta] Escolha **Add tag** (Adicionar etiqueta) e faça o seguinte:
     + Em **Chave**, insira o nome da chave.
     + Em **Valor** insira o valor da chave.
   + [Remover uma tag] Ao lado da tag, escolha **Remove tag (Remover tag)**.

1. Escolha **Criar** para registrar a definição de tarefa.

------
#### [ Amazon ECS console JSON editor ]

1. Abra o console em [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. No painel de navegação, escolha **Task definitions** (Definições de tarefa).

1. No menu **Criar definição de tarefa**, escolha **Criar definição de tarefa com JSON**.

1. Na caixa do editor de JSON, edite o arquivo JSON.

   O JSON deve ser aprovado nas verificações de validação especificadas em [Validação de JSON](#json-validate-for-create).

1. Escolha **Criar**.

------