

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Definiciones de trabajo
<a name="job_definitions"></a>

AWS Batch Las definiciones de trabajos especifican cómo se van a ejecutar los trabajos. Si bien cada trabajo debe hacer referencia a una definición de trabajo, muchos de los parámetros especificados en dicha definición pueden ser ignorados en tiempo de ejecución. 

Algunos de los atributos especificados en una definición de trabajo son:
+ La imagen de Docker que se debe utilizar con el contenedor en el trabajo.
+ Cuántos v CPUs y cuánta memoria usar con el contenedor.
+ El comando que el contenedor debe ejecutar al iniciarse.
+ Las variables de entorno que se deben transmitirse al contenedor cuando se inicia (si las hay).
+ Los volúmenes de datos que deben utilizarse con el contenedor.
+ Qué función de IAM (si la hay) debe utilizar su trabajo para obtener AWS permisos.

**Topics**
+ [Creación de una definición de trabajo de un solo nodo](create-job-definition.md)
+ [Creación de una definición de trabajo paralelo de varios nodos](create-multi-node-job-def.md)
+ [Plantilla de definición de trabajo que utiliza ContainerProperties](job-definition-template.md)
+ [Cree definiciones de trabajo mediante EcsProperties](multi-container-jobs.md)
+ [Uso del controlador de registros awslogs](using_awslogs.md)
+ [Especificación de información confidencial](specifying-sensitive-data.md)
+ [Autenticación de registros privados para trabajos](private-registry.md)
+ [Volúmenes de Amazon EFS](efs-volumes.md)
+ [Ejemplos de definición de trabajo](example-job-definitions.md)

# Creación de una definición de trabajo de un solo nodo
<a name="create-job-definition"></a>

Antes de poder ejecutar trabajos AWS Batch, debe crear una definición de trabajo. Este proceso varía ligeramente para los trabajos paralelos entre un solo nodo y de varios nodos. Este tema trata específicamente sobre cómo crear una definición de trabajo para un AWS Batch trabajo que no es un trabajo paralelo de varios nodos (también conocido como *programación de bandas*).

Puede crear una definición de trabajo paralelo de varios nodos en los recursos de Amazon Elastic Container Service. Para obtener más información, consulte [Creación de una definición de trabajo paralelo de varios nodos](create-multi-node-job-def.md). 

**Topics**
+ [Creación de una definición de trabajo de un solo nodo en los recursos de Amazon EC2](create-job-definition-EC2.md)
+ [Creación de una definición de trabajo de un solo nodo en los recursos de Fargate](create-job-definition-Fargate.md)
+ [Creación de una definición de trabajo de un solo nodo en los recursos de Amazon EKS](create-job-definition-eks.md)
+ [Creación de una definición de trabajo de un solo nodo con varios contenedores en los recursos de Amazon EC2](create-job-definition-single-node-multi-container.md)

# Creación de una definición de trabajo de un solo nodo en los recursos de Amazon EC2
<a name="create-job-definition-EC2"></a>

Siga estos pasos para crear una definición de trabajo de un solo nodo en recursos de Amazon Elastic Compute Cloud (Amazon EC2).

**Para crear una nueva definición de trabajo en los recursos de Amazon EC2:**

1. Abra la AWS Batch consola en. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)

1. En la barra de navegación, elija la Región de AWS que desee utilizar.

1. En el panel de navegación izquierdo, seleccione **Definiciones de trabajos**.

1. Seleccione **Creación de**.

1. Para el **Tipo de orquestación,** seleccione **Amazon Elastic Compute Cloud (Amazon EC2).**

1. Para la **Configuración de la plataforma EC2**, desactive **Habilitar el procesamiento paralelo de varios nodos**.

1. En **Nombre**, escriba un nombre único para la definición de trabajo. El nombre puede tener una longitud máxima de 128 caracteres. Puede contener letras mayúsculas y minúsculas, números, guiones (-) y guiones bajos (\$1).

1. (Opcional) En **Tiempo de espera de ejecución**, introduzca el valor del tiempo de espera (en segundos). El tiempo de espera de ejecución es el tiempo que transcurre antes de que finalice un trabajo pendiente. Si un intento supera la duración del tiempo de espera, el intento se detiene y pasa a un estado `FAILED`. Para obtener más información, consulte [Tiempos de espera de trabajo](job_timeouts.md). El valor mínimo es de 60 segundos.

1. (Opcional) Activa la **Prioridad de programación**. Introduzca un valor de prioridad de programación entre 0 y 100. Los valores más altos tienen mayor prioridad.

1. (Opcional) En **Intentos de trabajo**, introduzca el número de veces que AWS Batch intenta mover el trabajo al estado `RUNNABLE`. Ingrese un número entero entre 1 y 10.

1. (Opcional) Para las **Condiciones de la estrategia de reintento**, seleccione **Agregar evaluación al salir**. Introduzca al menos un valor de parámetro y, a continuación, elija una **Acción**. Para cada conjunto de condiciones, la **Acción** debe estar configurada como **Reintentar** o **Salir**. Estas acciones significan lo siguiente:
   + **Reintentar**: AWS Batch se vuelve a intentar hasta alcanzar el número de intentos de trabajo que especificó.
   + **Salir**: AWS Batch deja de volver a intentar el trabajo.
**importante**  
Si elige **Agregar evaluar al salir**, debe configurar al menos un parámetro y elegir una **Acción** o **Eliminar evaluar al salir**.

1. (Opcional) Amplíe **Etiquetas** y, a continuación, elija **Agregar etiqueta** para agregar etiquetas al recurso. Elija **Agregar nueva etiqueta** e introduzca la clave y el valor opcional.

1. (Opcional) Active **Propagar etiquetas** para propagar etiquetas desde el trabajo y la definición del trabajo a la tarea de Amazon ECS.

1. Seleccione **Página siguiente**.

1. En la sección **Configuración del contenedor**:

   1. En **Imagen**, elija la imagen Docker que desea utilizar para su trabajo. De manera predeterminada, las imágenes del registro de Docker Hub están disponibles. También es posible especificar otros repositorios con `repository-url/image:tag`. El nombre puede tener una longitud máxima de 225 caracteres. Puede contener letras mayúsculas y minúsculas, números, guiones medios (-), guiones bajos (\$1), dos puntos (:), barras inclinadas (/) y signos numéricos (\$1). Este parámetro se asigna a `Image` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y el parámetro `IMAGE` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).
