Creación de definiciones de trabajos mediante EcsProperties
Si utiliza las definiciones de trabajo de AWS Batch con EcsProperties, 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 característica se puede usar en AWS Batch con Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS) y AWS Fargate.
ContainerProperties frente a las definiciones de trabajo de EcsProperties
Puede utilizar las definiciones de trabajo ContainerProperties o EcsProperties según lo requiera su caso de uso. A un nivel superior, ejecutar trabajos de AWS Batch con EcsProperties es similar a ejecutar trabajos con 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 las API de AWS Batch
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
ContainerPropertiesaparecen enTaskContainerProperties. Algunos ejemplos incluyencommand,image,privileged,secretsyusers. Todos se encuentran en TaskContainerProperties. -
Algunos de los parámetros de
TaskContainerPropertiesno tienen equivalentes funcionales en la estructura heredada. Algunos ejemplos incluyendependsOn,essential,name,ipcModeypidMode. Para obtener más información, consulte EcsTaskDetails y TaskContainerProperties.Además, algunos parámetros de
ContainerPropertiesno tienen equivalentes ni aplicación en la estructura deEcsProperties. EntaskProperties,containerse ha sustituido porcontainerspara que el nuevo objeto pueda aceptar hasta diez elementos. Para obtener más información, consulte RegisterJobDefinition:containerProperties y EcsTaskProperties:Containers. -
La funcionalidad de
taskRoleArnes equivalente ajobRoleArn. Para obtener más información, consulte EcsTaskProperties:taskRoleArn y ContainerProperties:jobRoleArn. -
Puede incluir de uno a diez contenedores en la estructura de
EcsProperties. Para obtener más información, consulte EcsTaskProperties:containers. -
Los objetos
taskPropertiese instanceTypes son matrices, pero actualmente solo aceptan un elemento. Por ejemplo, EcsProperties:taskProperties y NodeRangeProperty:instanceTypes.
Definiciones de trabajo en varios contenedores para Amazon ECS
Para adaptarse a la estructura de varios contenedores de Amazon ECS, algunos de los tipos de datos de API son diferentes. Por ejemplo:
-
ecsPropertiestiene el mismo nivel quecontainerPropertiesen la definición de contenedor único. Para obtener más información, consulte EcsProperties en la Referencia de la API de AWS Batch. -
taskPropertiescontiene las propiedades definidas para la tarea de Amazon ECS. Para obtener más información, consulte EcsProperties en la Referencia de la API de AWS Batch. -
containersincluye información similar a la decontainerPropertiesen la definición de contenedor único. La principal diferencia es quecontainerspermite definir hasta diez contenedores. Para obtener más información, consulta ECSTaskProperties:containers en la Guía de referencia de la API de AWS Batch. -
El parámetro
essentialindica 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 comoessential. Para obtener más información, consulteessentialen la Guía de referencia de la API de AWS Batch. -
Con el parámetro
dependsOn, puede definir una lista de dependencias de contenedores. Para obtener más información, consultedependsOnen la Guía de referencia de la API de AWS Batch.nota
La complejidad de la lista de
dependsOny 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 estadoSTARTINGhasta que se complete.
Para obtener más información sobre ecsProperties y la estructura, consulte la sintaxis de solicitud RegisterJobDefinition para ecsProperties.
Definiciones de trabajos con varios contenedores para Amazon EKS
Para adaptarse a la estructura de varios contenedores de Amazon EKS, algunos de los tipos de datos de API son diferentes. Por ejemplo:
-
namees un único identificador para el contenedor. Este objeto no es necesario para un único contenedor, pero sí para definir varios contenedores en un pod. Sinameno está definido para contenedores individuales, se aplica el nombre predeterminado,default. -
initContainersse definen en el tipo de datos eksPodProperties. 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
initContainerspuede aceptar hasta diez elementos. Para obtener más información, consulte Init Containersen la documentación de Kubernetes. nota
El objeto
initContainerspuede afectar a la hora de inicio del trabajo. Si losinitContainerstardan mucho en ejecutarse, el trabajo mantendrá el estadoSTARTINGhasta que se complete. -
shareProcessNamespaceindica si los contenedores del pod pueden compartir el mismo espacio de nombres del proceso. El valor predeterminado esfalse. Configúrelo entruepara 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 eksProperties y la estructura, consulte la sintaxis de solicitud RegisterJobDefinition para eksProperties.