

# Creación de una definición de tareas de Amazon ECS mediante la consola
<a name="create-task-definition"></a>

Cree una definición de tarea de forma que pueda definir la aplicación que se ejecuta como tarea o servicio.

Al crear una definición de tarea para el tipo de lanzamiento externo, debe crear la definición de tarea mediante el editor JSON y establecer el parámetro `requireCapabilities` en `EXTERNAL`.

Para crear una definición de tarea, utilice la consola o especifique un archivo JSON. Puede hacer que Amazon Q dé recomendaciones cuando utilice el editor JSON. Para obtener más información, consulte [Uso de Amazon Q Developer para proporcionar recomendaciones de la definición de tareas en la consola de Amazon ECS](using-amazon-q.md)

## Validación de JSON
<a name="json-validate-for-create"></a>

El editor JSON de la consola de Amazon ECS valida lo siguiente en el archivo JSON:
+ El archivo es un archivo JSON válido.
+ El archivo no contiene claves extrañas.
+ El archivo contiene el parámetro `familyName`.
+ Hay por lo menos una entrada en `containerDefinitions`.

## CloudFormationPilas de
<a name="cloudformation-stack"></a>

El siguiente comportamiento se aplica a las definiciones de tareas que se crearon en la nueva consola de Amazon ECS antes del 12 de enero de 2023.

Al crear una definición de tareas, la consola de Amazon ECS crea automáticamente una pila de CloudFormation cuyo nombre comienza por `ECS-Console-V2-TaskDefinition-`. Si utilizó la AWS CLI o el AWS SDK para anular el registro de la definición de tareas, debe eliminar manualmente la pila de la definición de tareas. Para obtener más información, consulte [Elimina una pila](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) en la *Guía del usuario de CloudFormation*.

Para las definiciones de tareas creadas después del 12 de enero de 2023, no se crea automáticamente una pila de CloudFormation.

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

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