**nota**  
La arquitectura de la imagen de Docker debe coincidir con la arquitectura del procesador de los recursos informáticos en las que estén programadas. Por ejemplo, las imágenes de Docker basadas en ARM solo se pueden ejecutar en recursos informáticos basados en ARM.
      + Las imágenes de los repositorios públicos de Amazon ECR utilizan las convenciones de nomenclatura completa `registry/repository[:tag]` o `registry/repository[@digest]` (por ejemplo, `public.ecr.aws/registry_alias/my-web-app:latest`).
      + Las imágenes de los repositorios de Amazon ECR utilizan la convención de nomenclatura completa `registry/repository[:tag]` (por ejemplo, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`).
      + Las imágenes de los repositorios oficiales de Docker Hub utilizan un solo nombre (por ejemplo, `ubuntu` o `mongo`).
      + Las imágenes de otros repositorios de Docker Hub se clasifican con un nombre de organización (por ejemplo, `amazon/amazon-ecs-agent`).
      + Las imágenes de otros repositorios online se cualifican más con un nombre de dominio (por ejemplo, `quay.io/assemblyline/ubuntu`).

   1. En **Comando**, ingrese los comandos en el campo como su equivalente de matriz de cadenas **JSON**.

      Este parámetro se asigna a `Cmd` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y el parámetro `COMMAND` se corresponde con [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). [Para obtener más información sobre el Docker`CMD` parámetro, consulta https://docs.docker.com/engine/ reference/builder/ \$1cmd.](https://docs.docker.com/engine/reference/builder/#cmd)
**nota**  
También puede usar valores predeterminados para la sustitución de parámetros y marcadores de posición en el comando. Para obtener más información, consulte [Parameters](job_definition_parameters.md#parameters).

   1. (Opcional) En **la función de ejecución**, especifique una función de IAM que conceda permiso a los agentes de contenedores de Amazon ECS para realizar llamadas a la AWS API en su nombre. Esta característica utiliza roles de IAM de Amazon ECS para las tareas. Para obtener más información, consulte [Roles de IAM de ejecución de tareas de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*. 

   1. Para **configurar el rol de trabajo**, elija un rol de IAM que tenga permisos para. AWS APIs Esta característica utiliza roles de IAM de Amazon ECS para las tareas. Para obtener más información, consulte [Roles de IAM para tareas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.
**nota**  
Aquí solo se muestran roles con la relación de confianza del **Rol de tarea de servicio de Amazon Elastic Container**. Para obtener más información sobre cómo crear un rol de IAM para sus AWS Batch trabajos, consulte [Creación de un rol y una política de IAM para sus tareas en la Guía para](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role) *desarrolladores de Amazon Elastic Container Service*.

1. En **Parámetros**, elija **Agregar parámetros** para añadir marcadores de sustitución de parámetros como pares **Clave** y **Valores** opcionales.

1. En la sección de **Configuración del entorno**:

   1. Para **v CPUs**, introduzca el número de v CPUs que desea reservar para el contenedor. Este parámetro se corresponde con `CpuShares` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--cpu-shares` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Cada vCPU es equivalente a 1 024 cuotas de CPU. Debe especificar al menos una vCPU.

   1. En **Memoria**, introduzca el límite de memoria disponible para el contenedor. Si su contenedor intenta superar la cantidad de memoria que ha especificado aquí, se detiene el contenedor. Este parámetro se corresponde con `Memory` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--memory` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Debe especificar al menos 4 MiB de memoria para un trabajo.
**nota**  
Para maximizar el uso de los recursos, priorice la memoria para los trabajos de un tipo de instancia específico. Para obtener más información, consulte [Administración de la memoria de recurso de computación](memory-management.md).

   1. En **Número de GPUs**, elija el número de GPUs que desea reservar para el contenedor.

   1. (Opcional) En el caso de **Variables de entorno**, seleccione **Agregar variable de entorno** para añadir variables de entorno como pares de nombre-valor. Estas variables se transfieren al contenedor.

   1. (Opcional) En **Secretos**, seleccione **Agregar secreto** para añadir los secretos como pares de nombre-valor. Estos secretos están expuestos en el contenedor. [Para obtener más información, consulte: LogConfiguration Opciones secretas.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

1. Seleccione **Página siguiente**.

1. En la sección de **Configuración de Linux**:

   1. En **Usuario**, introduzca el nombre de usuario a utilizar dentro del contenedor. Este parámetro se corresponde con `User` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--user` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Opcional) Para otorgar al contenedor de su trabajo permisos elevados en la instancia host (similares a los del usuario de `root`), arrastre el control deslizante **Privilegiado** hacia la derecha. Este parámetro se corresponde con `Privileged` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--privileged` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Opcional) Active la opción **Habilitar el proceso init** para ejecutar un proceso `init` dentro del contenedor. Este proceso reenvía señales y recoge procesos.

1. (Opcional) En la sección de **Configuración de Filesystem**:

   1. Active la opción **Habilitar el sistema de archivos de solo lectura** para eliminar el acceso de escritura al volumen.

   1. En **Tamaño de memoria compartida**, introduzca el tamaño (en MiB) del `/dev/shm` volumen de .

   1. En **Tamaño de intercambio máximo**, introduzca la cantidad total de memoria de intercambio (en MiB) que puede utilizar el contenedor.

   1. En **Intercambio**, introduzca un valor entre 0 y 100 para indicar el comportamiento de intercambio del contenedor. Si no especifica un valor y el intercambio está activado, el valor predeterminado es 60. [Para obtener más información, consulte:swappiness. LinuxParameters](https://docs.aws.amazon.com/batch/latest/APIReference/API_LinuxParameters.html#Batch-Type-LinuxParameters-swappiness)

   1. (Opcional) Expandir **Configuración adicional**.

   1. (Opcional) En el caso de **Tmpfs**, seleccione **Agregar tmpfs** para añadir una montura `tmpfs`.

   1. (Opcional) En el caso de los **Dispositivos**, seleccione **Agregar dispositivo** para añadir un dispositivo:

      1. En **Container path (Ruta del contenedor)**, especifique la ruta de la instancia del contenedor que va a exponer el dispositivo asignado a la instancia del host. Si lo deja en blanco, se utiliza la ruta del host en el contenedor.

      1. En **Host path (Ruta de host)**, especifique la ruta de un dispositivo de la instancia del host.

      1. En la página **Permisos**, haga clic en uno o varios permisos para aplicarlos al dispositivo. Los permisos disponibles son **READ**, **WRITE** y **MKNOD**.

   1. (Opcional) En **Configuración de volúmenes**, seleccione **Agregar volumen** para crear una lista de volúmenes que se transferirán al contenedor. Introduzca el **Nombre** y la **Ruta de origen** del volumen y, a continuación, seleccione **Agregar volumen**. También puede optar por activar **Habilitar EFS**.

   1. (Opcional) En **Puntos de montaje**, elija la configuración **Agregar puntos de montaje** para agregar puntos de montaje a los volúmenes de datos. Debe especificar el volumen de origen y la ruta del contenedor. Estos puntos de montaje se transfieren al Docker daemon de una instancia de contenedor. También puede elegir que el volumen sea de **Solo lectura**.

   1. (Opcional) En **Configuración de Ulimits**, seleccione **Agregar ulimit** para agregar un `ulimits` valor al contenedor. Introduzca los valores de **Nombre**, **Límite flexible** y **Límite invariable** y, a continuación, elija **Agregar límite máximo**.

1. En la sección de **Propiedades de tareas**:

   1. En **Función de ejecución (condicional)**, elija una función que permita a los agentes de Amazon ECS realizar llamadas a la AWS API en su nombre. Para obtener más información sobre la creación de un **Rol de ejecución**, cosulte [Tutorial: creación del rol de ejecución de IAM](create-execution-role.md).

   1. Elija **Habilitar el comando de ejecución ECS** para permitir el acceso directo al shell del contenedor de Amazon ECS y omitir el sistema operativo del host. Debe elegir un **Rol de tarea**.
**importante**  
El comando **Ejecución de ECS** requiere que el sistema de archivos sea modificable. 

   1. Para el **rol de tarea**, elija un rol de Amazon ECS Identity and Access Management (IAM) para permitir que el contenedor realice llamadas a la AWS API en su nombre. Para obtener más información, consulte [Rol de IAM de las tareas de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

1. (Opcional) En la sección de **Configuración de registro**:

   1. En el **Controlador de registro**, elija el controlador de registro que desee utilizar. [Para obtener más información sobre los controladores de registro disponibles, consulteLogConfiguration: LogDriver.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-logDriver)
**nota**  
Se utiliza el controlador de registro `awslogs` de forma predeterminada.

   1. En **Opciones**, elija **Agregar opción** para agregar una opción. Introduzca un par nombre-valor y, a continuación, elija **Agregar opción**.

   1. En **Secretos**, seleccione **Agregar secreto**. Introduzca un par nombre-valor y, a continuación, seleccione **Agregar secreto** para añadir un secreto.
**sugerencia**  
[Para obtener más información, consulte: Opciones secretas. LogConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

1. Seleccione **Página siguiente**.

1. Para la **Revisión de definición de trabajo**, revise los pasos de configuración. Si necesita realizar cambios, elija **Editar**. Cuando haya terminado, seleccione **Creación de definición de trabajo**.

# Creación de una definición de trabajo de un solo nodo en los recursos de Fargate
<a name="create-job-definition-Fargate"></a>

Complete los siguientes pasos para crear una definición de trabajo de un solo nodo en los recursos. AWS Fargate 

**Para crear una nueva definición de trabajo en los recursos de Fargate:**

1. Abra la AWS Batch consola en. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)

1. En la barra de navegación superior, selecciona la Región de AWS que deseas usar.

1. En el panel de navegación izquierdo, seleccione **Definiciones de trabajos**.

1. Seleccione **Creación de**.

1. En **Tipo de orquestación**, elija **Fargate**. Para obtener más información, consulte [Entornos de computación en Fargate](fargate.md).

1. En **Nombre**, escriba un nombre único para la definición de trabajo. El nombre puede tener una longitud máxima de 128 caracteres. Puede contener letras mayúsculas y minúsculas, números, guiones (-) y guiones bajos (\$1).

1. (Opcional) En **Tiempo de espera de ejecución**, introduzca el valor del tiempo de espera (en segundos). El tiempo de espera de ejecución es el tiempo que transcurre antes de que finalice un trabajo pendiente. Si un intento supera la duración del tiempo de espera, el intento se detiene y pasa a un estado `FAILED`. Para obtener más información, consulte [Tiempos de espera de trabajo](job_timeouts.md). El valor mínimo es de 60 segundos.

1. (Opcional) Activa la **Prioridad de programación**. Introduzca un valor de prioridad de programación entre 0 y 100. Los valores más altos tienen mayor prioridad respecto a los valores más bajos.

1. (Opcional) Amplíe **Etiquetas** y, a continuación, elija **Agregar etiqueta** para agregar etiquetas al recurso. Active **Propagar etiquetas** para propagar etiquetas desde el trabajo y la definición del trabajo.

1. En la sección de **Configuración de la plataforma Fargate**:

   1. Para la **Plataforma de tiempo de ejecución**, elija la arquitectura del entorno de computación.

   1. En **Familia de sistemas operativos**, seleccione el sistema operativo para el entorno de computación.

   1. En **Arquitectura CPU**, elija la arquitectura vCPU.

   1. Para la **versión de la plataforma Fargate**, introduzca `LATEST` o una versión específica del entorno del tiempo de ejecución.

   1. (Opcional) Active **Asignar IP pública** para asignar una dirección IP a una interfaz de redes de trabajo Fargate. Para que un trabajo que se ejecuta en una subred privada envíe tráfico saliente a Internet, la subred privada requiere que se conecte una puerta de enlace NAT para enrutar las solicitudes a Internet. Es posible que desee hacer esto para poder extraer imágenes de contenedores. Para obtener más información, consulte [Amazon ECS task networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) (Integración en red de las tareas de Amazon ECS) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

   1. (Opcional) En **Almacenamiento efímero**, introduzca la cantidad de almacenamiento efímero que se va a asignar a la tarea. La cantidad de almacenamiento efímero debe estar entre 21 GiB y 200 GiB. De forma predeterminada, se asignan 20 GiB de almacenamiento efímero si no ingresa un valor.
**nota**  
El almacenamiento efímero requiere la versión de la plataforma 1.4 Fargate o una posterior.

   1. En **la función de ejecución**, especifique una función de IAM que conceda permiso al contenedor de Amazon ECS y a los agentes de Fargate para AWS realizar llamadas a la API en su nombre. Esta característica utiliza roles de IAM de Amazon ECS para otorgarle funcionalidad a la tarea. Para obtener más información, incluidos los requisitos previos de configuración, consulte [Roles de IAM para tareas de ejecución de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*. 

   1. Para los **Intentos de trabajo**, introduzca el número de veces que AWS Batch intenta mover el trabajo al estado `RUNNABLE`. Ingrese un número entero entre 1 y 10.

   1. (Opcional) Para las **Condiciones de la estrategia de reintento**, seleccione **Agregar evaluación al salir**. Introduzca al menos un valor de parámetro y, a continuación, elija una **Acción**. Para cada conjunto de condiciones, la **Acción** debe estar configurada como **Reintentar** o **Salir**. Estas acciones significan lo siguiente:
      + **Reintentar**: AWS Batch vuelve a intentarlo hasta alcanzar el número de intentos de trabajo que especificó.
      + **Salir**: AWS Batch deja de volver a intentar el trabajo.
**importante**  
Si elige **Agregar evaluar al salir**, debe configurar al menos un parámetro y elegir una **Acción** o **Eliminar evaluar al salir**.

1. Seleccione **Página siguiente**.

1. En la sección **Configuración del contenedor**:

   1. En **Imagen**, elija la imagen de Docker que desea utilizar para su trabajo. Por defecto, las imágenes del registro de Docker Hub están disponibles. También es posible especificar otros repositorios con `repository-url/image:tag`. El nombre puede tener una longitud máxima de 225 caracteres. Puede contener letras mayúsculas y minúsculas, números, guiones medios (-), guiones bajos (\$1), dos puntos (:), puntos (.), barras inclinadas (/) y signos numéricos (\$1). Este parámetro se asigna a `Image` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y el parámetro `IMAGE` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).
**nota**  
La arquitectura de la imagen de Docker debe coincidir con la arquitectura del procesador de los recursos informáticos en las que estén programadas. Por ejemplo, las imágenes de Docker basadas en ARM solo se pueden ejecutar en recursos informáticos basados en ARM.
      + Las imágenes de los repositorios públicos de Amazon ECR utilizan las convenciones de nomenclatura completa `registry/repository[:tag]` o `registry/repository[@digest]` (por ejemplo, `public.ecr.aws/registry_alias/my-web-app:latest`).
      + Las imágenes de los repositorios de Amazon ECR utilizan la convención de nomenclatura completa `registry/repository[:tag]` (por ejemplo, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`).
      + Las imágenes de los repositorios oficiales de Docker Hub utilizan un solo nombre (por ejemplo, `ubuntu` o `mongo`).
      + Las imágenes de otros repositorios de Docker Hub se clasifican con un nombre de organización (por ejemplo, `amazon/amazon-ecs-agent`).
      + Las imágenes de otros repositorios online se cualifican más con un nombre de dominio (por ejemplo, `quay.io/assemblyline/ubuntu`).

   1. En **Comando**, ingrese los comandos en el campo como su equivalente de matriz de cadenas JSON.

      Este parámetro se asigna a `Cmd` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y el parámetro `COMMAND` se corresponde con [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). [Para obtener más información sobre el Docker`CMD` parámetro, consulta https://docs.docker.com/engine/ reference/builder/ \$1cmd.](https://docs.docker.com/engine/reference/builder/#cmd)
**nota**  
También puede usar valores predeterminados para la sustitución de parámetros y marcadores de posición en el comando. Para obtener más información, consulte [Parameters](job_definition_parameters.md#parameters).

   1. (Opcional) Añada parámetros a la definición del trabajo como asignaciones de nombre-valor para anular los valores predeterminados de la definición del trabajo. Para añadir un parámetro:

      1. En **Parámetros**, elija **Agregar parámetros**, introduzca un par de nombre-valor y, a continuación, elija **Agregar parámetro**.
**importante**  
Si elige **Agregar parámetro**, debe configurar al menos un parámetro o elegir **Eliminar parámetro**

   1. En la sección de **Configuración del entorno**:

      

      1. Para **configurar el rol de Job**, elija un rol de IAM que tenga permisos para. AWS APIs Esta característica utiliza roles de IAM de Amazon ECS para otorgarle funcionalidad a la tarea. Para obtener más información, consulte [Roles de IAM para tareas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.
**nota**  
Aquí solo se muestran roles con la relación de confianza del **Rol de tarea de servicio de Amazon Elastic Container**. Para obtener más información sobre cómo crear un rol de IAM para sus AWS Batch trabajos, consulte [Creación de un rol y una política de IAM para sus tareas en la Guía para](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role) *desarrolladores de Amazon Elastic Container Service*.

      1. Para **v CPUs**, introduzca el número de v CPUs que desea reservar para el contenedor. Este parámetro se corresponde con `CpuShares` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--cpu-shares` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Cada vCPU es equivalente a 1 024 cuotas de CPU. Debe especificar al menos una vCPU.

      1. En **Memoria**, introduzca el límite de memoria disponible para el contenedor. Si su contenedor intenta superar la memoria especificada aquí, el contenedor se detiene. Este parámetro se corresponde con `Memory` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--memory` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Debe especificar al menos 4 MiB de memoria para un trabajo.

         Si utiliza GuardDuty Runtime Monitoring, existe una ligera sobrecarga de memoria para el agente GuardDuty de seguridad. Por lo tanto, el límite de memoria debe incluir el tamaño del agente de GuardDuty seguridad. Para obtener información sobre los límites de memoria del agente de GuardDuty seguridad, consulte los [límites de CPU y memoria](https://docs.aws.amazon.com/guardduty/latest/ug/prereq-runtime-monitoring-ecs-support.html#ecs-runtime-agent-cpu-memory-limits) en la *Guía del GuardDuty usuario*. Para obtener información sobre las prácticas recomendadas, consulte [Cómo solucionar los errores de falta de memoria en mis tareas de Fargate después de activar Runtime Monitoring](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-guard-duty-troubleshooting.html#memory-error) en la *Guía para desarrolladores de Amazon ECS*.
**nota**  
Para maximizar el uso de los recursos, priorice la memoria para los trabajos de un tipo de instancia específico. Para obtener más información, consulte [Administración de la memoria de recurso de computación](memory-management.md).

   1. (Opcional) En el caso de **Variables de entorno**, seleccione **Agregar variable de entorno** para añadir variables de entorno como pares de nombre-valor. Estas variables se transfieren al contenedor.

   1. (Opcional) En **Secretos**, seleccione **Agregar secreto** para añadir los secretos como pares de nombre-valor. Estos secretos están expuestos en el contenedor. [Para obtener más información, consulte: LogConfiguration Opciones secretas.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

   1. Seleccione **Página siguiente**.

1. (Opcional) En la sección de **Configuración de Linux**:

   1. En **Usuario**, introduzca el nombre de usuario a utilizar dentro del contenedor.

   1. Active la opción **Habilitar el proceso** para ejecutar un proceso dentro del contenedor. Este proceso reenvía señales y recoge procesos.

   1. Active la opción **Habilitar el sistema de archivos de solo lectura** para eliminar el acceso de escritura al volumen.

   1. (Opcional) Expandir **Configuración adicional**.

   1. Para la **Configuración de puntos de montaje**, elija la configuración **Agregar puntos de montaje** para agregar puntos de montaje a los volúmenes de datos. Debe especificar el volumen de origen y la ruta del contenedor. Estos puntos de montaje se transfieren al Docker daemon de una instancia de contenedor.

   1. Para la **Configuración de volúmenes**, seleccione **Agregar volumen** para crear una lista de volúmenes que se transferirán al contenedor. Introduzca el **nombre** y la **ruta de origen** del volumen y, a continuación, seleccione **Agregar volumen**. 

   1. En la sección de **Propiedades de tareas**:

      1. En **Función de ejecución (condicional)**, elija una función que permita a los agentes de Amazon ECS realizar llamadas a la AWS API en su nombre. Para obtener más información sobre la creación de un **Rol de ejecución**, cosulte [Tutorial: creación del rol de ejecución de IAM](create-execution-role.md).

      1. Elija **Habilitar el comando de ejecución ECS** para permitir el acceso directo al shell del contenedor de Amazon ECS y omitir el sistema operativo del host. Debe elegir un **Rol de tarea**.
**importante**  
El comando **Ejecución de ECS** requiere que el sistema de archivos sea modificable. 

      1. Para el **rol de tarea**, elija un rol de Amazon ECS Identity and Access Management (IAM) para permitir que el contenedor realice llamadas a la AWS API en su nombre. Para obtener más información, consulte [Rol de IAM de las tareas de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

   1. En la sección de **Configuración de registro**:

      1. (Opcional) En el **Controlador de registro**, elija el controlador de registro que desee utilizar. [Para obtener más información sobre los controladores de registro disponibles, consulteLogConfiguration: LogDriver.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-logDriver)
**nota**  
Se utiliza el controlador de registro `awslogs` de forma predeterminada.

      1. (Opcional) En **Opciones**, elija **Agregar opción** para agregar una opción. Introduzca un par nombre-valor y, a continuación, elija **Agregar opción**.

      1. (Opcional) En **Secretos**, seleccione **Agregar secreto** para añadir un secreto. A continuación, introduzca un par nombre-valor y seleccione **Agregar secreto**.
**sugerencia**  
[Para obtener más información, consulte: Opciones secretas. LogConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

1. Seleccione **Página siguiente**.

1. Para la **Revisión de definición de trabajo**, revise los pasos de configuración. Si necesita realizar cambios, elija **Editar**. Cuando haya terminado, seleccione **Creación de definición de trabajo**.

# Creación de una definición de trabajo de un solo nodo en los recursos de Amazon EKS
<a name="create-job-definition-eks"></a>

Siga estos pasos para crear una definición de trabajo de un solo nodo en recursos de Amazon Elastic Kubernetes Service (Amazon EKS).

**Para crear una nueva definición de trabajo en los recursos de Amazon EKS:**

1. Abra la AWS Batch consola en. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)

1. En la barra de navegación superior, selecciona la Región de AWS que deseas usar.

1. En el panel de navegación izquierdo, seleccione **Definiciones de trabajos**.

1. Seleccione **Creación de**.

1. Para el **tipo de orquestación**, elija **Elastic Kubernetes Service (EKS)**.

1. En **Nombre**, escriba un nombre único para la definición de trabajo. El nombre puede tener una longitud máxima de 128 caracteres. Puede contener letras mayúsculas y minúsculas, números, guiones (-) y guiones bajos (\$1).

1. (Opcional) En **Tiempo de espera de ejecución**, introduzca el valor del tiempo de espera (en segundos). El tiempo de espera de ejecución es el tiempo que transcurre antes de que finalice un trabajo pendiente. Si un intento supera la duración del tiempo de espera, el intento se detiene y pasa a un estado `FAILED`. Para obtener más información, consulte [Tiempos de espera de trabajo](job_timeouts.md). El valor mínimo es de 60 segundos.

1. (Opcional) Activa la **Prioridad de programación**. Introduzca un valor de prioridad de programación entre 0 y 100. Los valores más altos tienen mayor prioridad respecto a los valores más bajos.

1. (Opcional) Amplíe **Etiquetas** y, a continuación, elija **Agregar etiqueta** para agregar etiquetas al recurso.

1. Seleccione **Página siguiente**.

1. En la sección de **propiedades de pod EKS**:

   1. En **Nombre de cuenta de servicio**, introduzca una cuenta que proporcione una identidad para los procesos que se ejecutan en un pod.

   1. Active la **Red de host** para usar el modelo de red Kubernetes pod y abra un puerto de escucha para las conexiones entrantes. Desactive esta configuración solo para las comunicaciones salientes.

   1. Para la **política DNS**, elija una de las siguientes opciones:
      + **Sin valor (nulo)**: pod ignora la configuración de DNS del entorno Kubernetes.
      + **Predeterminado**: pod hereda la configuración de resolución de nombres del nodo en el que se ejecuta.
**nota**  
Si no se especifica una política de DNS, la política de DNS **Valor predeterminado** no es la política de DNS predeterminada. En su lugar, **ClusterFirst**se usa.
      + **ClusterFirst**— Cualquier consulta de DNS que no coincida con el sufijo del dominio del clúster configurado se reenvía al servidor de nombres ascendente que se hereda del nodo. 
      + **ClusterFirstWithHostNet**— Úselo si la **red host está activada**.

   1. (Opcional) En **Volúmenes**, seleccione **Agregar volumen** y, a continuación:

      1. Agregue un **Nombre** para su volumen.

      1. (Opcional) Agregue la **Ruta del host** al directorio del host. 

      1. (Opcional) Agregue un límite **Medio** y de **Tamaño** para configurar un [emptyDir de Kubernetes](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir).

      1. (Opcional) Proporcione un **Nombre del secreto** para el pod e indique si el secreto es **Opcional**.

      1. (Opcional) Defina un **Nombre de recuperación** para adjuntar una [Recuperación de volumen persistente](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) de Kubernetes al pod e indique si es de **Solo lectura**.

   1. (Opcional) En **Etiquetas de los pods**, seleccione **Agregar etiquetas de pod** y, a continuación, introduzca un par de nombre-valor. 
**importante**  
El prefijo de una etiqueta de pod no puede contener `kubernetes.io/`, `k8s.io/` o `batch.amazonaws.com/`.

   1. (Opcional) Para las **Anotaciones del pod**, seleccione **Agregar anotaciones** y, a continuación, ingrese un par nombre-valor. 
**importante**  
El prefijo de una anotación de pod no puede contener `kubernetes.io/`, `k8s.io/` o `batch.amazonaws.com/`.

   1. Seleccione **Página siguiente**.

   1. En la sección **Configuración del contenedor**:

      1. Para el **Nombre**, escriba un nombre único para el contenedor. El nombre debe empezar por una letra o un número y puede tener un máximo de 63 caracteres. Puede contener letras mayúsculas y minúsculas, números y guiones (-).

      1. En **Imagen**, elija la imagen Docker que desea utilizar para su trabajo. Por defecto, las imágenes del registro de Docker Hub están disponibles. También es posible especificar otros repositorios con `repository-url/image:tag`. El nombre puede tener una longitud máxima de 225 caracteres. Puede contener letras mayúsculas y minúsculas, números, guiones medios (-), guiones bajos (\$1), dos puntos (:), puntos (.), barras inclinadas (/) y signos numéricos (\$1). Este parámetro se asigna a `Image` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y el parámetro `IMAGE` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)
**nota**  
La arquitectura de la imagen de Docker debe coincidir con la arquitectura del procesador de los recursos informáticos en las que estén programadas. Por ejemplo, las imágenes de Docker basadas en ARM solo se pueden ejecutar en recursos informáticos basados en ARM.
         + Las imágenes de los repositorios públicos de Amazon ECR utilizan las convenciones de nomenclatura completa `registry/repository[:tag]` o `registry/repository[@digest]` (por ejemplo, `public.ecr.aws/registry_alias/my-web-app:latest`).
         + Las imágenes de los repositorios de Amazon ECR utilizan la convención de nomenclatura completa `registry/repository[:tag]` (por ejemplo, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`).
         + Las imágenes de los repositorios oficiales de Docker Hub utilizan un solo nombre (por ejemplo, `ubuntu` o `mongo`).
         + Las imágenes de otros repositorios de Docker Hub se clasifican con un nombre de organización (por ejemplo, `amazon/amazon-ecs-agent`).
         + Las imágenes de otros repositorios online se cualifican más con un nombre de dominio (por ejemplo, `quay.io/assemblyline/ubuntu`).

      1. (Opcional) En **Política de extracción de imágenes**, elija cuándo se extraerán las imágenes.

      1. (Opcional) En **Comando**, ingrese un comando JSON para pasarlo al contenedor.

      1. (Opcional) En **Argumentos**, introduzca los argumentos para pasar al contenedor. Si no se proporciona un argumento, se utiliza el comando contenedor de imágenes.

   1. (Opcional) Puede añadir parámetros a la definición del trabajo como asignaciones de nombre-valor para anular los valores predeterminados de la definición del trabajo. Para añadir un parámetro:

      1. En **Parámetros**, introduzca un par de nombre-valor y, a continuación, elija **Agregar parámetro**.
**importante**  
Si elige **Agregar parámetro**, debe configurar al menos un parámetro o elegir **Eliminar parámetro**

   1. En la sección de **Configuración del entorno**:

      1. Para **v CPUs**, introduce el número de v que deseas reservar CPUs para el contenedor. Este parámetro se corresponde con `CpuShares` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--cpu-shares` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Cada vCPU es equivalente a 1 024 cuotas de CPU. Debe especificar al menos una vCPU.

      1. En **Memoria**, introduzca el límite de memoria disponible para el contenedor. Si su contenedor intenta superar la memoria especificada aquí, el contenedor se detiene. Este parámetro se corresponde con `Memory` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--memory` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Debe especificar al menos 4 MiB de memoria para un trabajo.
**nota**  
Para maximizar el uso de los recursos, priorice la memoria para los trabajos de un tipo de instancia específico. Para obtener más información, consulte [Administración de la memoria de recurso de computación](memory-management.md).

   1. (Opcional) En el caso de **Variables de entorno**, seleccione **Agregar variable de entorno** para añadir variables de entorno como pares de nombre-valor. Estas variables se transfieren al contenedor.

   1. (Opcional) En **Montaje del volumen**:

      1. Seleccione **Agregar montaje del volumen**.

      1. Introduzca un **Nombre** y, a continuación, introduzca una **Ruta de montaje** en el contenedor donde está montado el volumen. Introduzca **SubPath**a para especificar una subruta dentro del volumen al que se hace referencia en lugar de su raíz. 

      1. Seleccione **Solo lectura** para eliminar los permisos de escritura del volumen.

      1. Seleccione **Agregar montaje del volumen**.

   1. (Opcional) En **Ejecutar como usuario**, introduzca un ID de usuario para ejecutar el proceso del contenedor.
**nota**  
El ID de usuario debe existir en la imagen para que se ejecute el contenedor.

   1. (Opcional) En **Ejecutar como grupo**, introduzca un ID de grupo para ejecutar el proceso del contenedor en tiempo de ejecución.
**nota**  
El ID de grupo debe existir en la imagen para que se ejecute el contenedor.

   1. (Opcional) Para otorgar al contenedor de su trabajo permisos elevados en la instancia host (similares a los del usuario de `root`), arrastre el control deslizante **Privilegiado** hacia la derecha. Este parámetro se corresponde con `Privileged` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--privileged` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Opcional) Active el sistema de **Archivos raíz de solo lectura** para eliminar el acceso de escritura al sistema de archivos raíz.

   1. (Opcional) Active la opción **Ejecutar como usuario no raíz** para ejecutar los contenedores en el pod como usuario no raíz.
**nota**  
Si la opción **Ejecutar como no raíz** está activada, kubelet valida la imagen en tiempo de ejecución para comprobar que la imagen no se ejecuta como UID 0. 

   1. Seleccione **Página siguiente**.

1. Para la **Revisión de definición de trabajo**, revise los pasos de configuración. Si necesita realizar cambios, elija **Editar**. Cuando haya terminado, seleccione **Creación de definición de trabajo**.

# Creación de una definición de trabajo de un solo nodo con varios contenedores en los recursos de Amazon EC2
<a name="create-job-definition-single-node-multi-container"></a>

Siga estos pasos para crear una definición de trabajo de un solo nodo con varios contenedores en los recursos de Amazon Elastic Compute Cloud (Amazon EC2).

**Para crear una nueva definición de trabajo en los recursos de Amazon EC2:**

1. Abra la AWS Batch consola en. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)

1. En la barra de navegación, elija la Región de AWS que desee utilizar.

1. En el panel de navegación izquierdo, seleccione **Definiciones de trabajos**.

1. Seleccione **Creación de**.

1. Para el **Tipo de orquestación**, seleccione **Amazon Elastic Compute Cloud (Amazon EC2)**.

1. En **Estructura de definición de trabajos**, desactive **Uso del procesamiento de estructura de containerProperties heredado**.

1. Para la **Configuración de la plataforma EC2**, desactive **Habilitar el procesamiento paralelo de varios nodos**.

1. Elija **Siguiente**.

1. En la sección **Configuración general**, ingrese lo siguiente:

   1. En **Nombre**, escriba un nombre único para la definición de trabajo. El nombre puede tener una longitud máxima de 128 caracteres. Puede contener letras mayúsculas y minúsculas, números, guiones (-) y guiones bajos (\$1).

   1. En **Tiempo de espera de ejecución: *opcional***, ingrese el valor del tiempo de espera (en segundos). El tiempo de espera de ejecución es el tiempo que transcurre antes de que finalice un trabajo pendiente. Si un intento supera la duración del tiempo de espera, el intento se detiene y pasa a un estado `FAILED`. Para obtener más información, consulte [Tiempos de espera de trabajo](job_timeouts.md). El valor mínimo es de 60 segundos.

   1. Activa la **Prioridad de programación: *opcional***. Introduzca un valor de prioridad de programación entre 0 y 100. Los valores más altos tienen mayor prioridad.

   1. Amplíe **Etiquetas: *opcional*** y, a continuación, elija **Agregar etiqueta** para agregar etiquetas al recurso. Elija **Agregar nueva etiqueta** e introduzca la clave y el valor opcional.

   1. Active **Propagar etiquetas** para propagar etiquetas desde el trabajo y la definición del trabajo a la tarea de Amazon ECS.

1. En la sección **Estrategia de reintento: *opcional***, ingrese lo siguiente:

   1. En **Intentos de trabajo**, ingrese el número de veces que AWS Batch intenta mover el trabajo al estado `RUNNABLE`. Ingrese un número entero entre 1 y 10.

   1. En **Condiciones de la estrategia de reintento**, seleccione **Agregar evaluación al salir**. Introduzca al menos un valor de parámetro y, a continuación, elija una **Acción**. Para cada conjunto de condiciones, la **Acción** debe estar configurada como **Reintentar** o **Salir**. Estas acciones significan lo siguiente:
      + **Reintentar**: AWS Batch se vuelve a intentar hasta alcanzar el número de intentos de trabajo que especificó.
      + **Salir**: AWS Batch deja de volver a intentar el trabajo.
**importante**  
Si elige **Agregar evaluar al salir**, debe configurar al menos un parámetro y elegir una **Acción** o **Eliminar evaluar al salir**.

1. En la sección **Propiedades de la tarea**, ingrese lo siguiente:

   1. En **Función de ejecución (*condicional*)**, elija una función que permita a los agentes de Amazon ECS realizar llamadas a la AWS API en su nombre. Para obtener más información sobre la creación de un **Rol de ejecución**, cosulte [Tutorial: creación del rol de ejecución de IAM](create-execution-role.md).

   1. Elija **Habilitar el comando de ejecución ECS** para permitir el acceso directo al shell del contenedor de Amazon ECS y omitir el sistema operativo del host. Debe elegir un **Rol de tarea**.
**importante**  
El comando **Ejecución de ECS** requiere que el sistema de archivos sea modificable. 

   1. Para el **rol de tarea**, elija un rol de Amazon ECS Identity and Access Management (IAM) para permitir que el contenedor realice llamadas a la AWS API en su nombre. Para obtener más información, consulte [Rol de IAM de las tareas de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

   1. En **Modo IPC**, seleccione `host`, `task` o `none`. Si se especifica `host`, todos los contenedores que están dentro de las tareas que tienen especificado el modo de IPC del host en la misma instancia de contenedor comparten los mismos recursos de IPC con la instancia Amazon EC2 del host. Si se especifica la tarea, todos los contenedores que están dentro de la tarea especificada comparten los mismos recursos de IPC. Si no se especifica nada, los recursos de IPC dentro de los contenedores de una tarea son privados y no se comparten con otros contenedores en una tarea o en la instancia de contenedor. Si no se especifica ningún valor, el uso compartido del espacio de nombre de recursos de IPC depende de la configuración del daemon de Docker en la instancia de contenedor.

   1. En **Modo PID**, elija `host` o `task`. Por ejemplo, la supervisión de los archivos sidecar puede necesitar `pidMode` para acceder a información sobre otros contenedores que se ejecutan en la misma tarea. Si se especifica `host`, todos los contenedores dentro de las tareas que tienen especificado el modo de PID del host en la misma instancia de contenedor comparten el mismo espacio de nombres del proceso con la instancia Amazon EC2 del host. Si se especifica `task`, todos los contenedores dentro de la tarea especificada comparten el mismo espacio de nombres del proceso. Si no se especifica ningún valor, el valor predeterminado es un espacio de nombre privado para cada contenedor. 

1. En la sección **Recursos consumibles**, ingrese lo siguiente:

   1. Ingrese un **Nombre** único y el **Valor solicitado**.

   1. Puede agregar más recursos consumibles seleccionando **Agregar recurso consumible**.

1. En la sección **Almacenamiento**, ingrese lo siguiente:

   1. Ingrese el **Nombre** y la **Ruta de origen** del volumen y, a continuación, seleccione **Agregar volumen**. También puede optar por activar Habilitar EFS.

   1. Puede agregar más volúmenes seleccionando **Agregar volumen**.

1. En **Parámetros**, elija **Agregar parámetros** para añadir marcadores de sustitución de parámetros como pares **Clave** y **Valores** opcionales.

1. Seleccione **Página siguiente**.

1. En la sección **Configuración del contenedor**:

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

   1. En **Contenedor esencial**, actívelo si el contenedor es esencial.

   1. En **Imagen**, elija la imagen Docker que desea utilizar para su trabajo. De manera predeterminada, las imágenes del registro de Docker Hub están disponibles. También es posible especificar otros repositorios con `repository-url/image:tag`. El nombre puede tener una longitud máxima de 225 caracteres. Puede contener letras mayúsculas y minúsculas, números, guiones medios (-), guiones bajos (\$1), dos puntos (:), barras inclinadas (/) y signos numéricos (\$1). Este parámetro se asigna a `Image` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y el parámetro `IMAGE` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).
**nota**  
La arquitectura de la imagen de Docker debe coincidir con la arquitectura del procesador de los recursos informáticos en las que estén programadas. Por ejemplo, las imágenes de Docker basadas en ARM solo se pueden ejecutar en recursos informáticos basados en ARM.
      + Las imágenes de los repositorios públicos de Amazon ECR utilizan las convenciones de nomenclatura completa `registry/repository[:tag]` o `registry/repository[@digest]` (por ejemplo, `public.ecr.aws/registry_alias/my-web-app:latest`).
      + Las imágenes de los repositorios de Amazon ECR utilizan la convención de nomenclatura completa `registry/repository[:tag]` (por ejemplo, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`).
      + Las imágenes de los repositorios oficiales de Docker Hub utilizan un solo nombre (por ejemplo, `ubuntu` o `mongo`).
      + Las imágenes de otros repositorios de Docker Hub se clasifican con un nombre de organización (por ejemplo, `amazon/amazon-ecs-agent`).
      + Las imágenes de otros repositorios online se cualifican más con un nombre de dominio (por ejemplo, `quay.io/assemblyline/ubuntu`).

   1. En **Requisitos de recursos**, configure cada una de las siguientes opciones:

      1. Para **v CPUs**, elige el número de CPUs para el contenedor.

      1. En **Memoria**, elija la cantidad de memoria para el contenedor.

      1. Para **GPU *(opcional)***, elige el número de GPUs para el contenedor.

   1. En **Usuario**, introduzca el nombre de usuario a utilizar dentro del contenedor.

   1. Active la opción **Habilitar el sistema de archivos de solo lectura** para eliminar el acceso de escritura al volumen.

   1. Active **Privilegiado** para otorgar al contenedor de su trabajo permisos elevados en la instancia host, similares a los del usuario raíz. 

   1. En **Comando**, ingrese los comandos en el campo como su equivalente de matriz de cadenas **JSON**.

      Este parámetro se asigna a `Cmd` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y el parámetro `COMMAND` se corresponde con [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Para obtener más información sobre el Docker `CMD` parámetro, consulta [https://docs.docker.com/engine/reference/builder/](https://docs.docker.com/engine/reference/builder/#cmd) \$1cmd.
**nota**  
También puede usar valores predeterminados para la sustitución de parámetros y marcadores de posición en el comando. Para obtener más información, consulte [Parameters](job_definition_parameters.md#parameters).

   1. En **Credenciales del repositorio: *opcional***, ingrese el ARN del secreto que contiene sus credenciales.

   1. En **Variables de entorno: *opcional***, seleccione **Agregar variables de entorno** para agregar variables de entorno y pasarlas al contenedor.

   1. En la sección **Parámetros de Linux: *opcional***:

      1. Active la opción **Habilitar el proceso** para ejecutar un proceso dentro del contenedor. 

      1. En **Tamaño de memoria compartida**, ingrese el tamaño (en MiB) del volumen de /dev/shm.

      1. En **Tamaño de intercambio máximo**, introduzca la cantidad total de memoria de intercambio (en MiB) que puede utilizar el contenedor.

      1. En **Intercambio**, introduzca un valor entre 0 y 100 para indicar el comportamiento de intercambio del contenedor. Si no especifica un valor y el intercambio está activado, el valor predeterminado es 60. 

      1. En el caso de los **Dispositivos**, seleccione **Agregar dispositivo** para añadir un dispositivo:

         1. En **Container path (Ruta del contenedor)**, especifique la ruta de la instancia del contenedor que va a exponer el dispositivo asignado a la instancia del host. Si lo deja en blanco, se utiliza la ruta del host en el contenedor.

         1. En **Host path (Ruta de host)**, especifique la ruta de un dispositivo de la instancia del host.

         1. En la página **Permisos**, haga clic en uno o varios permisos para aplicarlos al dispositivo. Los permisos disponibles son **READ**, **WRITE** y **MKNOD**.

      1. En el caso de **Tmpfs**, seleccione **Agregar tmpfs** para añadir una montura `tmpfs`.

   1. 
**nota**  
El registro de Firelens debe realizarse en un contenedor dedicado. Cómo configurar el registro de FireLens:  
En todos los contenedores, excepto en el contenedor dedicado a Firelens, configure el **Controlador de registro** en `awsfirelens`.
En el contenedor de Firelens, configure la **Configuración de Firelens: opcional** y la **Configuración de registro: *opcional*** para el destino del registro.

      En la sección **Configuración de Firelens: opcional**:
**importante**  
AWS Batch aplica el modo de `host` red en trabajos Amazon ECS que no son de MNP ni de Fargate. El [Usuario raíz es obligatorio](https://github.com/aws/aws-for-fluent-bit/blob/mainline/troubleshooting/debugging.md#amazon-ecs-firelens-root-is-required) para Amazon ECS Firelens. Para [mayor seguridad](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#network_mode), cuando ejecute tareas utilizando el modo de red `host`, Amazon ECS recomienda no ejecutar contenedores con el usuario raíz (UID 0). Por lo tanto, todos los trabajos de ECS que no sean de MNP ni de Fargate y que registren Firelens no cumplirán con las prácticas recomendadas de seguridad.

      1. En **Tipo**, elija `fluentd` o `fluentbit`. 

      1. En **Opciones**, introduzca el par de opciones. name/value Puede agregar más **Opciones** mediante la **Opción agregada**.

   1.  En la sección de **Configuración de registro: *opcional***:

      1. En el **Controlador de registro**, elija el controlador de registro que desee utilizar. [Para obtener más información sobre los controladores de registro disponibles, consulte: LogConfiguration LogDriver.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-logDriver)
**nota**  
Se utiliza el controlador de registro `awslogs` de forma predeterminada.

      1. En **Opciones**, elija **Agregar opción** para agregar una opción. Introduzca un par nombre-valor y, a continuación, elija **Agregar opción**.

      1. En **Secretos**, seleccione **Agregar secreto**. Introduzca un par nombre-valor y, a continuación, seleccione **Agregar secreto** para añadir un secreto.
**sugerencia**  
[Para obtener más información, consulte: Opciones secretas. LogConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

   1. En **Puntos de montaje: *opcional***, elija la configuración **Agregar puntos de montaje** para agregar puntos de montaje a los volúmenes de datos. Debe especificar el volumen de origen y la ruta del contenedor. 

   1. En **Secretos: *opcional***, seleccione **Agregar secreto** para añadir un secreto. A continuación, introduzca un par nombre-valor y seleccione **Agregar secreto**.
**sugerencia**  
[Para obtener más información, consulte: Opciones secretas. LogConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

   1. En **Unlimits: *opcional***, seleccione **Agregar ulimit** para agregar un valor de `ulimits` al contenedor. Introduzca los valores de **Nombre**, **Límite flexible** y **Límite invariable** y, a continuación, elija **Agregar límite máximo**.

   1. En **Dependencias: *opcional***, elija **Agregar dependencias de contenedor**. Elija el nombre del contenedor y su estado para determinar cuándo comienza.

1. Si solo tiene un contenedor configurado, debe elegir **Agregar contenedor** y completar la configuración del nuevo contenedor. De lo contrario, elija **Siguiente** para revisarla. 

# Creación de una definición de trabajo paralelo de varios nodos
<a name="create-multi-node-job-def"></a>

Antes de poder ejecutar trabajos AWS Batch, debe crear una definición de trabajo. Este proceso varía ligeramente para los trabajos paralelos entre un solo nodo y de varios nodos. Este tema trata específicamente sobre cómo crear una definición de trabajo para un trabajo paralelo de AWS Batch varios nodos (también conocido como *programación de bandas*). Para obtener más información, consulte [Trabajos paralelos de varios nodos](multi-node-parallel-jobs.md). 

**nota**  
AWS Fargate no admite trabajos paralelos de varios nodos.

**Topics**
+ [Tutorial: creación de una definición de trabajo paralelo de varios nodos en los recursos de Amazon EC2](multi-node-job-def-ec2.md)

# Tutorial: creación de una definición de trabajo paralelo de varios nodos en los recursos de Amazon EC2
<a name="multi-node-job-def-ec2"></a>

Para crear una definición de trabajo paralelo de varios nodos en recursos de Amazon Elastic Compute Cloud (Amazon EC2).

**nota**  
Para crear una definición de trabajo *de un solo nodo*, consulte [Creación de una definición de trabajo de un solo nodo en los recursos de Amazon EC2](create-job-definition-EC2.md).

**Para crear una definición de trabajo paralelo de varios nodos en los recursos de Amazon EC2:**

1. Abra la AWS Batch consola en. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)

1. En la barra de navegación, seleccione la Región de AWS que desee utilizar.

1. En el panel de navegación, seleccione **Definiciones de trabajo**.

1. Seleccione **Creación de**.

1. Para el **Tipo de orquestación,** seleccione **Amazon Elastic Compute Cloud (Amazon EC2).**

1. En **Habilitar el paralelo de varios nodos**, active el paralelo de varios nodos.

1. En **Nombre**, escriba un nombre único para la definición de trabajo. El nombre puede tener una longitud máxima de 128 caracteres y puede contener mayúsculas y minúsculas, números, guiones (-) y guiones bajos (\$1).

1. (Opcional) En **Tiempo de espera de ejecución**, especifique el número máximo de segundos que desea permitir que el trabajo intente ejecutarse. Si un intento supera la duración del tiempo de espera, el intento se detiene y pasa a un estado `FAILED`. Para obtener más información, consulte [Tiempos de espera de trabajo](job_timeouts.md).

1. (Opcional) Activa la **Prioridad de programación**. Introduzca un valor de prioridad de programación entre 0 y 100. Los valores más altos tienen mayor prioridad respecto a los valores más bajos.

1. (Opcional) En **Intentos de trabajo**, introduzca el número de veces que AWS Batch intenta mover el trabajo al estado `RUNNABLE`. Ingrese un número entero entre 1 y 10.

1. (Opcional) Para las **Condiciones de la estrategia de reintento**, seleccione **Agregar evaluación al salir**. Introduzca al menos un valor de parámetro y, a continuación, elija una **Acción**. Para cada conjunto de condiciones, la **Acción** debe estar configurada como **Reintentar** o **Salir**. Estas acciones significan lo siguiente: 
   + **Reintentar**: AWS Batch se vuelve a intentar hasta alcanzar el número de intentos de trabajo que especificó.
   + **Salir**: AWS Batch deja de volver a intentar el trabajo.
**importante**  
Si elige **Agregar evaluar al salir**, debe configurar al menos un parámetro y elegir una **Acción** o **Eliminar evaluar al salir**.

1. (Opcional) Amplíe **Etiquetas** y, a continuación, elija **Agregar etiqueta** para agregar etiquetas al recurso. Elija **Agregar nueva etiqueta** e introduzca la clave y el valor opcional. También puede activar **Propagar etiquetas** para propagar etiquetas desde el trabajo y la definición del trabajo a la tarea de Amazon ECS.

1. Seleccione **Página siguiente**.

1. En **Number of nodes (Número de nodos)**, introduzca el número total de nodos que desea utilizar en el trabajo.

1. En **Main node (Nodo principal)**, introduzca el índice de nodo que desea utilizar para el nodo principal. El índice de nodo principal predeterminado es `0`.

1. En **Tipo de instancia**, elija un tipo de instancia.
**nota**  
El tipo de instancia que elija se aplica a todos los nodos.

1. En **Parámetros**, elija **Agregar parámetros** para añadir marcadores de sustitución de parámetros como pares **Clave** y **Valores** opcionales.

1. En la sección **Rangos de nodos**:

   1. Seleccione **Agregar rango de nodos**. Esto crea una sección de **Rango de nodos**.

   1. En **Target nodes (Nodos de destino)**, especifique el rango del grupo de nodos utilizando la notación `range_start:range_end`.

      Puede crear hasta cinco rangos de nodos para los nodos que ha especificado para el trabajo. Los rangos de nodos utilizan el valor de índice para un nodo, y el índice de nodo comienza a partir de 0. Asegúrese de que el valor del índice final del rango del grupo de nodos final sea uno menos que el número de nodos que especificó. Por ejemplo, supongamos que ha especificado 10 nodos y desea utilizar un único grupo de nodos. Entonces, el rango final será 9.

   1. En **Imagen**, elija la imagen Docker que desea utilizar para su trabajo. De manera predeterminada, las imágenes del registro de Docker Hub están disponibles. También es posible especificar otros repositorios con `repository-url/image:tag`. El nombre puede tener una longitud máxima de 225 caracteres. Puede contener letras mayúsculas y minúsculas, números, guiones medios (-), guiones bajos (\$1), dos puntos (:), barras inclinadas (/) y signos numéricos (\$1). Este parámetro se asigna a `Image` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y el parámetro `IMAGE` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).
**nota**  
La arquitectura de la imagen de Docker debe coincidir con la arquitectura del procesador de los recursos informáticos en las que estén programadas. Por ejemplo, las imágenes de Docker basadas en ARM solo se pueden ejecutar en recursos informáticos basados en ARM.
      + Las imágenes de los repositorios públicos de Amazon ECR utilizan las convenciones de nomenclatura completa `registry/repository[:tag]` o `registry/repository[@digest]` (por ejemplo, `public.ecr.aws/registry_alias/my-web-app:latest`).
      + Las imágenes de los repositorios de Amazon ECR utilizan la convención de nomenclatura completa `registry/repository[:tag]`. Por ejemplo, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`
      + Las imágenes de los repositorios oficiales de Docker Hub utilizan un solo nombre (por ejemplo, `ubuntu` o `mongo`).
      + Las imágenes de otros repositorios de Docker Hub se clasifican con un nombre de organización (por ejemplo, `amazon/amazon-ecs-agent`).
      + Las imágenes de otros repositorios online se cualifican más con un nombre de dominio (por ejemplo, `quay.io/assemblyline/ubuntu`).

   1. En **Comando**, ingrese los comandos en el campo como su equivalente de matriz de cadenas **JSON**.

      Este parámetro se asigna a `Cmd` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y el parámetro `COMMAND` se corresponde con [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). [Para obtener más información sobre el Docker`CMD` parámetro, consulta https://docs.docker.com/engine/ reference/builder/ \$1cmd.](https://docs.docker.com/engine/reference/builder/#cmd)
**nota**  
También puede usar valores predeterminados para la sustitución de parámetros y marcadores de posición en el comando. Para obtener más información, consulte [Parameters](job_definition_parameters.md#parameters).

   1. Para **v CPUs**, especifique el número de v que desea reservar CPUs para el contenedor. Este parámetro se corresponde con `CpuShares` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--cpu-shares` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Cada vCPU es equivalente a 1 024 cuotas de CPU. Debe especificar al menos una vCPU.

   1. En **Memoria**, especifique límite máximo (en MiB) de memoria que quiera presentarle al contenedor del trabajo. Si su contenedor intenta superar la memoria especificada aquí, el contenedor se detiene. Este parámetro se corresponde con `Memory` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--memory` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Debe especificar al menos 4 MiB de memoria para un trabajo.
**nota**  
Para maximizar la utilización de los recursos, puede proporcionar a los trabajos la mayor cantidad de memoria posible para un tipo de instancia determinado. Para obtener más información, consulte [Administración de la memoria de recurso de computación](memory-management.md).

   1. (Opcional) En **Número de GPUs**, especifique el número de usos de GPUs su trabajo. El trabajo se ejecuta en un contenedor y el número especificado de ellos GPUs están anclados a ese contenedor.

   1. (Opcional) Para el **rol Job**, puede especificar un rol de IAM que proporcione al contenedor de su trabajo permisos para usar el AWS APIs. Esta característica utiliza roles de IAM de Amazon ECS para otorgarle funcionalidad a la tarea. Para obtener más información, incluidos los requisitos previos de configuración, consulte [Roles de IAM para tareas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.
**nota**  
Para trabajos que se ejecutan en recursos de Fargate, se requiere un puesto de trabajo.
**nota**  
Aquí solo se muestran roles con la relación de confianza del **Rol de tarea de servicio de Amazon Elastic Container**. Para obtener más información sobre cómo crear un rol de IAM para sus AWS Batch trabajos, consulte [Creación de un rol y una política de IAM para sus tareas en la Guía para](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role) *desarrolladores de Amazon Elastic Container Service*.

   1. (Opcional) En **la función de ejecución**, especifique una función de IAM que conceda permiso a los agentes de contenedores de Amazon ECS para realizar llamadas a la AWS API en su nombre. Esta característica utiliza roles de IAM de Amazon ECS para otorgarle funcionalidad a la tarea. Para obtener más información, consulte [Roles de IAM de ejecución de tareas de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*. 

1. (Opcional) Expandir **Configuración adicional**:

   1. En el caso de **Variables de entorno**, seleccione **Agregar variable de entorno** para añadir variables de entorno como pares de nombre-valor. Estas variables se transfieren al contenedor.

   1. Para la **configuración del rol de trabajo**, puede especificar un rol de IAM que proporcione al contenedor de su trabajo permisos para usar el AWS APIs. Esta característica utiliza roles de IAM de Amazon ECS para otorgarle funcionalidad a la tarea. Para obtener más información, incluidos los requisitos previos de configuración, consulte [Roles de IAM para tareas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.
**nota**  
Para trabajos que se ejecutan en recursos de Fargate, se requiere un puesto de trabajo.
**nota**  
Aquí solo se muestran roles con la relación de confianza del **Rol de tarea de servicio de Amazon Elastic Container**. Para obtener más información sobre cómo crear un rol de IAM para trabajos de AWS Batch , consulte [Creación de un rol de IAM y una política para sus tareas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

   1. En **Función de ejecución**, especifique una función de IAM que conceda permiso a los agentes de contenedor de Amazon ECS para realizar llamadas a la AWS API en su nombre. Esta característica utiliza roles de IAM de Amazon ECS para otorgarle funcionalidad a la tarea. Para obtener más información, consulte [Roles de IAM de ejecución de tareas de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

1. En la sección **Configuración de seguridad**:

   1. (Opcional) Para concederle privilegios elevados al contenedor del trabajo en la instancia del host (similares a los de un usuario `root`), active **Privilegiado**. Este parámetro se corresponde con `Privileged` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--privileged` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Opcional) En **Usuario**, introduzca el nombre de usuario a utilizar dentro del contenedor. Este parámetro se corresponde con `User` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--user` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Opcional) En **Secretos**, seleccione **Agregar secreto** para añadir los secretos como pares de nombre-valor. Estos secretos están expuestos en el contenedor. [Para obtener más información, consulteLogConfiguration: Opciones secretas.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

1. En la sección de **Configuración de Linux**:

   1. Active la opción **Habilitar el sistema de archivos de solo lectura** para eliminar el acceso de escritura al volumen.

   1. (Opcional) Active la opción **Habilitar el proceso init** para ejecutar un proceso `init` dentro del contenedor. Este proceso reenvía señales y recoge procesos.

   1. En **Tamaño de memoria compartida**, introduzca el tamaño (en MiB) del `/dev/shm` volumen de .

   1. En **Tamaño de intercambio máximo**, introduzca la cantidad total de memoria de intercambio (en MiB) que puede utilizar el contenedor.

   1. En **Intercambio**, introduzca un valor entre 0 y 100 para indicar el comportamiento de intercambio del contenedor. Si no especifica un valor y el intercambio está habilitado, el valor predeterminado es 60. [Para obtener más información, consulte:swappiness. LinuxParameters](https://docs.aws.amazon.com/batch/latest/APIReference/API_LinuxParameters.html#Batch-Type-LinuxParameters-swappiness)

   1. (Opcional) En el caso de los **Dispositivos**, seleccione **Agregar dispositivo** para añadir un dispositivo:

      1. En **Container path (Ruta del contenedor)**, especifique la ruta de la instancia del contenedor que va a exponer el dispositivo asignado a la instancia del host. Si lo deja en blanco, se utiliza la ruta del host en el contenedor.

      1. En **Host path (Ruta de host)**, especifique la ruta de un dispositivo de la instancia del host.

      1. En la página **Permisos**, haga clic en uno o varios permisos para aplicarlos al dispositivo. Los permisos disponibles son **READ**, **WRITE** y **MKNOD**.

1. (Opcional) En **Puntos de montaje**, elija la configuración **Agregar puntos de montaje** para agregar puntos de montaje a los volúmenes de datos. Debe especificar el volumen de origen y la ruta del contenedor. Estos puntos de montaje se transfieren al daemon Docker de una instancia de contenedor. También puede elegir que el volumen sea de **Solo lectura**.

1. (Opcional) En **Configuración de Ulimits**, seleccione **Agregar ulimit** para agregar un `ulimits` valor al contenedor. Introduzca los valores de **Nombre**, **Límite flexible** y **Límite invariable** y, a continuación, elija **Agregar límite máximo**.

1. (Opcional) En **Configuración de volúmenes**, seleccione **Agregar volumen** para crear una lista de volúmenes que se transferirán al contenedor. Introduzca el **Nombre** y la **Ruta de origen** del volumen y, a continuación, seleccione **Agregar volumen**. También puede optar por activar **Habilitar EFS**.

1. (Opcional) En el caso de **Tmpfs**, seleccione **Agregar tmpfs** para añadir una montura `tmpfs`.

1. En la sección de **Propiedades de tareas**:

   1. En **Función de ejecución (condicional)**, elija una función que permita a los agentes de Amazon ECS realizar llamadas a la AWS API en su nombre. Para obtener más información sobre la creación de un **Rol de ejecución**, cosulte [Tutorial: creación del rol de ejecución de IAM](create-execution-role.md).

   1. 
**importante**  
Para utilizar el **comando de ejecución de ECS**, su entorno de computación debe cumplir con las [consideraciones del entorno de computación para los trabajos paralelos de varios nodos](mnp-ce.md).

      Elija **Habilitar el comando de ejecución ECS** para permitir el acceso directo al shell del contenedor de Amazon ECS y omitir el sistema operativo del host. Debe elegir un **Rol de tarea**.
**importante**  
El comando **Ejecución de ECS** requiere que el sistema de archivos sea modificable. 

   1. Para el **rol de tarea**, elija un rol de Amazon ECS Identity and Access Management (IAM) para permitir que el contenedor realice llamadas a la AWS API en su nombre. Para obtener más información, consulte [Rol de IAM de las tareas de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

1. (Opcional) En la sección de **Configuración de registro**:

   1. En el **Controlador de registro**, elija el controlador de registro que desee utilizar. [Para obtener más información sobre los controladores de registro disponibles, consulteLogConfiguration: LogDriver.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-logDriver)
**nota**  
Se utiliza el controlador de registro `awslogs` de forma predeterminada.

   1. En **Opciones**, elija **Agregar opción** para agregar una opción. Introduzca un par nombre-valor y, a continuación, elija **Agregar opción**.

   1. En **Secretos**, seleccione **Agregar secreto**. Introduzca un par nombre-valor y, a continuación, seleccione **Agregar secreto** para añadir un secreto.
**sugerencia**  
[Para obtener más información, consulte: Opciones secretas. LogConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

1. Seleccione **Página siguiente**.

1. Para la **Revisión de definición de trabajo**, revise los pasos de configuración. Si necesita realizar cambios, elija **Editar**. Cuando haya terminado, seleccione **Creación de definición de trabajo**.

# Plantilla de definición de trabajo que utiliza ContainerProperties
<a name="job-definition-template"></a>

A continuación, se muestra una plantilla de definición de trabajo vacía que incluye un único contenedor. Puede utilizar esta plantilla para crear la definición del trabajo, que posteriormente se puede guardar en un archivo y utilizarse con la opción de la AWS CLI `--cli-input-json`. Para obtener más información sobre estos parámetros, consulte [JobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_JobDefinition.html).

**nota**  
Puede generar la plantilla de definición de trabajo de un único contenedor con el siguiente comando de 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 definición de trabajo para ContainerProperties
<a name="job_definition_parameters"></a>

Las definiciones de trabajo que usan [https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html) se dividen en varias partes:
+ El nombre de la definición de trabajo
+ El tipo de definición de trabajo
+ Los valores predeterminados de marcador de sustitución de parámetros
+ Las propiedades del contenedor para el trabajo
+ Las propiedades de Amazon EKS para la definición del trabajo que son necesarias para los trabajos que se ejecutan en los recursos de Amazon EKS
+ Las propiedades de nodo necesarias para un trabajo paralelo de varios nodos
+ Las capacidades de la plataforma que son necesarias para los trabajos que se ejecutan en los recursos de Fargate
+ Los detalles de propagación de etiquetas predeterminados de la definición del trabajo
+ La estrategia de reintento predeterminada para la definición del trabajo
+ La prioridad de programación predeterminada para la definición del trabajo
+ Las etiquetas predeterminadas para la definición del trabajo
+ El tiempo de espera predeterminado de la definición del trabajo

**Contents**
+ [Nombre de la definición de trabajo](#jobDefinitionName)
+ [Tipo](#type)
+ [Parameters](#parameters)
+ [Propiedades de contenedor](#containerProperties)
+ [Propiedades de Amazon EKS](#job-definition-parameters-eks-properties)
+ [Capacidades de plataforma](#job-definition-parameters-platform-capabilities)
+ [Propagar etiquetas](#job-definition-parameters-propagate-tags)
+ [Propiedades del nodo](#nodeProperties)
+ [Estrategia de reintento](#retryStrategy)
+ [Prioridad de programación](#job-definition-parameters-schedulingPriority)
+ [Etiquetas](#job-definition-parameters-tags)
+ [Tiempo de espera](#timeout)

## Nombre de la definición de trabajo
<a name="jobDefinitionName"></a>

`jobDefinitionName`  
Al registrar una definición de trabajo, es necesario especificar un nombre. El nombre puede tener una longitud máxima de 128 caracteres. Puede contener letras mayúsculas y minúsculas, números, guiones (-) y guiones bajos (\$1). A la primera definición de trabajo registrado con ese nombre se le da asigna la revisión 1. A las definiciones de trabajo posteriores registradas con el mismo nombre se les asignan números de revisión en orden ascendente.   
Tipo: cadena  
Obligatorio: sí

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

`type`  
Al registrar una definición de trabajo, es necesario especificar el tipo de trabajo. Si el trabajo se ejecuta en recursos de Fargate, entonces `multinode` no es compatible. Para obtener más información sobre los trabajos paralelos de varios nodos, consulte [Creación de una definición de trabajo paralelo de varios nodos](create-multi-node-job-def.md).  
Tipo: cadena  
Valores válidos: `container` \$1 `multinode`  
Obligatorio: sí

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

`parameters`  
Al enviar un trabajo, es posible especificar parámetros que sustituyan los marcadores de posición o ignoren los parámetros de definición de trabajo predeterminados. Los parámetros de las solicitudes de envío de trabajo prevalecen sobre los predeterminados de la definición de trabajo. Esto significa que puede usar la misma definición de trabajo para varios trabajos que usen el mismo formato. También puede cambiar mediante programación los valores del comando en el momento del envío.  
Tipo: mapa de cadena a cadena  
Obligatorio: no  
Al registrar una definición de trabajo, es posible utilizar marcadores de posición de sustitución de parámetros en el campo `command` de las propiedades de un contenedor de trabajo. La sintaxis es la siguiente.  

```
"command": [
    "ffmpeg",
    "-i",
    "Ref::inputfile",
    "-c",
    "Ref::codec",
    "-o",
    "Ref::outputfile"
]
```
En el ejemplo anterior, hay marcadores de posición de sustitución de parámetros `Ref::inputfile`, `Ref::codec` y `Ref::outputfile` en el comando. Puede usar el objeto `parameters` de la definición de trabajo para establecer valores predeterminados para estos marcadores de posición. Por ejemplo, para definir un valor predeterminado para el marcador de posición `Ref::codec`, especifique lo siguiente en la definición del trabajo:  

```
"parameters" : {"codec" : "mp4"}
```
Cuando esta definición de trabajo se envíe para su ejecución, el argumento `Ref::codec` del comando para el contenedor se sustituirá por el valor predeterminado, `mp4`.

## Propiedades de contenedor
<a name="containerProperties"></a>

Al registrar una definición de trabajo, especifique una lista de las propiedades de contenedor que se transmiten al daemon de Docker en una instancia de contenedor cuando se coloca el trabajo. Las siguientes propiedades de contenedor se permiten en una definición de trabajo. Para los trabajos de un solo nodo, estas propiedades de contenedor se establecen en el nivel de definición de trabajo. En los trabajos paralelos de varios nodos, las propiedades de contenedor se establecen en el nivel [Propiedades del nodo](#nodeProperties) para cada grupo de nodos.

`command`  
El comando que se transfiere al contenedor. Este parámetro se asigna a `Cmd` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y el parámetro `COMMAND` se corresponde con [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Para obtener más información sobre el parámetro `CMD` de Docker, consulte [https://docs.docker.com/engine/reference/builder/\$1cmd](https://docs.docker.com/engine/reference/builder/#cmd).  

```
"command": ["string", ...]
```
Tipo: matriz de cadenas  
Obligatorio: no

`environment`  
Las variables de entorno a transferir a un contenedor. Este parámetro se corresponde con `Env` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--env` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).  
No es recomendable usar variables del entorno en texto sin formato para información confidencial, como los datos de la credencial.
Las variables de entorno no pueden empezar por `AWS_BATCH`. Esta convención de nomenclatura está reservada para las variables que establece el servicio de AWS Batch.
Tipo: matriz de pares clave-valor  
Obligatorio: no    
`name`  
El nombre de la variable de entorno.  
Tipo: cadena  
Obligatorio: sí, si se utiliza `environment`.  
`value`  
El valor de la variable de entorno.  
Tipo: cadena  
Obligatorio: sí, si se utiliza `environment`.

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

`executionRoleArn`  
Al registrar una definición de trabajo, es posible especificar un rol de IAM. El rol le concede al agente de contenedor de Amazon ECS permisos para llamar a las acciones de la API que se especifican en sus políticas asociadas, en nombre de quien registra la definición de trabajo. Para los trabajos que se ejecutan en recursos de Fargate, debe proporcionar un rol de ejecución. Para obtener más información, consulte [AWS Batch Función de ejecución de IAM](execution-IAM-role.md).  
Tipo: string  
Obligatorio: no

`fargatePlatformConfiguration`  
La configuración de la plataforma para trabajos que se ejecutan en recursos de Fargate. Los trabajos que se ejecutan en los recursos de EC2 no deben especificar este parámetro.  
Tipo: objeto [FargatePlatformConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_FargatePlatformConfiguration.html)  
Obligatorio: no    
`platformVersion`  
La versión de la plataforma de AWS Fargate utilizada para los trabajos o `LATEST` para usar una versión reciente y aprobada de la plataforma de AWS Fargate.  
Tipo: cadena  
Valor predeterminado: `LATEST`  
Obligatorio: no

`image`  
La imagen que se utiliza para iniciar un trabajo. Esta cadena se transfiere directamente al daemon de Docker. Las imágenes del registro de Docker Hub están disponibles de forma predeterminada. También es posible especificar otros repositorios con `repository-url/image:tag`. Se permiten hasta 255 letras (mayúsculas y minúsculas), números, guiones, caracteres de subrayado, comas, puntos, barras diagonales y signos numéricos. Este parámetro se asigna a `Image` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y el parámetro `IMAGE` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).  
La arquitectura de la imagen de Docker debe coincidir con la arquitectura del procesador de los recursos informáticos en las que estén programadas. Por ejemplo, las imágenes de Docker basadas en ARM solo se pueden ejecutar en recursos informáticos basados en ARM.
+ Las imágenes de los repositorios públicos de Amazon ECR utilizan las convenciones de nomenclatura completa `registry/repository[:tag]` o `registry/repository[@digest]` (por ejemplo, `public.ecr.aws/registry_alias/my-web-app:latest`).
+ Las imágenes de los repositorios de Amazon ECR utilizan la convención de nomenclatura completa `registry/repository:[tag]`. Por ejemplo, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`.
+ Las imágenes de los repositorios oficiales de Docker Hub utilizan un solo nombre (por ejemplo, `ubuntu` o `mongo`).
+ Las imágenes de otros repositorios de Docker Hub se identifican con un nombre de organización (por ejemplo, `amazon/amazon-ecs-agent`).
+ Las imágenes de otros repositorios online se cualifican más con un nombre de dominio (por ejemplo, `quay.io/assemblyline/ubuntu`).
Tipo: cadena  
Obligatorio: sí

`instanceType`  
El tipo de instancia que se va a utilizar para un trabajo en paralelo de varios nodos. Todos los grupos de nodos de un trabajo paralelo de varios nodos deben utilizar el mismo tipo de instancia. Este parámetro no es aplicable a trabajos de contenedor de un solo nodo o para trabajos que se ejecutan en recursos de Fargate.  
Tipo: cadena  
Obligatorio: no

`jobRoleArn`  
Al registrar una definición de trabajo, es posible especificar un rol de IAM. El rol le concede al contenedor de trabajo permisos para llamar a las acciones de la API que se especifican en sus políticas asociadas, en nombre de quien registra la definición de trabajo. Para obtener más información, consulte [Roles de IAM para tareas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.  
Tipo: cadena  
Obligatorio: no

`linuxParameters`  
Modificaciones específicas de Linux que se aplican al contenedor, como los detalles de asignación de dispositivos.  

```
"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)  
Obligatorio: no    
`devices`  
Lista de dispositivos asignados en el contenedor. Este parámetro se corresponde con `Devices` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y la opción `--device` se corresponde con [docker run](https://docs.docker.com/engine/reference/run/).  
Este parámetro no es aplicable a trabajos que se ejecutan en recursos de Fargate.
Tipo: matriz de objetos [Dispositivo](https://docs.aws.amazon.com/batch/latest/APIReference/API_Device.html)  
Obligatorio: no    
`hostPath`  
Ruta en la que se encuentra el dispositivo disponible en la instancia de contenedor del host.  
Tipo: cadena  
Obligatorio: sí  
`containerPath`  
Ruta en la que queda expuesto el dispositivo en el contenedor. Si no se especifica, el dispositivo se expone en la misma ruta que la ruta del host.  
Tipo: cadena  
Obligatorio: no  
`permissions`  
Permisos del dispositivo en el contenedor. Si no se especifica, los permisos se establecen en `READ`, `WRITE` y `MKNOD`.  
Tipo: matriz de cadenas  
Obligatorio: no  
Valores válidos: `READ` \$1 `WRITE` \$1 `MKNOD`  
`initProcessEnabled`  
Si es “true” (verdadero), ejecute un proceso de `init` dentro del contenedor que reenvíe señales y aproveche procesos. Este parámetro se corresponde con la opción `--init` de [docker run](https://docs.docker.com/engine/reference/run/). Este parámetro requiere la versión 1.25 de la API remota de Docker o superior en su instancia de contenedor. Para comprobar la versión de la API remota de Docker en su instancia de contenedor, inicie sesión en su instancia de contenedor y ejecute el comando siguiente: `sudo docker version | grep "Server API version"`  
Tipo: Booleano  
Obligatorio: no  
`maxSwap`  
La cantidad total de memoria de intercambio (en MiB) que puede utilizar un trabajo. Este parámetro se traduce en la opción `--memory-swap` de [docker run](https://docs.docker.com/engine/reference/run/) donde el valor es la suma de la memoria del contenedor más el valor de `maxSwap`. Para obtener más información, consulte [Detalles de `--memory-swap`](https://docs.docker.com/config/containers/resource_constraints/#--memory-swap-details) en la documentación de Docker.  
Si se especifica un valor `maxSwap` para `0`, el contenedor no utiliza el intercambio. Los valores aceptados son `0` o cualquier entero positivo. Si se omite el parámetro `maxSwap`, el contenedor utiliza la configuración de intercambio de la instancia de contenedor en la que se está ejecutando. Debe establecerse un valor de `maxSwap` para el parámetro `swappiness`.  
Este parámetro no es aplicable a trabajos que se ejecutan en recursos de Fargate.
Tipo: entero  
Obligatorio: no  
`sharedMemorySize`  
El valor del tamaño (en MiB) del volumen `/dev/shm`. Este parámetro se corresponde con la opción `--shm-size` de [docker run](https://docs.docker.com/engine/reference/run/).  
Este parámetro no es aplicable a trabajos que se ejecutan en recursos de Fargate.
Tipo: entero  
Obligatorio: no  
`swappiness`  
Puede utilizar esta opción para ajustar el comportamiento de intercambio de memoria de un contenedor. Un valor `swappiness` de `0` impide que ocurra el intercambio a menos que sea absolutamente necesario. Un valor `swappiness` de `100` aumenta al máximo el intercambio de páginas. Los valores aceptados son números enteros comprendidos entre `0` y `100`. Si no se especifica el parámetro `swappiness`, se utiliza el valor predeterminado de `60`. Si no se especifica ningún valor para `maxSwap`, este parámetro se omite. Si `maxSwap` se establece en 0, el contenedor no utiliza intercambio. Este parámetro se corresponde con la opción `--memory-swappiness` de [docker run](https://docs.docker.com/engine/reference/run/).  
Tenga en cuenta lo siguiente cuando utilice una configuración de intercambio por contenedor.  
+ El espacio de intercambio debe estar habilitado y asignado a la instancia de contenedor para que los contenedores lo utilicen.
**nota**  
Las AMI optimizadas de Amazon ECS no tienen habilitado el intercambio de forma predeterminada. Debe habilitar el intercambio en la instancia para utilizar esta característica. Para obtener más información, consulte [Volúmenes de intercambio de almacén de instancias](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-store-swap-volumes.html) en la *Guía del usuario de Amazon EC2* o [¿Cómo asigno memoria para que funcione como espacio de intercambio en una instancia de Amazon EC2 mediante un archivo de intercambio?](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-memory-swap-file/).
+ Los parámetros de espacio de intercambio solo se admiten para definiciones de trabajos que utilizan recursos de EC2.
+ Si en una definición de trabajo se omiten los parámetros `maxSwap` y `swappiness`, cada contenedor tendrá un valor `swappiness` predeterminado de 60. El uso total de intercambio se limita al doble de la reserva de memoria del contenedor.
Este parámetro no es aplicable a trabajos que se ejecutan en recursos de Fargate.
Tipo: entero  
Obligatorio: no  
`tmpfs`  
La ruta del contenedor, las opciones de montaje y el tamaño del montaje tmpfs.  
Tipo: matriz de objetos [Tmpfs](https://docs.aws.amazon.com/batch/latest/APIReference/API_Tmpfs.html)  
Este parámetro no es aplicable a trabajos que se ejecutan en recursos de Fargate.
Obligatorio: no    
`containerPath`  
La ruta de archivo absoluta en el contenedor donde se monta el volumen tmpfs.  
Tipo: cadena  
Obligatorio: sí  
`mountOptions`  
La lista de opciones de montaje del volumen 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 cadenas  
Obligatorio: no  
`size`  
El tamaño (en MiB) del volumen tmpfs.  
Tipo: número entero  
Obligatorio: sí

`logConfiguration`  
La especificación de configuración de registro para el trabajo.  
Este parámetro se corresponde con `LogConfig` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y la opción `--log-driver` se corresponde con [docker run](https://docs.docker.com/engine/reference/run/). De forma predeterminada, los contenedores usan el mismo controlador de registro que el daemon de Docker. No obstante, el contenedor puede usar un controlador de registro distinto del daemon de Docker especificando un controlador de registro con este parámetro en la definición de contenedor. Para utilizar un controlador de registro distinto para un contenedor, el sistema de registro se debe configurar correctamente en la instancia de contenedor o en un servidor de registro distinto para opciones de registro remotas. Para obtener más información acerca de las opciones para los distintos controladores de registro admitidos, consulte [Configurar controladores de registro](https://docs.docker.com/engine/admin/logging/overview/) en la documentación de Docker.  
AWS Batch admite actualmente un subconjunto de los controladores de registro disponibles para el daemon de Docker (se muestra en el tipo de datos [LogConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html)).
Este parámetro requiere la versión 1.18 de la API remota de Docker o superior en su instancia de contenedor. Para comprobar la versión de la API remota de Docker en su instancia de contenedor, inicie sesión en su instancia de contenedor y ejecute el comando siguiente: `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)  
Obligatorio: no    
`logDriver`  
El controlador de registro que utilizar para el trabajo. De forma predeterminada, AWS Batch habilita el controlador de registro `awslogs`. Los valores válidos que se enumeran para este parámetro son controladores de registro con los que el agente del contenedor de Amazon ECS se puede comunicar de forma predeterminada.  
Este parámetro se corresponde con `LogConfig` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y la opción `--log-driver` se corresponde con [docker run](https://docs.docker.com/engine/reference/run/). De forma predeterminada, los trabajos usan el mismo controlador de registro que el daemon de Docker. No obstante, el trabajo puede usar un controlador de registro distinto del daemon de Docker especificando un controlador de registro con este parámetro en la definición de contenedor. Si desea especificar otro controlador de registro para un trabajo, el sistema de registro se debe configurar en la instancia de contenedor en el entorno de computación. O bien, configúrelo en otro servidor de registro para proporcionar opciones de registro remoto. Para obtener más información acerca de las opciones para los distintos controladores de registro admitidos, consulte [Configurar controladores de registro](https://docs.docker.com/engine/admin/logging/overview/) en la documentación de Docker.  
AWS Batch actualmente admite un subconjunto de los controladores de registro disponibles para el daemon de Docker. Es posible que haya controladores de registro adicionales en versiones futuras del agente de contenedor de Amazon ECS.
Los controladores de registro admitidos son `awslogs`, `fluentd`, `gelf`, `json-file`, `journald`, `logentries`, `syslog` y `splunk`.  
Los trabajos que se ejecutan en recursos de Fargate están restringidos a los controladores de registro `awslogs` y `splunk`.
Este parámetro requiere la versión 1.18 de la API remota de Docker o superior en su instancia de contenedor. Para comprobar la versión de la API remota de Docker en su instancia de contenedor, inicie sesión en su instancia de contenedor y ejecute el comando siguiente: `sudo docker version | grep "Server API version"`  
El agente de contenedor de Amazon ECS que se ejecuta en una instancia de contenedor debe registrar los controladores de registro disponibles en dicha instancia con la variable de entorno `ECS_AVAILABLE_LOGGING_DRIVERS`. De lo contrario, los contenedores ubicados en esa instancia no pueden usar estas opciones de configuración de registro. Para obtener más información, consulte [Configuración del agente de contenedor de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.  
`awslogs`  
Especifica el controlador de registro de los Registros de Amazon CloudWatch. Para obtener más información, consulte [Uso del controlador de registros awslogs](using_awslogs.md) y [Uso del controlador de Registros de Amazon CloudWatch](https://docs.docker.com/config/containers/logging/awslogs/) en la documentación de Docker.  
`fluentd`  
Especifica el controlador de registro Fluentd. Para obtener más información, incluidos el uso y las opciones, consulte [Controlador de registro Fluentd](https://docs.docker.com/config/containers/logging/fluentd/) en la documentación de Docker.  
`gelf`  
Especifica el controlador de registro Graylog Extended Format (GELF). Para obtener más información, incluidos el uso y las opciones, consulte [Controlador de registro Graylog Extended Format](https://docs.docker.com/config/containers/logging/gelf/) en la documentación de Docker.  
`journald`  
Especifica el controlador de registro journald. Para obtener más información, incluidos el uso y las opciones, consulte [Controlador de registro Journald](https://docs.docker.com/config/containers/logging/journald/) en la documentación de Docker.  
`json-file`  
Especifica el controlador de registro de archivos JSON. Para obtener más información, incluidos el uso y las opciones, consulte [Controlador de registro de archivos JSON](https://docs.docker.com/config/containers/logging/json-file/) en la documentación de Docker.  
`splunk`  
Especifica el controlador de registro Splunk. Para obtener más información, incluidos el uso y las opciones, consulte [(Controlador de registro Splunk](https://docs.docker.com/config/containers/logging/splunk/) en la documentación de Docker.  
`syslog`  
Especifica el controlador de registro syslog. Para obtener más información, incluidos el uso y las opciones, consulte [Controlador de registro Syslog](https://docs.docker.com/config/containers/logging/syslog/) en la documentación de Docker.
Tipo: cadena  
Obligatorio: sí  
Valores válidos: `awslogs` \$1 `fluentd` \$1 `gelf` \$1 `journald` \$1 `json-file` \$1 `splunk` \$1 `syslog`  
Si tiene un controlador personalizado que no se ha mostrado anteriormente y que desea utilizar con el agente de contenedor de Amazon ECS, puede bifurcar el proyecto del agente de contenedor de Amazon ECS [disponible en GitHub](https://github.com/aws/amazon-ecs-agent) y personalizarlo para que funcione con dicho controlador. Le recomendamos enviar solicitudes de inserción para los cambios que desea que incluyamos. No obstante, Amazon Web Services actualmente no permite solicitudes que ejecutan copias modificadas de este software.  
`options`  
Opciones de configuración de registro que enviar a un controlador de registro para el trabajo.  
Este parámetro requiere la versión 1.19 de la API remota de Docker o superior en su instancia de contenedor.  
Tipo: mapa de cadena a cadena  
Obligatorio: no  
`secretOptions`  
Un objeto que representa el secreto que transferir a la configuración de registro. Para obtener más información, consulte [Especificación de información confidencial](specifying-sensitive-data.md).  
Tipo: matriz de objetos  
Obligatorio: no    
`name`  
El nombre de la opción del controlador de registro que se va a configurar en el trabajo.  
Tipo: cadena  
Obligatorio: sí  
`valueFrom`  
El nombre de recurso de Amazon (ARN) del secreto que se va a exponer en la configuración de registro del contenedor. Los valores admitidos son el ARN completo del secreto del Secrets Manager o el ARN completo del parámetro en el almacén de parámetros SSM.  
Si el parámetro del almacén de parámetros SSM está en la misma Región de AWS que la tarea que se va a lanzar, se puede utilizar el ARN completo o el nombre del parámetro. Si el parámetro existe en una región distinta, el ARN completo debe especificarse.
Tipo: cadena  
Obligatorio: sí

`memory`  
*Este parámetro ha quedado obsoleto, utilice `resourceRequirements` en su lugar.*  
El número de MiB de memoria que reservar para el trabajo.  
Como ejemplo de cómo usar `resourceRequirements`, si la definición de su trabajo contiene una sintaxis similar a la siguiente.  

```
"containerProperties": {
  "memory": 512
}
```
La sintaxis equivalente a través de `resourceRequirements` es de la siguiente manera.  

```
"containerProperties": {
  "resourceRequirements": [
    {
      "type": "MEMORY",
      "value": "512"
    }
  ]
}
```
Tipo: número entero  
Obligatorio: sí

`mountPoints`  
Los puntos de montaje para los volúmenes de datos del contenedor. Este parámetro se corresponde con `Volumes` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--volume` de [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 objetos  
Obligatorio: no    
`sourceVolume`  
El nombre del volumen a montar.  
Tipo: cadena  
Obligatorio: sí, si se utiliza `mountPoints`.  
`containerPath`  
La ruta en el contenedor en la que montar el volumen de host.  
Tipo: cadena  
Obligatorio: sí, si se utiliza `mountPoints`.  
`readOnly`  
Si este valor es `true`, el acceso del contenedor al volumen es de solo lectura. Si este valor es `false`, el contenedor puede escribir en el volumen.  
Tipo: Booleano  
Obligatorio: no  
Valor predeterminado: False

`networkConfiguration`  
La configuración de red para los trabajos que se ejecutan en recursos de Fargate. Los trabajos que se ejecutan en los recursos de EC2 no deben especificar este parámetro.  

```
"networkConfiguration": { 
   "assignPublicIp": "string"
}
```
Tipo: matriz de objetos  
Obligatorio: no    
`assignPublicIp`  
Indica si el trabajo tiene una dirección IP pública. Esto es obligatorio si el trabajo requiere acceso a la red saliente.  
Tipo: cadena  
Valores válidos: `ENABLED` \$1 `DISABLED`  
Obligatorio: no  
Valor predeterminado: `DISABLED`

`privileged`  
Cuando este parámetro es verdadero, al contenedor se le conceden permisos elevados en la instancia de contenedor de host, similares a los de un usuario `root`. Este parámetro se corresponde con `Privileged` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--privileged` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Este parámetro no es aplicable a trabajos que se ejecutan en recursos de Fargate. No lo proporcione ni lo especifique como falso.  

```
"privileged": true|false
```
Tipo: Booleano  
Obligatorio: no

`readonlyRootFilesystem`  
Cuando este parámetro es verdadero, al contenedor se le concede acceso de solo lectura a su sistema de archivos raíz. Este parámetro se corresponde con `ReadonlyRootfs` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--read-only` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).  

```
"readonlyRootFilesystem": true|false
```
Tipo: Booleano  
Obligatorio: no

`resourceRequirements`  
El tipo y la cantidad de un recurso para asignar a un contenedor. Los recursos admitidos incluyen `GPU`, `MEMORY`, y `VCPU`.  

```
"resourceRequirements" : [
  {
    "type": "GPU",
    "value": "number"
  }
]
```
Tipo: matriz de objetos  
Obligatorio: no    
`type`  
El tipo de recurso para asignar a un contenedor. Los recursos admitidos incluyen `GPU`, `MEMORY`, y `VCPU`.  
Tipo: cadena  
Obligatorio: sí, si se utiliza `resourceRequirements`.  
`value`  
La cantidad del recurso especificado que se va a reservar para el contenedor. Los valores varían en función del `type` especificado.    
type=“GPU”  
El número de unidades GPU físicas que reservar para el contenedor. El número de unidades GPU reservadas para todos los contenedores de una tarea no puede superar el número de GPU disponibles en el recurso de computación en el que se lanza la tarea.  
type=“MEMORY”  
El límite máximo (en MiB) de memoria a presentar al contenedor. Si su contenedor intenta superar la memoria especificada aquí, el contenedor se cancela. Este parámetro se corresponde con `Memory` en la sección [ Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Creación de un contenedor) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y la opción `--memory` se corresponde con [docker run](https://docs.docker.com/engine/reference/run/). Debe especificar al menos 4 MiB de memoria para un trabajo. Es obligatorio, pero se puede especificar en varios lugares para trabajos paralelos de varios nodos (MNP). Debe especificarse para cada nodo al menos una vez. Este parámetro se corresponde con `Memory` en la sección [ Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Creación de un contenedor) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y la opción `--memory` se corresponde con [docker run](https://docs.docker.com/engine/reference/run/).  
Si está intentando maximizar la utilización de los recursos proporcionando a las tareas la mayor cantidad de memoria posible para un tipo de instancia determinado, consulte [Administración de la memoria de recurso de computación](memory-management.md).
Para los trabajos que se ejecutan en recursos de Fargate, `value` debe coincidir con uno de los valores admitidos. Además, el valor de `VCPU` debe ser uno de los valores compatibles con el valor de memoria correspondiente.      
<a name="Fargate-memory-vcpu"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/batch/latest/userguide/job_definition_parameters.html)  
type=“VCPU”  
El número de vCPU reservado para el trabajo. Este parámetro se corresponde con `CpuShares` en la sección [ Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Creación de un contenedor) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y la opción `--cpu-shares` se corresponde con [docker run](https://docs.docker.com/engine/reference/run/). Cada vCPU es equivalente a 1 024 cuotas de CPU. Para los trabajos que se ejecutan en recursos EC2, debe especificar al menos una vCPU. Es obligatorio, pero se puede especificar en varias ubicaciones. Debe especificarse para cada nodo al menos una vez.  
Para los trabajos que se ejecutan en recursos de Fargate, `value` debe coincidir con uno de los valores admitidos, y los valores de `MEMORY` deben ser uno de los valores admitidos para ese valor de vCPU. Los valores admitidos son 0.25, 0.5, 1, 2, 4, 8 y 16.  
El valor predeterminado para la cuota de recuento de recursos de vCPU bajo demanda de Fargate es de 6 vCPU. Para más información sobre las cuotas de Fargate, consulte [AWS Cuotas de Fargate ](https://docs.aws.amazon.com/general/latest/gr/ecs-service.html#service-quotas-fargate) en *Referencia general de Amazon Web Services*.
Tipo: cadena  
Obligatorio: sí, si se utiliza `resourceRequirements`.

`secrets`  
Los secretos del trabajo que se exponen como variables de entorno. Para obtener más información, consulte [Especificación de información confidencial](specifying-sensitive-data.md).  

```
"secrets": [
    {
      "name": "secretName1",
      "valueFrom": "secretArn1"
    },
    {
      "name": "secretName2",
      "valueFrom": "secretArn2"
    }
    ...
]
```
Tipo: matriz de objetos  
Obligatorio: no    
`name`  
El nombre de la variable de entorno que contiene el secreto.  
Tipo: cadena  
Obligatorio: sí, si se utiliza `secrets`.  
  
`valueFrom`  
El secreto para exponer en el contenedor. Los valores admitidos son el nombre de recurso de Amazon (ARN) completo del secreto del Secrets Manager o el ARN completo del parámetro en el almacén de parámetros SSM.  
Si el parámetro del almacén de parámetros SSM está en la misma Región de AWS que el trabajo que se va a lanzar, se puede utilizar el ARN completo o el nombre del parámetro. Si el parámetro existe en una región distinta, el ARN completo debe especificarse.
Tipo: cadena  
Obligatorio: sí, si se utiliza `secrets`.

`ulimits`  
Una lista de valores para `ulimits` a definir en el contenedor. Este parámetro se corresponde con `Ulimits` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--ulimit` de [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 objetos  
Obligatorio: no    
`name`  
El valor `type` de `ulimit`.  
Tipo: cadena  
Obligatorio: sí, si se utiliza `ulimits`.  
  
`hardLimit`  
El límite máximo para el tipo de `ulimit`.  
Tipo: número entero  
Obligatorio: sí, si se utiliza `ulimits`.  
  
`softLimit`  
El límite flexible para el tipo de `ulimit`.  
Tipo: número entero  
Obligatorio: sí, si se utiliza `ulimits`.  


`user`  
El nombre de usuario que utilizar dentro del contenedor. Este parámetro se corresponde con `User` en la sección [Creación de un contenedor](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de la [API remota de Docker](https://docs.docker.com/engine/api/v1.38/) y con la opción `--user` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).  

```
"user": "string"
```
Tipo: cadena  
Obligatorio: no

`vcpus`  
*Este parámetro ha quedado obsoleto, utilice `resourceRequirements` en su lugar.*  
El número de vCPU reservado para el contenedor.  
Como ejemplo sobre el uso de `resourceRequirements`, si la definición de su trabajo contiene líneas similares a las siguientes:  

```
"containerProperties": {
  "vcpus": 2
}
```
Las líneas equivalentes que utilizan `resourceRequirements` son las siguientes.  

```
"containerProperties": {
  "resourceRequirements": [
    {
      "type": "VCPU",
      "value": "2"
    }
  ]
}
```
Tipo: número entero  
Obligatorio: sí

`volumes`  
Al registrar una definición de trabajos, puede especificar una lista de los volúmenes que se pasan al daemon de Docker en una instancia de contenedor. Los siguientes parámetros están permitidos en las propiedades de contenedor:  

```
"volumes": [
  {
    "name": "string",
    "host": {
      "sourcePath": "string"
    },
    "efsVolumeConfiguration": {
      "authorizationConfig": {
        "accessPointId": "string",
        "iam": "string"
      },
      "fileSystemId": "string",
      "rootDirectory": "string",
      "transitEncryption": "string",
      "transitEncryptionPort": number
    }
  }
]
```  
`name`  
El nombre del volumen. Se admiten hasta 255 letras (mayúsculas y minúsculas), números, guiones y caracteres de subrayado. Se hace referencia a este nombre en el parámetro `sourceVolume` de la definición de contenedor `mountPoints`.  
Tipo: cadena  
Obligatorio: no  
`host`  
El contenido del parámetro `host` determina si el volumen de datos persiste en la instancia de contenedor del host y dónde se almacena. Si el parámetro `host` está vacío, el daemon de Docker le asigna una ruta de host al volumen de datos. Sin embargo, no se garantiza que los datos persistan después de que el contenedor asociado deje de funcionar.  
Este parámetro no es aplicable a trabajos que se ejecutan en recursos de Fargate.
Tipo: objeto  
Obligatorio: no    
`sourcePath`  
La ruta de la instancia de contenedor del host que se le presenta al contenedor. Si este parámetro está vacío, el daemon de Docker asigna una ruta de host.  
Si el parámetro `host` contiene una ubicación de ubicación de archivos `sourcePath`, el volumen de datos persiste en la ubicación especificada en la instancia de contenedor del host hasta que la elimine manualmente. Si el valor `sourcePath` no existe en la instancia de contenedor del host, el daemon de Docker la crea. Si la ubicación existe, el contenido de la carpeta de la ruta de origen se exporta.  
Tipo: cadena  
Requerido: no  
`efsVolumeConfiguration`  
Este parámetro se especifica cuando se utiliza un sistema de archivos de Amazon Elastic File System para el almacenamiento de tareas. Para obtener más información, consulte [Volúmenes de Amazon EFS](efs-volumes.md).  
Tipo: objeto  
Obligatorio: no    
`authorizationConfig`  
Los detalles de configuración de autorización en el sistema de archivos de Amazon EFS.  
Tipo: cadena  
Requerido: no    
`accessPointId`  
El ID del punto de acceso de Amazon EFS que se va a utilizar. Si se especifica un punto de acceso, el valor del directorio raíz que se especifica en `EFSVolumeConfiguration` debe omitirse o establecerse en `/`. Esto impone la ruta establecida en el punto de acceso de EFS. Si se utiliza un punto de acceso, el cifrado de tránsito debe estar habilitado en el `EFSVolumeConfiguration`. Para obtener más información, consulte [Trabajo con puntos de acceso de Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) en la *Guía del usuario de Amazon Elastic File System*.  
Tipo: cadena  
Requerido: no  
`iam`  
Determina si se utiliza o no el rol de IAM de trabajos de AWS Batch establecido en una definición de trabajo al montar el sistema de archivos de Amazon EFS. Si está habilitado, el cifrado de tránsito debe estar habilitado en el `EFSVolumeConfiguration`. Si se omite este parámetro, se usa el valor predeterminado de `DISABLED`. Para obtener más información, consulte [Uso de puntos de acceso de Amazon EFS](efs-volumes.md#efs-volume-accesspoints).  
Tipo: cadena  
Valores válidos: `ENABLED` \$1 `DISABLED`  
Obligatorio: no  
`fileSystemId`  
El ID del sistema de archivos de Amazon EFS que se va a usar.  
Tipo: cadena  
Obligatorio: no  
`rootDirectory`  
Directorio del sistema de archivos de Amazon EFS que se va a montar como directorio raíz dentro del host. Si se omite este parámetro, se utiliza la raíz del volumen de Amazon EFS. Si especifica `/`, se obtiene el mismo efecto que si se omite este parámetro. La longitud máxima es de 4096 caracteres.  
Si se especifica un punto de acceso de EFS en el `authorizationConfig`, se debe omitir el parámetro del directorio raíz o establecerlo en `/`. Esto impone la ruta establecida en el punto de acceso de Amazon EFS.
Tipo: cadena  
Obligatorio: no  
`transitEncryption`  
Determina si se habilita el cifrado de los datos en tránsito de Amazon EFS entre el host de Amazon ECS y el servidor de Amazon EFS. El cifrado en tránsito debe estar habilitado si se utiliza la autorización de IAM en Amazon EFS. Si se omite este parámetro, se usa el valor predeterminado de `DISABLED`. Para obtener más información, consulte [Cifrado de datos en tránsito](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) en la *Guía del usuario de Amazon Elastic File System*.  
Tipo: cadena  
Valores válidos: `ENABLED` \$1 `DISABLED`  
Obligatorio: no  
`transitEncryptionPort`  
El puerto que se utilizará al enviar datos cifrados entre el host de Amazon ECS y el servidor de Amazon EFS. Si no se especifica un puerto de cifrado en tránsito, se emplea la estrategia de selección de puertos que utiliza el ayudante de montaje de Amazon EFS. Este valor debe estar entre 0 y 65 535. Para obtener más información, consulte [Ayudante de montaje de EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) en la *Guía del usuario de Amazon Elastic File System*.  
Tipo: entero  
Obligatorio: no

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

Un objeto con diversas propiedades específicas para los trabajos basados en Amazon EKS. No se puede especificar para definiciones de trabajo basadas en Amazon ECS.

`podProperties`  
Las propiedades de los recursos del pod de Kubernetes de un trabajo.  
Tipo: objeto [EksPodProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html)  
Obligatorio: no    
`containers`  
Las propiedades del contenedor que se utiliza en el pod de Amazon EKS.  
Tipo: objeto [EksContainer](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainer.html)  
Obligatorio: no    
`args`  
Una matriz de argumentos para el punto de entrada. Si no se especifica, se utiliza el `CMD` de la imagen de contenedor. Esto corresponde al miembro `args` en la parte [Punto de entrada](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#entrypoint) del [Pod](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/) en Kubernetes. Las referencias de variables de entorno se expanden mediante el entorno del contenedor.  
Si la variable de entorno a la que se hace referencia no existe, la referencia en el comando no cambia. Por ejemplo, si la referencia es “`$(NAME1)`” y la variable de entorno `NAME1` no existe, la cadena de comando seguirá siendo “`$(NAME1)`”. `$$` se reemplaza por `$`, y la cadena resultante no se expande. Por ejemplo, `$$(VAR_NAME)` se pasa como `$(VAR_NAME)`, ya sea que existe o no la variable de entorno `VAR_NAME`. Para obtener más información, consulte [CMD](https://docs.docker.com/engine/reference/builder/#cmd) en la *Referencia de Dockerfile* y [Definición de un comando y los argumentos para un pod](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/) en la *documentación de Kubernetes*.  
Tipo: matriz de cadenas  
Obligatorio: no  
`command`  
El punto de entrada para el contenedor. Esto no se ejecuta dentro de un shell. Si no se especifica, se utiliza el `ENTRYPOINT` de la imagen de contenedor. Las referencias de variables de entorno se expanden mediante el entorno del contenedor.  
Si la variable de entorno a la que se hace referencia no existe, la referencia en el comando no cambia. Por ejemplo, si la referencia es “`$(NAME1)`” y la variable de entorno `NAME1` no existe, la cadena de comando seguirá siendo “`$(NAME1)`”. `$$` se reemplaza por `$`, y la cadena resultante no se expande. Por ejemplo, `$$(VAR_NAME)` se pasará como `$(VAR_NAME)`, ya sea que existe o no la variable de entorno `VAR_NAME`. El punto de entrada no se puede actualizar. Para obtener más información, consulte [PUNTO DE ENTRADA](https://docs.docker.com/engine/reference/builder/#entrypoint) en la *Referencia de Dockerfile* y [Definición de un comando y los argumentos para un contenedor](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/) y [Punto de entrada](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#entrypoint) en la *documentación de Kubernetes*.  
Tipo: matriz de cadenas  
Obligatorio: no  
`env`  
Las variables de entorno a transferir a un contenedor.  
Las variables de entorno no pueden empezar por “`AWS_BATCH`”. Esta convención de nomenclatura está reservada para las variables que establece AWS Batch.
Tipo: matriz de objetos [EksContainerEnvironmentVariable](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerEnvironmentVariable.html)  
Obligatorio: no    
`name`  
El nombre de la variable de entorno.  
Tipo: cadena  
Obligatorio: sí  
`value`  
El valor de la variable de entorno.  
Tipo: cadena  
Obligatorio: no  
`image`  
La imagen de Docker que se utiliza para iniciar el contenedor.  
Tipo: cadena  
Obligatorio: sí  
`imagePullPolicy`  
La política de extracción de imágenes para el contenedor. Los valores admitidos son `Always`, `IfNotPresent` y `Never`. El valor predeterminado de este parámetro es `IfNotPresent`. Sin embargo, si se especifica la etiqueta `:latest`, el valor predeterminado es `Always`. Para obtener más información, consulte [Actualización de imágenes](https://kubernetes.io/docs/concepts/containers/images/#updating-images) en la *documentación de Kubernetes*.  
Tipo: cadena  
Obligatorio: no  
`name`  
El nombre del contenedor. Si no se especifica el nombre, el nombre predeterminado es “`Default`”. Cada contenedor de un pod debe tener un nombre único.  
Tipo: cadena  
Obligatorio: no  
`resources`  
El tipo y la cantidad de recursos para asignar a un contenedor. Los recursos admitidos incluyen `memory`, `cpu`, y `nvidia.com/gpu`. Para obtener más información, consulte [Administración de recursos para pods y contenedores](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) en la *documentación de Kubernetes*.  
Tipo: objeto [EksContainerResourceRequirements](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerResourceRequirements.html)  
Obligatorio: no    
`limits`  
El tipo y la cantidad de recursos que se reservan para el contenedor. Los valores varían en función del `name` que se especifica. Los recursos se pueden solicitar mediante los `limits` o los objetos `requests`.    
memoria  
El límite máximo de memoria (en MiB) para el contenedor, mediante números enteros, con un sufijo “Mi”. Si su contenedor intenta superar la memoria especificada aquí, se cancela el contenedor. Debe especificar al menos 4 MiB de memoria para un trabajo. `memory` se puede especificar en `limits`, `requests` o en ambos. Si `memory` se especifica en ambos lugares, el valor especificado en `limits` debe ser igual al valor especificado en `requests`.  
Para maximizar el uso de los recursos, proporcione a los trabajos la mayor cantidad de memoria posible para el tipo de instancia específico que se está utilizando. Para aprender a hacerlo, consulte [Administración de la memoria de recurso de computación](memory-management.md).  
cpu  
La cantidad de CPU reservadas para el contenedor. Los valores deben ser múltiplos pares de `0.25`. `cpu` se puede especificar en `limits`, `requests` o en ambos. Si `cpu` se especifica en ambos lugares, el valor especificado en `limits` debe ser tan grande como el valor especificado en `requests`.  
nvidia.com/gpu  
La cantidad de GPU reservadas para el contenedor. Los valores deben ser números enteros. `memory` se puede especificar en `limits`, `requests` o en ambos. Si `memory` se especifica en ambos lugares, el valor especificado en `limits` debe ser igual al valor especificado en `requests`.
Tipo: mapa de cadena a cadena  
Limitaciones de longitud de los valores: longitud mínima de 1. La longitud máxima es de 256 caracteres.  
Obligatorio: no  
`requests`  
El tipo y la cantidad de recursos que se solicitan para el contenedor. Los valores varían en función del `name` que se especifica. Los recursos se pueden solicitar mediante los `limits` o los objetos `requests`.    
memoria  
El límite máximo de memoria (en MiB) para el contenedor, mediante números enteros, con un sufijo “Mi”. Si su contenedor intenta superar la memoria especificada aquí, se cancela el contenedor. Debe especificar al menos 4 MiB de memoria para un trabajo. `memory` se puede especificar en `limits`, `requests` o en ambos. Si `memory` se especifica en ambos, el valor especificado en `limits` debe ser igual al valor especificado en `requests`.  
Si está intentando maximizar la utilización de los recursos proporcionando a las tareas la mayor cantidad de memoria posible para un tipo de instancia determinado, consulte [Administración de la memoria de recurso de computación](memory-management.md).  
cpu  
La cantidad de CPU reservadas para el contenedor. Los valores deben ser múltiplos pares de `0.25`. `cpu` se puede especificar en `limits`, `requests` o en ambos. Si `cpu` se especifica en ambos, el valor especificado en `limits` debe ser tan grande como el valor especificado en `requests`.  
nvidia.com/gpu  
La cantidad de GPU reservadas para el contenedor. Los valores deben ser números enteros. `nvidia.com/gpu` se puede especificar en `limits`, `requests` o en ambos. Si `nvidia.com/gpu` se especifica en ambos, el valor especificado en `limits` debe ser igual al valor especificado en `requests`.
Tipo: mapa de cadena a cadena  
Limitaciones de longitud de los valores: longitud mínima de 1. La longitud máxima es de 256 caracteres.  
Obligatorio: no  
`securityContext`  
El contexto de seguridad para un trabajo. Para obtener más información, consulte [Configuración de un contexto de seguridad para un pod o un contenedor](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) en la *documentación de Kubernetes*.  
Tipo: objeto [EksContainerSecurityContext](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerSecurityContext.html)  
Obligatorio: no    
`privileged`  
Cuando este parámetro es `true`, al contenedor se le conceden permisos elevados en la instancia de contenedor de host. El nivel de permisos es similar al de los permisos de usuario `root`. El valor predeterminado es `false`. Este parámetro se asigna a la política `privileged` de [Políticas de seguridad de pod privilegiados](https://kubernetes.io/docs/concepts/security/pod-security-policy/#privileged) en la *documentación de Kubernetes*.  
Tipo: Booleano  
Obligatorio: no  
`readOnlyRootFilesystem`  
Cuando este parámetro es `true`, al contenedor se le concede acceso de solo lectura al sistema de archivos raíz. El valor predeterminado es `false`. Este parámetro se asigna a la política `ReadOnlyRootFilesystem` de [Políticas de seguridad de pods de sistemas de archivos y volúmenes](https://kubernetes.io/docs/concepts/security/pod-security-policy/#volumes-and-file-systems) en la *documentación de Kubernetes*.  
Tipo: Booleano  
Obligatorio: no  
`runAsGroup`  
Cuando se especifica este parámetro, el contenedor se ejecuta como el ID del grupo especificado (`gid`). Si no se especifica este parámetro, el valor predeterminado es el grupo que se especifica en los metadatos de la imagen. Este parámetro se asigna a las políticas `RunAsGroup` y `MustRunAs` de [Políticas de seguridad de pods de grupos y usuarios](https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups) en la *documentación de Kubernetes*.  
Tipo: Long  
Obligatorio: no  
`runAsNonRoot`  
Cuando se especifica este parámetro, el contenedor se ejecuta como un usuario con un `uid` distinto de 0. Si no se especifica este parámetro, se aplica la regla mencionada. Este parámetro se asigna a las políticas `RunAsUser` y `MustRunAsNonRoot` de [Políticas de seguridad de pods de grupos y usuarios](https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups) en la *documentación de Kubernetes*.  
Tipo: Long  
Obligatorio: no  
`runAsUser`  
Cuando se especifica este parámetro, el contenedor se ejecuta como el ID del usuario especificado (`uid`). Si no se especifica este parámetro, el valor predeterminado es el usuario que se especifica en los metadatos de la imagen. Este parámetro se asigna a las políticas `RunAsUser` y `MustRanAs` de [Políticas de seguridad de pods de grupos y usuarios](https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups) en la *documentación de Kubernetes*.  
Tipo: Long  
Obligatorio: no  
`volumeMounts`  
El volumen se monta para un contenedor para un trabajo de Amazon EKS. Para obtener más información sobre los volúmenes y los montajes de volúmenes en Kubernetes, consulte [Volúmenes](https://kubernetes.io/docs/concepts/storage/volumes/) en la *documentación de Kubernetes*.  
Tipo: matriz de objetos [EksContainerVolumeMount](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerVolumeMount.html)  
Obligatorio: no    
`mountPath`  
La ruta en el contenedor donde se monta el volumen.  
Tipo: cadena  
Obligatorio: no  
`name`  
El nombre del montaje de volumen. Debe coincidir con el nombre de uno de los volúmenes del pod.  
Tipo: cadena  
Obligatorio: no  
`readOnly`  
Si este valor es `true`, el acceso del contenedor al volumen es de solo lectura. De lo contrario, el contenedor puede escribir en el volumen. El valor predeterminado es `false`.  
Tipo: Booleano  
Obligatorio: no  
`dnsPolicy`  
La política de DNS del pod. El valor predeterminado es `ClusterFirst`. Si no se especifica el parámetro `hostNetwork`, el valor predeterminado es `ClusterFirstWithHostNet`. `ClusterFirst` indica que cualquier consulta de DNS que no coincida con el sufijo de dominio del clúster configurado se reenvía al servidor de nombres ascendente heredado del nodo. Si no se especificó ningún valor para `dnsPolicy` en la operación de API [RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html), las operaciones de API [DescribeJobDefinitions](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobDefinitions.html) o [DescribeJobs](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobs.html) no devuelven ningún valor para `dnsPolicy`. La configuración de las especificaciones del pod contendrá `ClusterFirst` o `ClusterFirstWithHostNet`, según el valor del parámetro `hostNetwork`. Para obtener más información, consulte [Política de DNS del pod](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy) en la *documentación de Kubernetes*.  
Valores válidos: `Default` \$1 `ClusterFirst` \$1 `ClusterFirstWithHostNet`  
Tipo: cadena  
Obligatorio: no  
`hostNetwork`  
Indica si el pod utiliza la dirección IP de red de los hosts. El valor predeterminado es `true`. Cuando se establece en `false`, se activa el modelo de red de pods de Kubernetes. La mayoría de las cargas de trabajo de AWS Batch son únicamente de salida y no requieren la sobrecarga de asignación de IP para cada pod para las conexiones entrantes. Para obtener más información, consulte [Espacios de nombres de host](https://kubernetes.io/docs/concepts/security/pod-security-policy/#host-namespaces) y [Redes de pod](https://kubernetes.io/docs/concepts/workloads/pods/#pod-networking) en la *documentación de Kubernetes*.  
Tipo: Booleano  
Obligatorio: no  
`serviceAccountName`  
El nombre de la cuenta de servicio que se utiliza para ejecutar el pod. Para obtener más información, consulte [Cuentas de servicio de Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/service-accounts.html) y [Configuración de una cuenta de servicio de Kubernetes para asumir un rol de IAM](https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html) en la *Guía del usuario de Amazon EKS* y [Configuración de cuentas de servicio para pods](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) en la *documentación de Kubernetes*.  
Tipo: cadena  
Obligatorio: no  
`volumes`  
Especifica los volúmenes para una definición de trabajo que utiliza recursos de Amazon EKS.  
Tipo: matriz de objetos [EksVolume](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksVolume.html)  
Obligatorio: no    
emptyDir  
Especifica la configuración de un volumen de Kubernetes `emptyDir`. Un volumen `emptyDir` se crea por primera vez cuando se asigna un pod a un nodo. Existe mientras ese pod se ejecuta en ese nodo. Al principio, el volumen `emptyDir` está vacío. Todos los contenedores del pod pueden leer y escribir los archivos del volumen `emptyDir`. Sin embargo, el volumen `emptyDir` se puede montar en la misma ruta o en rutas diferentes en cada contenedor. Cuando por algún motivo se elimina un pod de un nodo, los datos de `emptyDir` se eliminan de manera permanente. Para obtener más información, consulte [emptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) en la *documentación de Kubernetes*.  
Tipo: objeto [EksEmptyDir](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksEmptyDir.html)  
Obligatorio: no    
medium  
El medio para almacenar el volumen. El valor predeterminado es una cadena vacía, que utiliza el almacenamiento del nodo.    
""  
**(Predeterminado)** Utilice el almacenamiento en disco del nodo.  
“Memoria”  
Utilice el volumen `tmpfs` respaldado por la RAM del nodo. El contenido del volumen se pierde cuando el nodo se reinicia, y cualquier almacenamiento en el volumen cuenta respecto del límite de memoria del contenedor.
Tipo: cadena  
Obligatorio: no  
sizeLimit  
El tamaño máximo del volumen. De forma predeterminada, no hay un tamaño máximo definido.  
Tipo: cadena  
Limitaciones de longitud: longitud mínima de 1. La longitud máxima es de 256 caracteres.  
Obligatorio: no  
hostPath  
Especifica la configuración de un volumen de Kubernetes `hostPath`. Un volumen `hostPath` monta un archivo o un directorio existente del sistema de archivos del nodo host en el pod. Para obtener más información, consulte [hostPath](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath) en la *documentación de Kubernetes*.  
[Tipo: objeto EksHostPath](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksHostPath.html)  
Obligatorio: no    
path  
La ruta del archivo o del directorio en el host para montar en contenedores en el pod.  
Tipo: cadena  
Obligatorio: no  
nombre  
El nombre del volumen. El nombre debe estar permitido como nombre de subdominio de DNS. Para obtener más información, consulte [Nombres de subdominio de DNS](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names) en la *documentación de Kubernetes*.  
Tipo: cadena  
Obligatorio: sí  
secreta  
Especifica la configuración de un volumen de Kubernetes `secret`. Para obtener más información, consulte [secreto](https://kubernetes.io/docs/concepts/storage/volumes/#secret) en la *documentación de Kubernetes*.  
Tipo: objeto [EksSecret](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksSecret.html)  
Obligatorio: no    
opcional  
Especifica si se deben definir el secreto o las claves del secreto.  
Tipo: Booleano  
Obligatorio: no  
secretName  
El nombre del secreto. El nombre debe estar permitido como nombre de subdominio de DNS. Para obtener más información, consulte [Nombres de subdominio de DNS](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names) en la *documentación de Kubernetes*.  
Tipo: cadena  
Obligatorio: sí

## Capacidades de plataforma
<a name="job-definition-parameters-platform-capabilities"></a>

`platformCapabilities`  
Las capacidades de plataforma requeridas por la definición de trabajo. Si no se especifica ningún valor, el valor predeterminado es `EC2`. Para los trabajos que se ejecutan en recursos de Fargate, se especifica `FARGATE`.  
Si el trabajo se ejecuta en recursos de Amazon EKS, entonces no debe especificar `platformCapabilities`.
Tipo: cadena  
Valores válidos: `EC2` \$1 `FARGATE`  
Obligatorio: no

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

`propagateTags`  
Especifica si se van a propagar las etiquetas desde el trabajo o la definición del trabajo a la tarea de Amazon ECS correspondiente. Si no se especifica ningún valor, las etiquetas no se propagan. Las etiquetas solo se pueden propagar a las tareas cuando se crea la tarea. En el caso de etiquetas con el mismo nombre, las etiquetas de trabajo tienen prioridad sobre las etiquetas de definiciones de trabajo. Si el número total de etiquetas combinadas del trabajo y la definición del trabajo es superior a 50, el trabajo se mueve al estado `FAILED`.  
Si el trabajo se ejecuta en recursos de Amazon EKS, entonces no debe especificar `propagateTags`.
Tipo: Booleano  
Obligatorio: no

## Propiedades del nodo
<a name="nodeProperties"></a>

`nodeProperties`  
Al registrar una definición de trabajo paralelo de varios nodos, debe especificar una lista de propiedades de nodos. Estas propiedades de los nodos definen el número de nodos que se van a utilizar en el trabajo, el índice de nodos principales y los diferentes rangos de nodos que se van a utilizar. Si el trabajo se ejecuta en recursos de Fargate, no puede especificar `nodeProperties`. En su lugar, utilice `containerProperties`. En una definición de trabajo, se permiten las siguientes propiedades de nodo. Para obtener más información, consulte [Trabajos paralelos de varios nodos](multi-node-parallel-jobs.md).  
Si el trabajo se ejecuta en recursos de Amazon EKS, entonces no debe especificar `nodeProperties`.
Tipo: objeto [NodeProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_NodeProperties.html)  
Obligatorio: no    
`mainNode`  
Especifica el índice de nodo del nodo principal de un trabajo paralelo de varios nodos. Este valor de índice de nodo debe ser más pequeño que la cantidad de nodos.  
Tipo: número entero  
Obligatorio: sí  
`numNodes`  
La cantidad de nodos que están asociados a un trabajo paralelo de varios nodos.  
Tipo: número entero  
Obligatorio: sí  
`nodeRangeProperties`  
Una lista de rangos de nodos y sus propiedades que están asociados a un trabajo paralelo de varios nodos.  
Un grupo de nodos es un conjunto de nodos de trabajo idénticos que comparten las mismas propiedades de contenedor. Puede utilizar AWS Batch para especificar hasta cinco grupos de nodos distintos para cada trabajo.
Tipo: matriz de objetos [NodeRangeProperty](https://docs.aws.amazon.com/batch/latest/APIReference/API_NodeRangeProperty.html)  
Obligatorio: sí    
`targetNodes`  
El rango de nodos, utilizando valores de índice de nodo. Un rango de `0:3` indica nodos con valores de índice de `0` a `3`. Si se omite el valor inicial del rango (`:n`), se utiliza 0 para iniciar el rango. Si se omite el valor final del rango (`n:`), se utiliza el índice de nodo más alto posible para finalizar el rango. Los rangos de nodos acumulativos deben tener en cuenta todos los nodos (`0:n`). Puede anidar rangos de nodos, por ejemplo, `0:10` y `4:5`. Para este caso, las propiedades del rango `4:5` anulan las propiedades de `0:10`.   
Tipo: cadena  
Obligatorio: no  
`container`  
Los detalles del contenedor del rango de nodos. Para obtener más información, consulte [Propiedades de contenedor](#containerProperties).  
Tipo: objeto [ContainerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html)   
Obligatorio: no

## Estrategia de reintento
<a name="retryStrategy"></a>

`retryStrategy`  
Al registrar una definición de trabajo, se puede especificar una estrategia de reintento para aplicarla a los trabajos fallidos que se envíen con esta definición de trabajo. Cualquier estrategia de reintento que se especifique durante una operación [SubmitJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html) anula la estrategia de reintento definida aquí. De forma predeterminada, cada trabajo se intenta una vez. Si especifica más de un intento, el trabajo se vuelve a intentar si falla. Algunos ejemplos de intentos fallidos son que el trabajo devuelva un código de salida distinto de cero o que la instancia de contenedor se termine. Para obtener más información, consulte [Reintentos automáticos de trabajo](job_retries.md).  
Tipo: objeto [RetryStrategy](https://docs.aws.amazon.com/batch/latest/APIReference/API_RetryStrategy.html)  
Obligatorio: no    
`attempts`  
La cantidad de veces que toma pasar un trabajo al estado `RUNNABLE`. Puede especificar entre 1 y 10 intentos. Si `attempts` es mayor que uno y el envío del trabajo falla, se reintenta tantas veces como se haya especificado hasta que pase a `RUNNABLE`.  

```
"attempts": integer
```
Tipo: entero  
Obligatorio: no  
`evaluateOnExit`  
Matriz de hasta 5 objetos que especifican las condiciones según las que el trabajo se vuelve a intentar o falla. Si se especifica este parámetro, entonces también debe especificarse el parámetro `attempts`. Si `evaluateOnExit` se especifica pero ninguna de las entradas coincide, se vuelve a intentar el trabajo.  

```
"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)  
Obligatorio: no    
`action`  
Especifica la acción que se debe realizar si se cumplen todas las condiciones especificadas (`onStatusReason`, `onReason` y `onExitCode`). Los valores no distinguen entre mayúsculas y minúsculas.  
Tipo: cadena  
Obligatorio: sí  
Valores válidos: `RETRY` \$1 `EXIT`  
`onExitCode`  
Contiene un patrón global para que coincida con la representación decimal del `ExitCode` devuelto para un trabajo. El patrón puede tener 512 caracteres como máximo. Solo puede contener números. No puede contener letras ni caracteres especiales. Opcionalmente, puede terminar con un asterisco (\$1) para que solo el inicio de la cadena tenga que ser una coincidencia exacta.  
Tipo: cadena  
Obligatorio: no  
`onReason`  
Contiene un patrón global para que coincida con el `Reason` devuelto para un trabajo. El patrón puede tener 512 caracteres como máximo. Puede tener letras, números, puntos (.), dos puntos (:) y espacios en blanco (espacios, pestañas). Opcionalmente, puede terminar con un asterisco (\$1) para que solo el inicio de la cadena tenga que ser una coincidencia exacta.  
Tipo: cadena  
Obligatorio: no  
`onStatusReason`  
Contiene un patrón global para que coincida con el `StatusReason` devuelto para un trabajo. El patrón puede tener 512 caracteres como máximo. Puede tener letras, números, puntos (.), dos puntos (:) y espacios en blanco (espacios, pestañas). Opcionalmente, puede terminar con un asterisco (\$1) para que solo el inicio de la cadena tenga que ser una coincidencia exacta.  
Tipo: cadena  
Obligatorio: no

## Prioridad de programación
<a name="job-definition-parameters-schedulingPriority"></a>

`schedulingPriority`  
La prioridad de programación de los trabajos que se enviaron con esta definición de trabajo. Esto solo afecta a las colas de trabajo con una política de reparto justo. Los trabajos con una prioridad de programación más alta se programan antes que los trabajos con una prioridad de programación más baja.  
El valor mínimo admitido es 0 y el valor máximo admitido es 9999.  
Tipo: entero  
Obligatorio: no

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

`tags`  
Etiquetas de pares clave-valor para asociarlas a la definición del trabajo. Para obtener más información, consulte [Etiquetar los recursos de AWS Batch](using-tags.md).  
Tipo: mapa de cadena a cadena  
Obligatorio: no

## Tiempo de espera
<a name="timeout"></a>

`timeout`  
Puede configurar una duración de tiempo de espera para sus trabajos de modo que si un trabajo se ejecuta durante más tiempo, AWS Batch lo finaliza. Para obtener más información, consulte [Tiempos de espera de trabajo](job_timeouts.md). Si un trabajo se termina debido a que se ha agotado el tiempo de espera, no se vuelve a intentar. Cualquier configuración de tiempo de espera que se especifique durante una operación [SubmitJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html) sustituye la configuración de tiempo de espera definida aquí. Para obtener más información, consulte [Tiempos de espera de trabajo](job_timeouts.md).  
Tipo: objeto [JobTimeout](https://docs.aws.amazon.com/batch/latest/APIReference/API_JobTimeout.html)  
Obligatorio: no    
`attemptDurationSeconds`  
La duración en segundos (medida a partir de la marca de tiempo `startedAt` del intento de trabajo) después de la cual AWS Batch termina los trabajos pendientes. El valor mínimo del tiempo de espera es 60 segundos.  
En el caso de los trabajos de matriz, el tiempo de espera se aplica a los trabajos secundarios, no al trabajo de matriz principal.  
En el caso de los trabajos paralelos de varios nodos (MNP), el tiempo de espera se aplica a todo el trabajo, no a los nodos individuales.  
Tipo: entero  
Obligatorio: no

# Cree definiciones de trabajo mediante EcsProperties
<a name="multi-container-jobs"></a>

Al utilizar las definiciones de AWS Batch trabajo [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html), puede modelar el hardware, los sensores, los entornos 3D y otras simulaciones en contenedores separados. Puede utilizar esta característica para organizar de forma lógica los componentes de la carga de trabajo y separarlos de la aplicación principal. Esta función se puede utilizar AWS Batch en Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS) y. AWS Fargate

## `ContainerProperties` frente a las definiciones de trabajo de `EcsProperties`
<a name="containerpropertions-vs-ecsproperties"></a>

Puede utilizar las definiciones de trabajo [https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html) o [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html) según lo requiera su caso de uso. A un nivel superior, ejecutar AWS Batch tareas con `EcsProperties` es similar a ejecutar tareas con un. `ContainerProperties`

La estructura de definición de trabajos heredada, que utiliza `ContainerProperties`, sigue siendo compatible. Si actualmente tiene flujos de trabajo que utilizan esta estructura, puede seguir ejecutándolos.

La principal diferencia es que se ha añadido un objeto nuevo a la definición del trabajo para dar cabida a las definiciones basadas en `EcsProperties`.

Por ejemplo, una definición de trabajo que usa `ContainerProperties` en Amazon ECS y Fargate tiene la siguiente estructura:

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

Una definición de trabajo que usa `EcsProperties` en Amazon ECS y Fargate tiene la siguiente estructura:

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

## Cambios generales en el AWS Batch APIs
<a name="multi-container-general"></a>

A continuación, se describen más detalladamente algunas de las principales diferencias entre el uso de `ContainerProperties` y los tipos de datos de la API de `EcsProperties`:
+ Muchos de los parámetros que se utilizan en `ContainerProperties` aparecen en `TaskContainerProperties`. Algunos ejemplos incluyen `command`, `image`, `privileged`, `secrets` y `users`. Todos se pueden encontrar en su interior [TaskContainerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html).
+ Algunos de los parámetros de `TaskContainerProperties` no tienen equivalentes funcionales en la estructura heredada. Algunos ejemplos incluyen `dependsOn`, `essential`, `name`, `ipcMode` y `pidMode`. Para obtener más información, consulte [EcsTaskDetails](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskDetails.html) y [TaskContainerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html).

  Además, algunos parámetros de `ContainerProperties` no tienen equivalentes ni aplicación en la estructura de `EcsProperties`. En [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` se ha sustituido por `containers` para que el nuevo objeto pueda aceptar hasta diez 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)
+ La funcionalidad de `taskRoleArn` es equivalente a `jobRoleArn`. [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html)
+ Puede incluir de uno a diez contenedores en la estructura de `EcsProperties`. [Para obtener más información, consulte: contenedoresEcsTaskProperties.](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html)
+ Los objetos `taskProperties` e instanceTypes son matrices, pero actualmente solo aceptan un elemento. [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html)

## Definiciones de trabajo en varios contenedores para Amazon ECS
<a name="multi-container-ecs-updates"></a>

Para adaptarse a la estructura de varios contenedores de Amazon ECS, algunos de los tipos de datos de API son diferentes. Por ejemplo:
+ [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) tiene el mismo nivel que `containerProperties` en la definición de contenedor único. Para obtener más información, consulte [EcsProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html) en la *Guía de referencia de la API de AWS Batch *.
+ [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) contiene las propiedades definidas para la tarea de Amazon ECS. Para obtener más información, consulte [EcsProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html) en la *Guía de referencia de la API de AWS Batch *.
+ [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) incluye información similar a la de `containerProperties` en la definición de contenedor único. La principal diferencia es que `containers` permite definir hasta diez contenedores. [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html)
+ El 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 cómo afecta el contenedor al trabajo. Todos los contenedores esenciales deben completarse correctamente (salir como 0) para que el trabajo progrese. Si un contenedor marcado como esencial falla (sale con un valor distinto de 0), el trabajo fallará.

  El valor predeterminado es `true`, y al menos un contenedor debe estar marcado como `essential`. Para obtener más información, 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) en la *Guía de referencia de la API de AWS Batch *.
+ Con el 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), puede definir una lista de dependencias de contenedores. Para obtener más información, 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) en la *Guía de referencia de la API de AWS Batch *.
**nota**  
La complejidad de la lista de `dependsOn` y el tiempo de ejecución del contenedor asociado pueden afectar a la hora de inicio del trabajo. Si las dependencias tardan mucho en ejecutarse, el trabajo permanecerá en el estado `STARTING` hasta que se complete.

[Para obtener más información sobre la estructura `ecsProperties` y, consulte la sintaxis de [RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#API_RegisterJobDefinition_RequestBody)solicitud de ECSProperties.](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-ecsProperties)

## Definiciones de trabajos con varios contenedores para Amazon EKS
<a name="multi-container-eks-updates"></a>

Para adaptarse a la estructura de varios contenedores de Amazon EKS, algunos de los tipos de datos de API son diferentes. Por ejemplo:
+ [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) es un único identificador para el contenedor. Este objeto no es necesario para un único contenedor, pero sí para definir varios contenedores en un pod. Si `name` no está definido para contenedores individuales, se aplica el nombre predeterminado, `default`.
+ [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)se definen dentro del tipo de [eksPodProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html)datos. Se ejecutan antes que los contenedores de aplicaciones, siempre hasta completarse, y deben completarse correctamente antes de que se inicie el siguiente contenedor.

  Estos contenedores están registrados en el agente Amazon EKS Connector y conservan la información de registro en el almacén de datos de backend de Amazon Elastic Kubernetes Service. El objeto `initContainers` puede aceptar hasta diez elementos. Para obtener más información, consulte [Init Containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/) en la *documentación de Kubernetes*.
**nota**  
El objeto `initContainers` puede afectar a la hora de inicio del trabajo. Si los `initContainers` tardan mucho en ejecutarse, el trabajo mantendrá el estado `STARTING` hasta que se complete.
+ [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 si los contenedores del pod pueden compartir el mismo espacio de nombres del proceso. El valor predeterminado es `false`. Configúrelo en `true` para permitir que los contenedores vean y señalen los procesos de otros contenedores que se encuentran en el mismo pod.
+ Todos los contenedores son importantes. Todos los contenedores deben completarse correctamente (salir como 0) para que el trabajo se complete correctamente. Si un contenedor falla (sale con un valor distinto de 0), se produce un error en el trabajo.

Para obtener más información sobre la estructura `eksProperties` y, consulte la sintaxis de [RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#API_RegisterJobDefinition_RequestBody)solicitud de [eksProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-eksProperties).

# Referencia: escenarios de trabajo de AWS Batch que utilizan EcsProperties
<a name="multi-container-jobs-scenarios"></a>

Para ilustrar cómo se pueden estructurar las definiciones de trabajo de AWS Batch que utilizan `EcsProperties` en función de sus necesidades, en este tema se presentan las siguientes cargas útiles de [https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html). Puede copiar estos ejemplos en un archivo, personalizarlos según sus necesidades y, a continuación, usar AWS Command Line Interface (AWS CLI) para llamar a `RegisterJobDefinition`.

## Trabajo de AWS Batch para Amazon ECS en Amazon EC2
<a name="multi-container-scenario-on-ec2"></a>

A continuación, se muestra el ejemplo de un trabajo de AWS Batch para Amazon Elastic Container Service en 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"
                  }
                ]
              }
            ]
          }
        ]
  }
}
```

## Trabajo de AWS Batch para Amazon ECS alojado en Fargate
<a name="multi-containers-ecs-on-fargate"></a>

A continuación, se muestra el ejemplo de un trabajo de AWS Batch para Amazon Elastic Container Service en 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"
          }
        ]
  }
}
```

## Trabajo de AWS Batch para Amazon EKS
<a name="multi-containers-eks-example"></a>

A continuación, se muestra el ejemplo de un trabajo de AWS Batch para 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"
            }
          }
        }
      ]
    }
  }
}
```

## Trabajo de AWS Batch MNP con varios contenedores por nodo
<a name="multi-container-ecs-mnp"></a>

A continuación, se muestra el ejemplo de un trabajo de AWS Batch paralelo a varios nodos (MNP) con varios contenedores por nodo:

```
{
  "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"
                    }
                  ]
                }
              ]
            }
          ]
        }
      }
    ]
  }
}
```

# Uso del controlador de registros awslogs
<a name="using_awslogs"></a>

De forma predeterminada, AWS Batch permite que el controlador de `awslogs` registro envíe información de registro a CloudWatch Logs. Puede usar esta característica para ver distintos registros desde sus contenedores en una ubicación cómoda y evitar que los registros de contenedor ocupen espacio en disco en sus instancias de contenedor. Este tema le ayuda a configurar el controlador de registro `awslogs` en sus definiciones de trabajo.

**nota**  
En la AWS Batch consola, puede configurar el controlador de `awslogs` registro en la sección **Configuración de registros** al crear una definición de trabajo.

**nota**  
El tipo de información que registran los contenedores del trabajo depende en gran medida del comando `ENTRYPOINT`. De forma predeterminada, los registros que se capturan muestran el resultado del comando que normalmente se ve en una terminal interactiva si se ejecuta el contenedor de forma local, que son las `STDERR` I/O transmisiones `STDOUT` y. El controlador de `awslogs` registros simplemente pasa estos registros de Docker a CloudWatch Logs. Para obtener más información acerca de cómo se procesan los registros de Docker, incluidas formas alternativas de capturar diferentes datos de archivo o flujos, consulte la página sobre cómo [Ver los registros de un contenedor o servicio](https://docs.docker.com/config/containers/logging/) en la documentación de Docker.

Para enviar los registros del sistema de sus instancias de contenedor a CloudWatch Logs, consulte[Uso CloudWatch de registros con AWS Batch](using_cloudwatch_logs.md). Para obtener más información sobre CloudWatch los registros, consulte [Supervisión de los archivos de registro](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html) y [las cuotas de CloudWatch registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html) en la *Guía del usuario de Amazon CloudWatch Logs*.

## opciones del controlador de registro de awslogs en el tipo de datos AWS Batch JobDefiniton
<a name="create_awslogs_logdriver_options"></a>

El controlador de `awslogs` registro admite las siguientes opciones en las definiciones de AWS Batch trabajos. Para obtener más información, consulte el [controlador de registro de CloudWatch registros](https://docs.docker.com/config/containers/logging/awslogs/) en la documentación de Docker.

`awslogs-region`  
Obligatorio: no  
Especifique la región a la que el controlador de registros `awslogs` debe enviarle sus registros de Docker. De forma predeterminada, la región que se utiliza es la misma que la del trabajo. Puede optar por enviar todos los registros de los trabajos de distintas regiones a una sola región en CloudWatch los registros. De este modo, podrá verlos todos desde una misma ubicación. Como alternativa, puede separarlos por región para obtener un enfoque más detallado. Sin embargo, cuando elija esta opción, asegúrese de que los grupos de registro especificados existan en la región que especifique.

`awslogs-group`  
Obligatorio: opcional  
Con la opción de `awslogs-group`, puede especificar el grupo de registro al que el controlador de registro `awslogs` envía sus flujos de registro. Si esto campo no está especificado, se utiliza `aws/batch/job`.

`awslogs-stream-prefix`  
Obligatorio: opcional  
Con `awslogs-stream-prefix` esta opción, puede asociar un flujo de registro al prefijo especificado y al ID de tarea de Amazon ECS del AWS Batch trabajo al que pertenece el contenedor. Si especifica un prefijo con esta opción, entonces el flujo de registros adopta el siguiente formato:  

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

`awslogs-datetime-format`  
Obligatorio: no  
Esta opción define un patrón de inicio de varias líneas en formato `strftime` de Python. Un mensaje de registro consta de una línea que coincide con el patrón y de líneas siguientes que no coinciden con el patrón. Por tanto, la línea coincidente es el delimitador entre los mensajes de registro.  
Un ejemplo de caso de uso de este formato es para analizar la salida como un volcado de pila, que de lo contrario podría registrarse en varias entradas. El patrón correcto permite capturarla en una sola entrada.  
Para obtener más información, consulte [awslogs-datetime-format](https://docs.docker.com/config/containers/logging/awslogs/#awslogs-datetime-format).  
Esta opción siempre tiene prioridad si ambos `awslogs-datetime-format` y `awslogs-multiline-pattern` están configurados.  
El registro de varias líneas realiza análisis de las expresiones regulares y correspondencia de todos los mensajes de registro. Esto puede tener un impacto negativo sobre el rendimiento de registro.

`awslogs-multiline-pattern`  
Obligatorio: no  
Esta opción define un patrón de inicio de varias líneas con una expresión regular. Un mensaje de registro consta de una línea que coincide con el patrón y de líneas siguientes que no coinciden con el patrón. Por tanto, la línea coincidente es el delimitador entre los mensajes de registro.  
Para obtener más información, consulte [awslogs-multiline-pattern](https://docs.docker.com/config/containers/logging/awslogs/#awslogs-multiline-pattern)la documentación de Docker.  
Esta opción se pasa por alto si también se ha configurado `awslogs-datetime-format`.  
El registro de varias líneas realiza análisis de las expresiones regulares y correspondencia de todos los mensajes de registro. Esto puede tener un impacto negativo sobre el rendimiento de registro.

`awslogs-create-group`  
Obligatorio: no  
Especifique si desea que el grupo de registros se cree automáticamente. Si no se especifica esta opción, el valor predeterminado es `false`.  
No se recomienda esta opción. Le recomendamos que cree el grupo de CloudWatch registros con antelación mediante la acción de la [CreateLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html)API Logs, ya que cada trabajo intenta crear el grupo de registros, lo que aumenta las probabilidades de que el trabajo falle.
Su política de IAM para la ejecución de rol debe incluir el permiso `logs:CreateLogGroup` antes de intentar utilizar `awslogs-create-group`.

## Especificación de una configuración de registro en la definición de trabajo
<a name="specify-log-config"></a>

De forma predeterminada, AWS Batch habilita el controlador de `awslogs` registro. En esta sección, se describe cómo personalizar la configuración de registro `awslogs` de un trabajo. Para obtener más información, consulte [Creación de una definición de trabajo de un solo nodo](create-job-definition.md).

Los siguientes fragmentos de JSON de configuración de registro tienen un objeto `logConfiguration` especificado para cada trabajo. Una es para un WordPress trabajo que envía registros a un grupo de registros llamado `awslogs-wordpress` y otra es para un contenedor MySQL que envía registros a un grupo de registros llamado`awslogs-mysql`. Ambos contenedores utilizan el prefijo de flujo de registros `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"
    }
}
```

En la AWS Batch consola, se especifica la configuración de registro para la definición del `wordpress` trabajo, como se muestra en la imagen siguiente. 

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


Tras registrar una definición de tarea con el controlador de `awslogs` registro en una configuración de registro de definición de trabajos, puede enviar un trabajo con esa definición de trabajo para empezar a enviar CloudWatch registros a Logs. Para obtener más información, consulte [Tutorial: envío de un trabajo](submit_job.md).

# Especificación de información confidencial
<a name="specifying-sensitive-data"></a>

Con AWS Batch ella, puede introducir datos confidenciales en sus trabajos almacenándolos en AWS Secrets Manager secretos o AWS Systems Manager en parámetros del almacén de parámetros y, a continuación, hacer referencia a ellos en la definición de su trabajo.

Los secretos se pueden exponer a un trabajo de las siguientes formas:
+ Para inyectar datos sensibles en sus contenedores como variables de entorno, utilice el parámetro de definición de trabajo `secrets`.
+ Para hacer referencia a información sensible en la configuración del registro de un trabajo, utilice el parámetro de definición del trabajo `secretOptions`.

**Topics**
+ [Especificación de datos confidenciales con Secrets Manager](specifying-sensitive-data-secrets.md)
+ [Especificación de información confidencial con el almacén de parámetros de Systems Manager](specifying-sensitive-data-parameters.md)

# Especificación de datos confidenciales con Secrets Manager
<a name="specifying-sensitive-data-secrets"></a>

Con AWS Batch ella, puede introducir datos confidenciales en sus trabajos almacenándolos en AWS Secrets Manager secreto y luego haciendo referencia a ellos en su definición de trabajo. La información confidencial almacenada en secretos de Secrets Manager se puede exponer a un trabajo como variables de entorno o como parte de la configuración del registro.

Cuando inyecta un secreto como variable de entorno, puede especificar una clave JSON o versión de un secreto para inyectar. Este proceso le ayuda a controlar la información confidencial expuesta al trabajo. Para obtener más información acerca del control de versiones de los secretos, consulte los [Términos y conceptos clave de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret) en la *Guía del usuario de AWS Secrets Manager *.

## Consideraciones para especificar información confidencial mediante Secrets Manager
<a name="secrets-considerations"></a>

Cuando se utilice Secrets Manager para especificar información confidencial para trabajos, se debe tener en cuenta lo siguiente.
+ Para inyectar un secreto utilizando una clave JSON específica o una versión de un secreto, la instancia de contenedor de su entorno de computación debe tener instalada la versión 1.37.0 o posterior del agente de contenedores de Amazon ECS. Sin embargo, le recomendamos que utilice la versión más reciente del agente contenedor. Para obtener información sobre cómo comprobar la versión del agente y actualizarlo a la versión más reciente, consulte [Actualización del agente de contenedor de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

  Para inyectar el contenido completo de un secreto como variable de entorno o para inyectar un secreto en una configuración de registro, la instancia de contenedor debe tener la versión 1.23.0 o posterior del agente de contenedor.
+ Solo se admiten los secretos que almacenan datos de texto, que son secretos creados con el `SecretString` parámetro de la [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)API. No se admiten los secretos que almacenan datos binarios, que son secretos creados con el `SecretBinary` parámetro de la [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)API.
+ Cuando utilice una definición de trabajos que haga referencia a secretos de Secrets Manager para recuperar información confidencial de los trabajos, si también está utilizando puntos de conexión de VPC de la interfaz, debe crear los puntos de conexión de VPC de la interfaz para Secrets Manager. Para obtener más información, consulte [Utilización de Secrets Manager con puntos de enlace de la VPC](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) en la *Guía del usuario de AWS Secrets Manager *.
+ Los datos confidenciales se inyectan en el contenedor al iniciar el trabajo. Si el secreto se actualiza posteriormente o se rota, el trabajo no recibe automáticamente el valor actualizado. Debe lanzar un nuevo trabajo para obligar al servicio a lanzar uno nuevo con el valor secreto actualizado.

## Permisos de IAM necesarios para los secretos AWS Batch
<a name="secrets-iam"></a>

Para utilizar esta característica, debe tener la función de ejecución y hacer referencia a ella en la definición del trabajo. Esto permite que el agente de contenedor extraiga los recursos necesarios de Secrets Manager. Para obtener más información, consulte [AWS Batch Función de ejecución de IAM](execution-IAM-role.md).

Para proporcionar acceso a los secretos de Secrets Manager que cree, agregue manualmente los siguientes permisos como una política insertada al rol de ejecución. Para obtener más información, consulte [Adición y eliminación de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) en la *Guía del usuario de IAM*.
+ `secretsmanager:GetSecretValue`: obligatorio si se referencia un secreto de Secrets Manager.
+ `kms:Decrypt`: obligatorio solo si el secreto utiliza una clave de KMS personalizada y no la clave predeterminada. El ARN de su clave personalizada debe añadirse como un recurso.

La siguiente política insertada de ejemplo agrega los permisos necesarios.

------
#### [ 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>"
            ]
        }
    ]
}
```

------

## Introducción de información confidencial como variable de entorno
<a name="secrets-envvar"></a>

Puede especificar los siguientes elementos en la definición del trabajo:
+ El objeto `secrets` que contiene el nombre de la variable de entorno que se va a establecer en el trabajo
+ Nombre de recurso de Amazon (ARN) del secreto de Secrets Manager
+ Parámetros adicionales que contienen información confidencial que se debe presentar al trabajo

En el ejemplo siguiente, se muestra la sintaxis completa que se debe especificar para el secreto de Secrets Manager.

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

En la siguiente sección se describen los parámetros adicionales. Algunos parámetros son opcionales. Sin embargo, si no los utiliza, debe incluir los dos puntos `:` para utilizar los valores por defecto. A continuación se ofrecen ejemplos para obtener más contexto.

`json-key`  
Especifica el nombre de la clave en un par clave-valor con el valor que desea establecer como valor de variable de entorno. Solo se admiten valores en formato JSON. Si no especifica una clave JSON, se usa el contenido completo del secreto.

`version-stage`  
Especifica la etiqueta de ensayo de la versión de un secreto que desea utilizar. Si se especifica una etiqueta de ensayo de versión, no se puede especificar un ID de versión. Si no se especifica ninguna etapa de versión, el comportamiento predeterminado consiste en recuperar el secreto con la etiqueta de ensayo `AWSCURRENT`.  
Las etiquetas de ensayo se utilizan para realizar un seguimiento de las distintas versiones de un secreto cuando se actualizan o rotan. Cada versión de un secreto tiene una o varias etiquetas de ensayo y un ID. Para obtener más información, consulte [Términos y conceptos clave de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret) en la *Guía del AWS Secrets Manager usuario*.

`version-id`  
Especifica el identificador único de la versión del secreto que desea utilizar. Si se especifica un ID de versión, no se puede especificar una etiqueta de ensayo de versión. Si no se especifica ningún ID de versión, el comportamiento predeterminado consiste en recuperar el secreto con la etiqueta de ensayo `AWSCURRENT`.  
Las versiones se IDs utilizan para realizar un seguimiento de las diferentes versiones de un secreto cuando se actualizan o se rotan. Cada versión de un secreto tiene un ID. Para obtener más información, consulte [Términos y conceptos clave de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret) en la *Guía del AWS Secrets Manager usuario*.

### Definiciones de contenedor de ejemplo
<a name="secrets-examples"></a>

En los siguientes ejemplos, se muestran las formas en las que se pueden referenciar secretos de Secrets Manager en las definiciones de contenedor.

**Example hacer referencia a un secreto completo**  
A continuación, se incluye un fragmento de código de una definición de tarea que muestra el formato cuando se referencia el texto completo de un secreto de Secrets Manager.  

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

**Example hacer referencia a una clave específica dentro de un secreto**  
A continuación, se muestra un ejemplo de resultado de un get-secret-value comando [>](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html) que muestra el contenido de un secreto junto con la etiqueta provisional de la versión y el identificador de versión asociados al mismo.  

```
{
    "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
}
```
Haga referencia a una clave específica de la salida anterior en una definición de contenedor especificando el nombre de clave al final del ARN.  

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

**Example hacer referencia a una versión de secreto específica**  
A continuación se muestra una salida de ejemplo de un comando [ >describe-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html) que muestra el contenido sin cifrar de un secreto junto con los metadatos de todas las versiones del secreto.  

```
{
    "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"
        ]
    }
}
```
Haga referencia a una etiqueta de ensayo de versión específica de la salida anterior en una definición de contenedor especificando el nombre de clave al final del ARN.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::AWSPREVIOUS:"
    }]
  }]
}
```
Haga referencia a un ID de versión específico de la salida anterior en una definición de contenedor especificando el nombre de clave al final del ARN.  

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

**Example hacer referencia a una clave específica y una etiqueta de ensayo de versión de un secreto**  
A continuación se muestra cómo hacer referencia tanto a una clave específica dentro de un secreto como a una etiqueta de ensayo de versión específica.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1:AWSPREVIOUS:"
    }]
  }]
}
```
Para especificar una clave y un ID de versión específicos, utilice la sintaxis siguiente.  

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

## Introducción de información confidencial en una configuración de registro
<a name="secrets-logconfig"></a>

Al especificar una `logConfiguration` en la definición de trabajo, puede especificar `secretOptions` con el nombre de la opción del controlador de registros para definir el contenedor y el ARN completo del secreto de Secrets Manager que contiene la información confidencial que se va a presentar al contenedor.

A continuación, se incluye un fragmento de código de una definición de trabajo que muestra el formato cuando se referencia un secreto de 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"
      }]
    }]
  }]
}
```

## Crea un secreto AWS Secrets Manager
<a name="secrets-create-secret"></a>

Puede utilizar la consola de Secrets Manager para crear un secreto con su información confidencial. Para obtener más información, consulte [Creación de un secreto básico](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) en la *Guía del usuario de AWS Secrets Manager *.

**Para crear un secreto básico**

Utilice Secrets Manager para crear un secreto con su información confidencial.

1. Abra la consola de Secrets Manager en [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Elija **Almacenar un secreto nuevo**.

1. En **Select secret type (Seleccionar tipo de secreto)**, elija **Other type of secrets (Otro tipo de secretos)**.

1. Especifique los detalles de su secreto personalizado como pares de **clave** y **valor**. Por ejemplo, puede especificar una clave `UserName` y, a continuación, proporcionar el nombre de usuario como su valor. Agregue una segunda clave con el nombre `Password` y el texto de la contraseña como su valor. También puede añadir entradas para el nombre de una base de datos, la dirección del servidor o el puerto TCP. Puede añadir tantas parejas como sea necesario para almacenar la información que necesite.

   Como opción, puede elegir la pestaña **Plaintext (Texto no cifrado)** y escribir el valor del secreto del modo que prefiera.

1. Elija la clave de AWS KMS cifrado que desee utilizar para cifrar el texto protegido del secreto. Si no elige ninguna, Secrets Manager comprueba si existe una clave predeterminada para la cuenta y la utiliza si existe. Si no existe una clave predeterminada, Secrets Manager crea una automáticamente. También puede elegir **Add new key** (Añadir nueva clave) para crear una clave de KMS personalizada específicamente para este secreto. Para crear su propia clave de KMS, debe tener permisos para crear claves de KMS en su cuenta.

1. Elija **Siguiente**.

1. En **Secret name (Nombre del secreto)**, escriba una ruta y un nombre opcionales, tales como **production/MyAwesomeAppSecret** o **development/TestSecret** y elija **Next (Siguiente)**. Opcionalmente, puede añadir una descripción para ayudarle a recordar el objetivo de este secreto más adelante.

   El nombre del secreto debe estar formado por letras ASCII, dígitos o cualquiera de los siguientes caracteres: /\$1\$1=.@-

1. (Opcional) En este punto puede configurar la rotación para su secreto. Para este procedimiento, deje seleccionado **Disable automatic rotation (Deshabilitar la rotación automática)** y, a continuación, elija **Next (Siguiente)**.

   Para obtener información sobre cómo configurar la rotación de datos secretos nuevos o existentes, consulte [Rotación de sus datos AWS Secrets Manager secretos](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html).

1. Revise la configuración y, a continuación, elija **Store secret** (Almacenar secreto) para guardar todo lo que ingresó como nuevo secreto en Secrets Manager.

# Especificación de información confidencial con el almacén de parámetros de Systems Manager
<a name="specifying-sensitive-data-parameters"></a>

Con él AWS Batch, puede introducir datos confidenciales en sus contenedores almacenándolos en los parámetros del almacén de parámetros y, a continuación, haciendo referencia a ellos en la definición de su contenedor. AWS Systems Manager 

**Topics**
+ [Consideraciones para especificar información confidencial mediante el Parameter Store de Systems Manager](#secrets--parameterstore-considerations)
+ [Permisos de IAM necesarios para los secretos AWS Batch](#secrets-iam-parameters)
+ [Introducción de información confidencial como variable de entorno](#secrets-envvar-parameters)
+ [Introducción de información confidencial en una configuración de registro](#secrets-logconfig-parameters)
+ [Cree un AWS Systems Manager parámetro de almacén de parámetros](#secrets-create-parameter)

## Consideraciones para especificar información confidencial mediante el Parameter Store de Systems Manager
<a name="secrets--parameterstore-considerations"></a>

Cuando se especifica información confidencial para contenedores que utilizan parámetros del Parameter Store de Systems Manager, se debe tener en cuenta lo siguiente.
+ Esta característica requiere que la instancia de contenedor tenga una versión 1.23.0 o posterior del agente de contenedor. Sin embargo, le recomendamos que utilice la versión más reciente del agente de contenedores. Para obtener información sobre cómo comprobar la versión del agente y actualizarlo a la versión más reciente, consulte [Actualización del agente de contenedor de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.
+ Los datos confidenciales se inyectan en el contenedor para su trabajo al iniciar el contenedor. Si el secreto o el parámetro de Parameter Store se actualizan posteriormente o se rotan, el contenedor no recibe automáticamente el valor actualizado. Debe lanzar un nuevo trabajo para obligar el lanzamiento de uno nuevo con los secretos actualizados.

## Permisos de IAM necesarios para los secretos AWS Batch
<a name="secrets-iam-parameters"></a>

Para utilizar esta característica, debe tener la función de ejecución y hacer referencia a ella en la definición del trabajo. Esto permite al agente de contenedores de Amazon ECS obtener los AWS Systems Manager recursos necesarios. Para obtener más información, consulte [AWS Batch Función de ejecución de IAM](execution-IAM-role.md).

Para proporcionar acceso a los AWS Systems Manager parámetros del almacén de parámetros que cree, añada manualmente los siguientes permisos como política integrada a la función de ejecución. Para obtener más información, consulte [Adición y eliminación de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) en la *Guía del usuario de IAM*.
+ `ssm:GetParameters`: obligatorio si se hace referencia a un parámetro del Parameter Store de Systems Manager en una definición de tareas.
+ `secretsmanager:GetSecretValue`: obligatorio si se hace referencia a un secreto de Secrets Manager directamente o si el parámetro del Parameter Store de Systems Manager hace referencia a un secreto de Secrets Manager en una definición de tareas.
+ `kms:Decrypt`: obligatorio solo si el secreto utiliza una clave de KMS personalizada y no la clave predeterminada. El ARN de su clave personalizada debe añadirse como un recurso.

A continuación, mostramos un ejemplo de política insertada que añade los permisos necesarios.

------
#### [ 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>"
            ]
        }
    ]
}
```

------

## Introducción de información confidencial como variable de entorno
<a name="secrets-envvar-parameters"></a>

En la definición de contenedor, especifique `secrets` con el nombre de la variable de entorno que se va a establecer en el contenedor y el ARN completo del parámetro del Parameter Store de Systems Manager que contiene la información confidencial que se va a presentar al contenedor.

A continuación, se incluye un fragmento de código de una definición de tarea que muestra el formato cuando se hace referencia a un parámetro del almacén de parámetros de Systems Manager. Si el parámetro del almacén de parámetros de Systems Manager está en la misma región que la tarea que se va a lanzar, se puede utilizar el ARN completo o el nombre del parámetro. Si el parámetro existe en una región distinta, el ARN completo debe especificarse.

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

## Introducción de información confidencial en una configuración de registro
<a name="secrets-logconfig-parameters"></a>

En la definición de contenedor, al especificar una `logConfiguration`, puede especificar `secretOptions` con el nombre de la opción del controlador de registros que va a definir en el contenedor y el ARN completo del parámetro del Parameter Store de Systems Manager que contiene la información confidencial que se va a presentar al contenedor.

**importante**  
Si el parámetro del almacén de parámetros de Systems Manager está en la misma región que la tarea que se va a lanzar, se puede utilizar el ARN completo o el nombre del parámetro. Si el parámetro existe en una región distinta, el ARN completo debe especificarse.

A continuación, se incluye un fragmento de código de una definición de tarea que muestra el formato cuando se hace referencia a un parámetro del almacén de parámetros de Systems Manager.

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

## Cree un AWS Systems Manager parámetro de almacén de parámetros
<a name="secrets-create-parameter"></a>

Puede utilizar la AWS Systems Manager consola para crear un parámetro del almacén de parámetros de Systems Manager para sus datos confidenciales. Para obtener más información, consulte [Explicación: Creación y utilización de un parámetro en un comando (consola)](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-console.html) en la *Guía del usuario de AWS Systems Manager *.

**Para crear un parámetro con Parameter Store**

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

1. En el panel de navegación, elija **Parameter Store**, **Create parameter (Creación de parámetro)**.

1. En **Name (Nombre)**, escriba una jerarquía y un nombre de parámetro. Por ejemplo, escriba `test/database_password`.

1. En **Description (Descripción)**, escriba una descripción opcional.

1. En **Tipo**, elija **Cadena **StringList****, o **SecureString**.
**nota**  
Si lo elige **SecureString**, aparece el campo **ID de clave de KMS**. Si no proporciona un ID de clave de KMS, un ARN de clave de KMS, un nombre de alias o un ARN de alias, el sistema utiliza `alias/aws/ssm`. Esta es la clave de KMS predeterminada para Systems Manager. Para evitar utilizar esta clave, elija una clave personalizada. Para obtener más información, consulte [Utilización de parámetros de cadena segura](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-about.html) en la *Guía del usuario de AWS Systems Manager *.
Si crea un parámetro de cadena segura en la consola mediante el parámetro `key-id` con un nombre de alias de clave de KMS o un ARN de alias personalizado, debe especificar el prefijo `alias/` antes del alias. A continuación se muestra un ejemplo de ARN:  

     ```
     arn:aws:kms:us-east-2:123456789012:alias/MyAliasName
     ```
El siguiente es un ejemplo de un nombre de alias:  

     ```
     alias/MyAliasName
     ```

1. En **Value (Valor)**, escriba un valor. Por ejemplo, `MyFirstParameter`. Si lo elige **SecureString**, el valor se enmascara exactamente como lo ingresó.

1. Elija **Create parameter**.

# Autenticación de registros privados para trabajos
<a name="private-registry"></a>

La autenticación del registro privado para los trabajos AWS Secrets Manager le permite almacenar sus credenciales de forma segura y luego hacer referencia a ellas en su definición de trabajo. Esto proporciona una forma de hacer referencia a las imágenes de contenedores que existen en registros privados y AWS que no requieren autenticación en las definiciones de trabajo. Esta característica se admite para trabajos alojados en instancias de Amazon EC2 y Fargate.

**importante**  
Si la definición del trabajo hace referencia a una imagen que está almacenada en Amazon ECR, este tema no es válido. Para obtener más información, consulte [Utilización de imágenes de Amazon ECR con Amazon ECS](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_ECS.html) en la *Guía del usuario de Amazon Elastic Container Registry*.

Para los trabajos alojados en instancias de Amazon EC2, esta característica requiere la versión `1.19.0` del agente de contenedor o una posterior. Sin embargo, recomendamos utilizar la versión más reciente del agente contenedor. Para obtener información sobre cómo comprobar la versión del agente y actualizarlo a la versión más reciente, consulte [Actualización del agente de contenedor de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

Para los trabajos alojados en Fargate, esta característica requiere la versión de la plataforma `1.2.0` o posterior. Para obtener más información, consulte [Versiones de la plataforma de AWS Fargate Linux](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform-linux-fargate.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

En la definición de contenedor, especifique el objeto `repositoryCredentials` con los detalles del secreto que ha creado. El secreto al que haga referencia puede provenir de una cuenta distinta Región de AWS o distinta de la del trabajo que lo utiliza.

**nota**  
Al usar la AWS Batch API o el AWS SDK, si el secreto existe en el Región de AWS mismo lugar que el trabajo que está lanzando, puede usar el ARN completo o el nombre del secreto. AWS CLI Si el secreto existe en otra cuenta, debe especificarse el ARN completo del secreto. Al utilizar el Consola de administración de AWS, se debe especificar siempre el ARN completo del secreto.

A continuación, se incluye un fragmento de definición de trabajos que muestra los parámetros necesarios:

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

# Permisos de IAM requeridos para la autenticación de registros privados
<a name="private-auth-iam"></a>

Se requiere la función de ejecución para utilizar esta característica. Esto permite que el agente de contenedor extraiga la imagen del contenedor. Para obtener más información, consulte [AWS Batch Función de ejecución de IAM](execution-IAM-role.md).

Para proporcionar acceso a los secretos que cree, agregue los siguientes permisos como una política insertada al rol de ejecución. Para obtener más información, consulte [Adición y eliminación de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).
+ `secretsmanager:GetSecretValue`
+ `kms:Decrypt`: solo se requiere si la clave utiliza una clave de KMS personalizada y no la clave de KMS predeterminada. Se debe agregar el nombre de recurso de Amazon (ARN) de la clave de personalizada como un recurso.

Es siguiente es un ejemplo de política insertada que agrega los permisos.

------
#### [ 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: creación de un secreto para la autenticación de registros privados
<a name="private-auth-enable"></a>

Complete los siguientes pasos para crear un secreto para sus credenciales de registro privado con AWS Secrets Manager.

**Creación de un secreto básico**

1. Abre la AWS Secrets Manager consola en [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Elija **Almacenar un secreto nuevo**.

1. En **Select secret type (Seleccionar tipo de secreto)**, elija **Other type of secrets (Otro tipo de secretos)**.

1. Seleccione **Plaintext (Texto no cifrado)** y especifique sus credenciales de registros privados con el siguiente formato:

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

1. Elija **Siguiente**.

1. En **Secret name** (Nombre del secreto), ingrese una ruta y un nombre opcionales, como **production/MyAwesomeAppSecret** o **development/TestSecret**, y elija **Next** (Siguiente). Opcionalmente, puede añadir una descripción para ayudarle a recordar el objetivo de este secreto más adelante.

   El nombre del secreto debe estar formado por letras ASCII, dígitos o alguno de los siguientes caracteres: `/_+=.@-`.

1. (Opcional) En este punto puede configurar la rotación para su secreto. Para este procedimiento, deje seleccionado **Disable automatic rotation (Deshabilitar la rotación automática)** y, a continuación, elija **Next (Siguiente)**.

   Para obtener instrucciones sobre cómo configurar la rotación de secretos nuevos o existentes, consulte Cómo [rotar sus AWS Secrets Manager secretos](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html).

1. Revise la configuración y, a continuación, elija **Store secret** (Almacenar secreto) para guardar todo lo que ingresó como secreto nuevo en Secrets Manager.

Registre una definición de trabajo y, en **Registro privado**, active **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. Para obtener más información, consulte [Permisos de IAM requeridos para la autenticación de registros privados](private-auth-iam.md).

# Volúmenes de Amazon EFS
<a name="efs-volumes"></a>

Amazon Elastic File System (Amazon EFS) proporciona almacenamiento de archivos sencillo y escalable para usarlo con sus trabajos AWS Batch. Con Amazon EFS, la capacidad de almacenamiento es elástica. Escala automáticamente a medida que se agregan o eliminan archivos. Las aplicaciones disponen del almacenamiento que necesitan, cuando lo necesitan.

Puede utilizar sistemas de archivos de Amazon EFS con AWS Batch para exportar los datos del sistema de archivos a través de la flota de instancias de contenedor. De esta forma, sus trabajos tienen acceso al mismo almacenamiento persistente. No obstante, debe configurar su AMI de instancia de contenedor para montar el sistema de archivos de Amazon EFS antes de que se inicie el daemon de Docker. Además, sus definiciones de trabajo deben hacer referencia a montajes de volúmenes en la instancia de contenedor para utilizar el sistema de archivos. Las secciones siguientes le ayudarán a comenzar a utilizar Amazon EFS con AWS Batch.

## Consideraciones acerca de volúmenes de Amazon EFS
<a name="efs-volume-considerations"></a>

Al utilizar volúmenes de Amazon EFS, se debe tener en cuenta lo siguiente:
+ Para los trabajos que utilizan recursos EC2, se ha agregado compatibilidad con el sistema de archivos de Amazon EFS como vista previa pública en la versión AMI optimizada para Amazon ECS `20191212` con el agente de contenedor versión 1.35.0. Sin embargo, el sistema de archivos de Amazon EFS está disponible con carácter general a partir de la versión `20200319` de la AMI optimizada para Amazon ECS con el agente de contenedor versión 1.38.0, que contenía las características de punto de acceso de Amazon EFS y autorización de IAM. Recomendamos utilizar la versión AMI optimizada para Amazon ECS `20200319` o una posterior para aprovechar estas características. Para obtener más información, consulte la sección sobre [Versiones AMI Linux optimizada para Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.
**nota**  
Si crea su propia AMI, debe usar el agente de contenedor 1.38.0 o posterior, versión `ecs-init` 1.38.0-1 o una posterior, y ejecutar los siguientes comandos en su instancia de Amazon EC2. Todo esto es para habilitar el complemento de volumen Amazon ECS. Los comandos dependen de si utiliza Amazon Linux 2 o Amazon Linux como imagen 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 los trabajos que utilizan recursos de Fargate, se agregó la compatibilidad con el sistema de archivos de Amazon EFS al usar la versión de la plataforma 1.4.0 o posterior. Para obtener más información, consulte [Versiones de la plataforma de AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.
+ Cuando se utilizan volúmenes de Amazon EFS en trabajos que usan recursos de Fargate, Fargate crea un contenedor supervisor responsable de administrar el volumen de Amazon EFS. El contenedor supervisor utiliza una pequeña cantidad de la memoria del trabajo. El contenedor supervisor puede verse al consultar la versión 4 del punto de conexión de metadatos de la tarea. Para obtener más información, consulte [Versión 4 del punto de conexión de metadatos de tareas](https://docs.aws.amazon.com/AmazonECS/latest/userguide/task-metadata-endpoint-v4-fargate.html) en la *Guía del usuario de Amazon Elastic Container Service para AWS Fargate*.

## Uso de puntos de acceso de Amazon EFS
<a name="efs-volume-accesspoints"></a>

Los puntos de acceso de Amazon EFS son puntos de entrada específicos de la aplicación a un sistema de archivos de EFS que le ayudan a administrar el acceso de la aplicación a conjuntos de datos compartidos. Para obtener más información acerca de los puntos de acceso de Amazon EFS y cómo controla el acceso a ellos, consulte [Uso de puntos de acceso de Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) en la *Guía del usuario de Amazon Elastic File System*.

Los puntos de acceso pueden imponer una identidad de usuario, incluidos los grupos POSIX del usuario, para todas las solicitudes del sistema de archivos que se realizan a través de ellos. Los puntos de acceso también pueden imponer un directorio raíz diferente para el sistema de archivos, de modo que los clientes solo puedan acceder a los datos del directorio especificado o de sus subdirectorios.

**nota**  
Cuando se crea un punto de acceso EFS, se especifica una ruta en el sistema de archivos para que sirva como directorio raíz. Cuando se hace referencia al sistema de archivos de EFS con un ID de punto de acceso en la definición de trabajo de AWS Batch, el directorio raíz se debe omitir o establecer en `/`, lo que aplicará la ruta establecida en el punto de acceso de EFS.

Puede utilizar un rol de IAM con el trabajo de AWS Batch para exigir que determinadas aplicaciones utilicen un punto de acceso específico. Al combinar políticas de IAM con puntos de acceso, puede proporcionar fácilmente acceso seguro a conjuntos de datos específicos para sus aplicaciones. Esta característica utiliza roles de IAM de Amazon ECS para otorgarle funcionalidad a la tarea. Para obtener más información, consulte [Roles de IAM para tareas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

## Indique un sistema de archivos de Amazon EFS en la definición del trabajo
<a name="specify-efs-config"></a>

Para usar volúmenes del sistema de archivos de Amazon EFS para sus contenedores, debe especificar las configuraciones de volumen y punto de montaje en su definición de trabajo. El siguiente fragmento de JSON de definición de trabajo muestra la sintaxis de los objetos `volumes` y `mountPoints` para un contenedor:

```
{
    "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  
Obligatorio: no  
Este parámetro se especifica cuando se usan volúmenes de Amazon EFS.    
`fileSystemId`  
Tipo: cadena  
Obligatorio: sí  
El ID del sistema de archivos de Amazon EFS que se va a usar.  
`rootDirectory`  
Tipo: cadena  
Obligatorio: no  
Directorio del sistema de archivos de Amazon EFS que se va a montar como directorio raíz dentro del host. Si se omite este parámetro, se utiliza la raíz del volumen de Amazon EFS. Si se especifica `/`, se obtiene el mismo efecto que si se omite este parámetro. Puede tener hasta 4 096 caracteres de longitud.  
Si se especifica un punto de acceso de EFS en el `authorizationConfig`, se debe omitir el parámetro del directorio raíz o establecerlo en `/`. Esto impone la ruta establecida en el punto de acceso de EFS.  
`transitEncryption`  
Tipo: cadena  
Valores válidos: `ENABLED` \$1 `DISABLED`  
Obligatorio: no  
Determina si se habilita el cifrado de los datos en tránsito de Amazon EFS entre el host de AWS Batch y el servidor de Amazon EFS. El cifrado en tránsito debe estar habilitado si se utiliza la autorización de IAM en Amazon EFS. Si se omite este parámetro, se usa el valor predeterminado de `DISABLED`. Para obtener más información, consulte [Cifrado de datos en tránsito](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) en la *Guía del usuario de Amazon Elastic File System*.  
`transitEncryptionPort`  
Tipo: entero  
Obligatorio: no  
El puerto que se utilizará al enviar datos cifrados entre el host de AWS Batch y el servidor de Amazon EFS. Si no se especifica un puerto de cifrado en tránsito, se emplea la estrategia de selección de puertos que utiliza el ayudante de montaje de Amazon EFS. Este valor debe estar entre 0 y 65 535. Para obtener más información, consulte [Ayudante de montaje de EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) en la *Guía del usuario de Amazon Elastic File System*.  
`authorizationConfig`  
Tipo: objeto  
Obligatorio: no  
Los detalles de configuración de autorización en el sistema de archivos de Amazon EFS.    
`accessPointId`  
Tipo: cadena  
Requerido: no  
ID de punto de acceso que se va a utilizar. Si se especifica un punto de acceso, el valor del directorio raíz en `efsVolumeConfiguration` se debe omitir o establecer en `/`. Esto impone la ruta establecida en el punto de acceso de EFS. Si se utiliza un punto de acceso, el cifrado de tránsito debe estar habilitado en el `EFSVolumeConfiguration`. Para obtener más información, consulte [Trabajo con puntos de acceso de Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) en la *Guía del usuario de Amazon Elastic File System*.  
`iam`  
Tipo: cadena  
Valores válidos: `ENABLED` \$1 `DISABLED`  
Obligatorio: no  
Determina si se debe utilizar el rol de IAM del trabajo AWS Batch definido en una definición de trabajo al montar el sistema de archivos de Amazon EFS. Si está habilitado, el cifrado de tránsito debe estar habilitado en el `EFSVolumeConfiguration`. Si se omite este parámetro, se usa el valor predeterminado de `DISABLED`. Para obtener más información sobre el rol de ejecución de IAM, consulte [AWS Batch Función de ejecución de IAM](execution-IAM-role.md).

# Ejemplos de definición de trabajo
<a name="example-job-definitions"></a>

Los ejemplos de definición de trabajo a continuación ilustran cómo utilizar patrones comunes, como las variables de entorno, las sustituciones de parámetros y los montajes de volúmenes.

**Topics**
+ [Variables de entorno](example-use-envvars.md)
+ [Sustitución de parámetros](example-use-parameters.md)
+ [Funcionalidad de GPU de prueba](example-test-gpu.md)
+ [Trabajo paralelo de varios nodos](example-mnp-job-definition.md)

# Variables de entorno
<a name="example-use-envvars"></a>

En el siguiente ejemplo, la definición de trabajo utiliza variables de entorno para especificar un tipo de archivo y un URL de Amazon S3. Este ejemplo se ha extraído del artículo de blog de informática titulado [Creating a Simple "Fetch & Run" AWS Batch Job](https://aws.amazon.com/blogs/compute/creating-a-simple-fetch-and-run-aws-batch-job/). El 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 se describe en el artículo utiliza estas variables de entorno para descargar el script `myjob.sh` de S3 y declarar su tipo de archivo.

Aunque en este ejemplo el comando y las variables de entorno están codificadas de forma rígida en la definición de trabajo, puede especificar sustituciones de comandos y de variables de entorno para que la definición de trabajo más 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"
    }
}
```

# Sustitución de parámetros
<a name="example-use-parameters"></a>

El siguiente ejemplo de definición de trabajo ilustra cómo permitir la sustitución de parámetros y cómo establecer valores predeterminados.

Las declaraciones `Ref::` de la sección `command` se utilizan para definir marcadores de posición para sustituir parámetros. Al enviar un trabajo con esta definición de trabajo, se especifican las sustituciones de parámetros que ocuparán dichos valores, como `inputfile` y `outputfile`. La sección `parameters` a continuación establece un valor predeterminado para `codec`, pero es posible invalidar ese parámetro si fuera necesario.

Para obtener más información, 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"
    }
}
```

# Funcionalidad de GPU de prueba
<a name="example-test-gpu"></a>

En el siguiente ejemplo, la definición de trabajo prueba si la AMI de carga de trabajo de GPU descrita en [Uso de una AMI de carga de trabajo de GPU](batch-gpu-ami.md) se ha configurado correctamente. Esta definición de trabajo de ejemplo ejecuta el [ejemplo](https://github.com/tensorflow/tensorflow/blob/r1.8/tensorflow/examples/tutorials/mnist/mnist_deep.py) del clasificador TensorFlow deep MNIST de 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"
}
```

Es posible crear un archivo con el texto JSON indicado arriba, que se denomine `tensorflow_mnist_deep.json` y, a continuación, registrar una definición de trabajo de AWS Batch con el siguiente comando:

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

# Trabajo paralelo de varios nodos
<a name="example-mnp-job-definition"></a>

La definición de trabajo de ejemplo siguiente muestra un trabajo paralelo de varios nodos. Para obtener más información, consulte [Creación de un flujo de trabajo de dinámica molecular estrechamente relacionado con trabajos paralelos de múltiples nodos en AWS Batch](https://aws.amazon.com/blogs/compute/building-a-tightly-coupled-molecular-dynamics-workflow-with-multi-node-parallel-jobs-in-aws-batch/) en el blog de *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"
        }
      }
    ]
  }
}
```