

# Definições de tarefas do Amazon ECS para workloads de transcodificação de vídeo
<a name="ecs-vt1"></a>

Para usar workloads de transcodificação de vídeo no Amazon ECS, registre instâncias [VT1 do Amazon EC2](https://aws.amazon.com/ec2/instance-types/vt1/). Após registrar essas instâncias, será possível executar workloads de transcodificação de vídeo em tempo real e pré-renderizadas como tarefas no Amazon ECS. Instâncias VT1 do Amazon EC2 utilizam placas de transcodificação de mídia Xilinx U30 para acelerar workloads de transcodificação de vídeo em tempo real e pré-renderizadas.

**nota**  
Para obter instruções sobre como executar workloads de transcodificação de vídeo em outros contêineres que não os do Amazon ECS, consulte a [documentação da Xilinx](https://xilinx.github.io/video-sdk/v1.5/container_setup.html#working-with-docker-vt1).

## Considerações
<a name="ecs-vt1-considerations"></a>

Antes de começar a implantar a VT1 no Amazon ECS, considere o seguinte:
+ Seus clusters podem conter uma combinação de instâncias VT1 e não VT1.
+ Você precisa de uma aplicação Linux que utilize placas de transcodificação de mídia Xilinx U30 com codecs AVC (H.264) e HEVC (H.265) acelerados.
**Importante**  
Aplicações que utilizam outros codecs podem não ter performance aprimorada em instâncias VT1.
+ Apenas uma tarefa de transcodificação pode ser executada em uma placa U30. Cada placa tem dois dispositivos associados. É possível executar tarefas de transcodificação na medida em que houver placas para cada instância VT1.
+ Ao criar um serviço ou executar uma tarefa autônoma, você pode usar atributos de tipo de instância ao configurar as restrições de posicionamento de tarefas. Assim, você se certifica de que a tarefa será iniciada na instância de contêiner que você especificar. Isso ajuda a garantir que você use seus recursos de maneira eficaz e que suas tarefas para workloads de transcodificação de vídeo estejam em suas instâncias VT1. Para obter mais informações, consulte [Como o Amazon ECS posiciona tarefas em instâncias de contêineres](task-placement.md).

  No exemplo a seguir, uma tarefa é executada em uma instância `vt1.3xlarge` do cluster `default`.

  ```
  aws ecs run-task \
       --cluster default \
       --task-definition {{vt1-3xlarge-xffmpeg-processor}} \
       --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == vt1.3xlarge"
  ```
+ Você configura um contêiner para usar a placa U30 específica disponível na instância de contêiner host. É possível fazer isso utilizando o parâmetro `linuxParameters` e especificando os detalhes do dispositivo. Para obter mais informações, consulte [Requisitos de definição de tarefa](#ecs-vt1-requirements).

## Usar uma AMI VT1
<a name="ecs-vt1-ami"></a>

Existem duas opções para executar uma AMI no Amazon EC2 para instâncias de contêiner do Amazon ECS. A primeira é usar a AMI oficial da Xilinx no AWS Marketplace. A segunda é criar a sua própria AMI do repositório de amostra.
+ [A Xilinx oferece AMIs no AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-phvk6d4mq3hh6).
+ O Amazon ECS fornece um repositório de amostra que pode ser usado para criar uma AMI para workloads de transcodificação de vídeo. Essa AMI acompanha drivers Xilinx U30. O repositório que contém os scripts do Packer pode ser encontrado no [GitHub](https://github.com/aws-samples/aws-vt-baseami-pipeline). Para obter mais informações sobre o Packer, consulte a [documentação do Packer](https://developer.hashicorp.com/packer/docs).

## Requisitos de definição de tarefa
<a name="ecs-vt1-requirements"></a>

Para executar contêiners de transcodificação de vídeo no Amazon ECS, sua definição de tarefa precisa conter uma aplicação de transcodificação de vídeo que utilize codecs H.264/AVC e H.265/HEVC acelerados. É possível criar uma imagem de contêiner seguindo as etapas no [repositório da Xilinx no GitHub](https://xilinx.github.io/video-sdk/v1.5/container_setup.html#creating-a-docker-image-for-vt1-usage).

A definição de tarefa deve ser específica do tipo de instância. Os tipos de instância são: 3xlarge, 6xlarge e 24xlarge. É necessário configurar um contêiner para usar dispositivos Xilinx U30 específicos disponíveis na instância de contêiner host. Para isso, use o parâmetro `linuxParameters`. A tabela a seguir fornece detalhes sobre as placas e SoCs de dispositivo específicos de cada tipo de instância.


| Tipo de instância | vCPUs | RAM (GiB) | Placas aceleradoras U30 | Dispositivos SoC XCU30 endereçáveis | Caminhos de dispositivos | 
| --- | --- | --- | --- | --- | --- | 
| vt1.3xlarge | 12 | 24 | 1 | 2 | /dev/dri/renderD128,/dev/dri/renderD129 | 
| vt1.6xlarge | 24 | 48 | 2 | 4 | /dev/dri/renderD128,/dev/dri/renderD129,/dev/dri/renderD130,/dev/dri/renderD131 | 
| vt1.24xlarge | 96 | 182 | 8 | 16 | /dev/dri/renderD128,/dev/dri/renderD129,/dev/dri/renderD130,/dev/dri/renderD131,/dev/dri/renderD132,/dev/dri/renderD133,/dev/dri/renderD134,/dev/dri/renderD135,/dev/dri/renderD136,/dev/dri/renderD137,/dev/dri/renderD138,/dev/dri/renderD139,/dev/dri/renderD140,/dev/dri/renderD141,/dev/dri/renderD142,/dev/dri/renderD143 | 

**Importante**  
Se a definição de tarefa indicar dispositivos ausentes na instância do EC2, a tarefa não será executada. Quando a tarefa falhar, a mensagem de erro a seguir aparecerá no `stoppedReason`: `CannotStartContainerError: Error response from daemon: error gathering device information while adding custom device "/dev/dri/renderD{{130}}": no such file or directory`.