1. Abra la consola en [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. En el panel de navegación, elija **Task Definitions** (Definiciones de tareas).

1. En el menú **Crear una nueva definición de tarea**, elija **Crear una nueva definición de tarea**.

1. Para **Task definition family** (Familia de definiciones de tareas), especifique un nombre único para la definición de tareas.

1. En **Tipo de lanzamiento, elija el entorno de** la aplicación. El valor predeterminado de la consola es **AWS Fargate** (que es sin servidor). Amazon ECS utiliza este valor para la validación y garantizar que los parámetros de la definición de tareas sean válidos para el tipo de infraestructura.

1. Para **Operating system/Architecture** (Arquitectura y sistema operativo), elija el sistema operativo y la arquitectura de CPU para la tarea. 

   Para ejecutar la tarea en una arquitectura ARM de 64 bits, elija **Linux/ARM64**. Para obtener más información, consulte [Plataforma de tiempo de ejecución](task_definition_parameters.md#runtime-platform).

   Para ejecutar sus tareas de **AWS Fargate** en contenedores de Windows, elija un sistema operativo compatible con Windows. Para obtener más información, consulte [Arquitecturas y sistemas operativos](fargate-tasks-services.md#fargate-task-os).

1. En **Task size** (Tamaño de tarea), elija los valores de CPU y memoria que desea reservar para la tarea. El valor de CPU se especifica como vCPU y la memoria se especifica como GB.

   Para las tareas alojadas en Fargate, en la siguiente tabla, se muestran las combinaciones de CPU y memoria válidas.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/create-task-definition.html)

   En el caso de las tareas que utilizan instancias de EC2, o instancias externas, los valores de CPU para tareas admitidos están comprendidos entre 128 unidades de CPU (0,125 vCPU) y 196 608 unidades de CPU (192 vCPU).

   Para indicar el valor de memoria en GB, ingrese **GB** después del valor. Por ejemplo, para establecer **Memory value** en 3 GB, ingrese **3GB**.
**nota**  
Los parámetros de CPU y memoria de nivel de tarea se omiten para los contenedores de Windows.

1. Para **Network mode** (Modo de red), elija el modo de red que desea utilizar. El valor predeterminado es el modo **awsvpc**. Para obtener más información, consulte [redes de tareas de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html).

   Si elige **Puente**, en **Asignaciones de puertos**, para **Puerto del host**, ingrese el número de puerto en la instancia de contenedor que se debe reservar para el contenedor.

1. (Opcional) Amplíe la sección **Roles de tareas** para configurar los roles de AWS Identity and Access Management (IAM) de la tarea:

   1. En **Task role** (Rol de la tarea), elija el rol de IAM para asignar a la tarea. Un rol de IAM de tarea proporciona permisos para los contenedores de una tarea para llamar a las operaciones de la API de AWS.

   1. En **Rol de ejecución de tareas**, elija rol.

      Para obtener más información sobre cuándo utilizar el rol de ejecución de tareas, consulte [Rol de IAM de ejecución de tareas de Amazon ECS](task_execution_IAM_role.md). Si no necesita el rol, elija **Ninguno**.

1. (Opcional) Amplíe la sección **Ubicación de tareas** para agregar restricciones de ubicación. Las restricciones de ubicación de tareas permiten filtrar las instancias de contenedores utilizadas para la ubicación de las tareas mediante atributos integrados o personalizados.

1. (Opcional) Amplíe la sección **Inyección de errores** para habilitar la inyección de errores. La inyección de errores permite probar cómo la aplicación responde a determinados escenarios de deterioro.

1. Para definir a cada contenedor en su definición de tareas, siga los pasos que se describen a continuación.

   1. En **Name** (Nombre), escriba un nombre para el contenedor.

   1. En **Image URI** (URI de imagen), ingrese la imagen que se va a usar para iniciar un contenedor. Las imágenes del registro de Galería pública de Amazon ECR se pueden especificar solo mediante el uso del nombre de registro público de Amazon ECR. Por ejemplo, si se indica `public.ecr.aws/ecs/amazon-ecs-agent:latest`, se utiliza el contenedor de Amazon Linux alojado en Galería pública de Amazon ECR. Para todos los demás repositorios, indique el repositorio mediante los formatos `repository-url/image:tag` o `repository-url/image@digest`.

   1. Si la imagen se encuentra en un registro privado ajeno a Amazon ECR, en **Registro privado**, active la **Autenticación del registro privado**. A continuación, en **nombre o ARN de Secrets Manager**, introduzca el nombre de recurso de Amazon (ARN) del secreto.

   1. En **Contenedor esencial**, si la definición de tarea tiene dos o varios contenedores definidos, puede especificar si el contenedor debe considerarse esencial. Cuando un contenedor está marcado como **Esencial**, si se detiene, la tarea se detiene. Cada definición de tarea debe contener al menos un contenedor esencial.

   1. Las asignaciones de puertos permiten a los contenedores acceder a puertos en el host para enviar o recibir tráfico. En **Port mappings** (Asignaciones de puertos), realice una de las siguientes operaciones: 
      + Cuando usa el modo de red **awsvpc**, en **Container port** (Puerto del contenedor) y **Protocol** (Protocolo), elija la asignación de puertos que se va a usar para el contenedor.
      + Cuando usa el modo de red **bridge** (puente), en **Container port** (Puerto del contenedor) y **Protocol** (Protocolo), elija la asignación de puertos que se va a usar para el contenedor.

      Elija **Add more port mappings** (Agregar más asignaciones de puertos) para especificar asignaciones de puertos de contenedores adicionales.

   1. Para conceder al contenedor acceso de solo lectura a su sistema de archivos raíz, en **Sistema de archivos raíz de solo lectura**, seleccione **Solo lectura**.

   1. (Opcional) Para definir los límites de CPU, GPU y memoria a nivel de contenedor que sean diferentes de los valores a nivel de tarea incluidos en **Resource allocation limits**, haga lo siguiente:
      + En **CPU**, ingrese el número de unidades de CPU que el agente de contenedor de Amazon ECS reserva para el contenedor.
      + En **GPU**, ingrese el número de unidades de GPU para la instancia de contenedor. 

        Una instancia de Amazon EC2 compatible con GPU tiene 1 unidad de GPU por cada GPU. Para obtener más información, consulte [Definiciones de tareas de Amazon ECS para cargas de trabajo de GPU](ecs-gpu.md).
      + En **Límite estricto de memoria**, ingrese la cantidad de memoria, en GB, para presentarla al contenedor. Si el contenedor intenta superar el límite duro, se cancela el contenedor.
      + El daemon de Docker 20.10.0 o posterior reserva un mínimo de 6 mebibytes (MiB) de memoria para un contenedor, por tanto no indique menos de 6 MiB de memoria para los contenedores.

        El daemon de Docker 19.03.13-ce o anterior reserva un mínimo de 4 MiB de memoria para un contenedor, por tanto no indique menos de 4 MiB de memoria para los contenedores.
      + En **Límite flexible de memoria**, ingrese el límite flexible (en GB) de memoria que reservar para el contenedor. 

        Cuando la memoria del sistema está en conflicto, Docker intenta mantener la memoria del contenedor en este límite flexible. Si no especifica memoria de nivel de tarea, debe especificar un entero distinto de cero para el **Límite duro de memoria** y el **Límite flexible de memoria**, o para ambos. Si especifica ambos, el **Límite duro de memoria** debe ser mayor que el **Límite flexible de memoria**. 

        Esta característica no es compatible con los contenedores de Windows.

   1. (Opcional) Expanda la sección **Variables de entorno** para especificar variables de entorno que se van a inyectar en el contenedor. Puede indicar variables de entorno individualmente mediante pares clave-valor o de forma masiva si indica un archivo de variable de entorno alojado en un bucket de Amazon S3. Para obtener información sobre cómo dar formato a un archivo de variable de entorno, consulte [Transferencia de una variable de entorno individual a un contenedor de Amazon ECS](taskdef-envfiles.md).

      Cuando especifique una variable de entorno para el almacenamiento de secretos, en **Clave**, ingrese el nombre del secreto. A continuación, en **ValueFrom**, indique el ARN completo del secreto de Almacén de parámetros de Systems Manager o del secreto de Secrets Manager. 

   1. (Opcional) Seleccione la opción **Use log collection** (Utilizar colección de registros) para especificar una configuración de registro. Para cada controlador de registro disponible, hay opciones de controladores de registro que se deben especificar. La opción predeterminada envía registros de contenedor a Registros de Amazon CloudWatch. Las demás opciones del controlador de registros se configuran mediante AWS FireLens. Para obtener más información, consulte [Envío de registros de Amazon ECS a un servicio de AWS o AWS Partner](using_firelens.md).

      A continuación, se describe con más detalle cada uno de los destinos de registro de contenedor.
      + **Amazon CloudWatch**: configure la tarea para enviar registros de contenedor a CloudWatch Logs. Se proporcionan las opciones de controlador de registro predeterminadas que crean un grupo de registros de CloudWatch en su nombre. Para especificar otro nombre de grupo de registros, cambie los valores de las opciones del controlador.
      + **Exportar registros a Splunk**: configure la tarea para enviar los registros del contenedor al controlador de Splunk que envía los registros a un servicio remoto. Debe ingresar la URL del servicio web de Splunk. El token de Splunk se indica como una opción secreta, ya que puede tratarse como información confidencial.
      + **Exportar registros a Amazon Data Firehose**: configure la tarea para enviar registros de contenedor a Firehose. Se proporcionan las opciones de controlador de registro predeterminadas, que envían registros a un flujo de entrega de Firehose. Para especificar un nombre de flujo de entrega distinto, cambie los valores de las opciones del controlador.
      + **Exportar registros a Amazon Kinesis Data Streams**: configure la tarea para enviar registros de contenedores a Kinesis Data Streams. Se proporcionan las opciones de controlador de registro predeterminadas que envían registros a un flujo de Kinesis Data Streams. Para especificar otro nombre de transmisión, cambie los valores de las opciones del controlador.
      + **Exportar registros a Amazon OpenSearch Service**: configure la tarea para enviar registros de contenedor a un dominio de OpenSearch Service. Se deben proporcionar las opciones del controlador de registros.
      + **Exportar registros a Amazon S3**: configure la tarea para enviar registros de contenedor a un bucket de Amazon S3. Se proporcionan las opciones de controlador de registro predeterminadas, pero debe especificar un nombre de bucket de Amazon S3 válido.

   1. (Opcional) Configure parámetros de contenedor adicionales.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/create-task-definition.html)

   1. (Opcional) Elija **Add more containers** (Agregar más contenedores) para agregar contenedores adicionales a la definición de tareas. 

1. (Opcional) La sección **Almacenamiento** se utiliza para ampliar la cantidad de almacenamiento efímero de las tareas alojadas en Fargate. También puede utilizar esta sección para agregar una configuración de volumen de datos para la tarea.

   1. Para ampliar el almacenamiento efímero disponible más allá del valor predeterminado de 20 gibibytes (GiB) para las tareas de Fargate, en **Amount** (Cantidad), ingrese un valor de hasta 200 GiB.

1. (Opcional) Para agregar una configuración de volumen de datos para la definición de tareas, elija **Agregar volumen** y, a continuación, siga estos pasos.

   1. En **Volume name** (Nombre del volumen), ingrese un nombre para el volumen de datos. El nombre del volumen de datos se utiliza al crear un punto de montaje de contenedor.

   1. En **Configuración de volumen**, seleccione si quiere configurar el volumen al crear la definición de la tarea o durante la implementación.
**nota**  
Entre los volúmenes que se pueden configurar al crear una definición de tareas se incluyen Montaje de enlace, Docker, Amazon EFS y Amazon FSx para Windows File Server. Entre los volúmenes que se pueden configurar en el momento de la implementación, al ejecutar una tarea o al crear o actualizar un servicio, se incluye Amazon EBS.

   1. En **Tipo de volumen**, seleccione un tipo de volumen compatible con el tipo de configuración que seleccionó y, luego, configure el tipo de volumen.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/create-task-definition.html)

1. Para agregar un volumen desde otro contenedor, seleccione **Agregar volumen desde** y, a continuación, configure lo siguiente:
   + En **Contenedor**, elija el contenedor.
   + En **Origen**, elija el contenedor que tiene el volumen que desea montar.
   + En **Solo lectura**, seleccione si el contenedor tiene acceso de solo lectura al volumen.

1. (Opcional) Para configurar los valores de seguimiento y recopilación de métricas de la aplicación mediante la integración de AWS Distro for OpenTelemetry, expanda **Supervisión** y, luego, seleccione **Utilizar recopilación de métricas** para recopilar y enviar las métricas de las tareas a Amazon CloudWatch o Amazon Managed Service para Prometheus. Cuando se selecciona esta opción, Amazon ECS crea un sidecar de contenedor de AWS Distro for OpenTelemetry que está preconfigurado para enviar las métricas de la aplicación. Para obtener más información, consulte [Correlacionar el rendimiento de las aplicaciones de Amazon ECS mediante métricas de aplicaciones](metrics-data.md).

   1. Cuando se selecciona **Amazon CloudWatch**, las métricas de aplicaciones personalizadas se enrutan a CloudWatch como métricas personalizadas. Para obtener más información, consulte [Exportación de métricas de aplicaciones a Amazon CloudWatch](application-metrics-cloudwatch.md).
**importante**  
Al exportar métricas de aplicaciones a Amazon CloudWatch, la definición de tarea requiere un rol de IAM de tarea con los permisos necesarios. Para obtener más información, consulte [Permisos de IAM necesarios para la integración de AWS Distro for OpenTelemetry Amazon CloudWatch](application-metrics-cloudwatch.md#application-metrics-cloudwatch-iam). 

   1. Cuando se selecciona **Amazon Managed Service for Prometheus (Prometheus libraries instrumentation)** (Amazon Managed Service for Prometheus [instrumentación de bibliotecas Prometheus]), las métricas de CPU, memoria, red y almacenamiento de nivel de tarea y las métricas de aplicaciones personalizadas se enrutan a Amazon Managed Service for Prometheus. En **Punto de enlace de escritura remota del espacio del espacio de trabajo**, ingrese la URL de punto de conexión de escritura remota del espacio de trabajo de Prometheus. En **Destino de raspado**, ingrese el host y el puerto que el recopilador de AWS Distro for OpenTelemetry puede utilizar para extraer los datos de métricas. Para obtener más información, consulte [Exportación de métricas de aplicaciones a Amazon Managed Service for Prometheus](application-metrics-prometheus.md).
**importante**  
Al exportar métricas de aplicaciones a Amazon Managed Service for Prometheus, la definición de tarea requiere un rol de IAM de tarea con los permisos necesarios. Para obtener más información, consulte [Permisos de IAM necesarios para la integración de AWS Distro for OpenTelemetry con Amazon Managed Service for Prometheus](application-metrics-prometheus.md#application-metrics-prometheus-iam). 

   1. Cuando selecciona **Amazon Managed Service para Prometheus (instrumentación de OpenTelemetry)**, las métricas de CPU, memoria, red y almacenamiento de nivel de tarea y las métricas de aplicaciones personalizadas se dirigen a Amazon Managed Service para Prometheus. En **Punto de enlace de escritura remota del espacio del espacio de trabajo**, ingrese la URL de punto de conexión de escritura remota del espacio de trabajo de Prometheus. Para obtener más información, consulte [Exportación de métricas de aplicaciones a Amazon Managed Service for Prometheus](application-metrics-prometheus.md).
**importante**  
Al exportar métricas de aplicaciones a Amazon Managed Service for Prometheus, la definición de tarea requiere un rol de IAM de tarea con los permisos necesarios. Para obtener más información, consulte [Permisos de IAM necesarios para la integración de AWS Distro for OpenTelemetry con Amazon Managed Service for Prometheus](application-metrics-prometheus.md#application-metrics-prometheus-iam). 

1. (Opcional) Expanda la sección **Tags** (Etiquetas) para agregar etiquetas, como pares clave-valor, a la definición de tarea.
   + [Agregar una etiqueta] Seleccione **Add tag** (Agregar etiqueta), y, a continuación, haga lo siguiente:
     + En **Clave**, escriba el nombre de la clave.
     + En **Valor**, escriba el valor de la clave.
   + [Eliminar una etiqueta] Junto a la etiqueta, elija **Remove tag (Quitar etiqueta)**.

1. Elija **Crear** para registrar la definición de tarea.

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

1. Abra la consola en [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. En el panel de navegación, elija **Task Definitions** (Definiciones de tareas).

1. Elija **Crear una nueva definición de tarea** y **Crear una nueva definición de tarea con JSON**.

1. En el cuadro del editor de JSON, edite su archivo JSON,

   El JSON debe pasar las comprobaciones de validación especificadas en [Validación de JSON](#json-validate-for-create).

1. Seleccione **Crear**.

------