Ejemplo de flujo de trabajo de un trabajo de matriz - AWS Batch

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.

Ejemplo de flujo de trabajo de un trabajo de matriz

Un flujo de trabajo habitual para AWS Batch los clientes consiste en ejecutar un trabajo de configuración previo, ejecutar una serie de comandos en un gran número de tareas de entrada y, a continuación, concluir con un trabajo que agregue los resultados y escriba datos resumidos en Amazon S3, DynamoDB, Amazon Redshift o Aurora.

Por ejemplo:

  • JobA: un trabajo estándar que no es de matriz, que realiza un listado rápido y una validación de metadatos de los objetos de un bucket BucketA de Amazon S3. La SubmitJobJSONsintaxis es la siguiente.

    { "jobName": "JobA", "jobQueue": "ProdQueue", "jobDefinition": "JobA-list-and-validate:1" }
  • JobB: Un trabajo de matriz con 10 000 copias del que depende JobA que ejecute comandos CPU intensivos en cada objeto BucketA y en el que cargue los resultados. BucketB La SubmitJobJSONsintaxis es la siguiente.

    { "jobName": "JobB", "jobQueue": "ProdQueue", "jobDefinition": "JobB-CPU-Intensive-Processing:1", "containerOverrides": { "resourceRequirements": [ { "type": "MEMORY", "value": "4096" }, { "type": "VCPU", "value": "32" } ] } "arrayProperties": { "size": 10000 }, "dependsOn": [ { "jobId": "JobA_job_ID" } ] }
  • JobC: otro trabajo de matriz de 10 000 copias que depende de JobB con un modelo de dependencia N_TO_N, que ejecuta comandos con un uso intensivo de la memoria en cada elemento de BucketB, escribe los metadatos en DynamoDB y carga la salida obtenida en BucketC . La SubmitJobJSONsintaxis es la siguiente.

    { "jobName": "JobC", "jobQueue": "ProdQueue", "jobDefinition": "JobC-Memory-Intensive-Processing:1", "containerOverrides": { "resourceRequirements": [ { "type": "MEMORY", "value": "32768" }, { "type": "VCPU", "value": "1" } ] } "arrayProperties": { "size": 10000 }, "dependsOn": [ { "jobId": "JobB_job_ID", "type": "N_TO_N" } ] }
  • JobD: un trabajo de matriz que realiza 10 pasos de validación que requieren consultar DynamoDB y que pueden interactuar con cualquiera de los buckets de Amazon S3 anteriores. Cada uno de los pasos de JobD ejecuta el mismo comando. Sin embargo, el comportamiento es diferente en función del valor de la variable de entorno AWS_BATCH_JOB_ARRAY_INDEX del contenedor del trabajo. Estos pasos de validación se ejecutan de forma secuencial (por ejemplo JobD:0 y, a continuación, JobD:1). La SubmitJobJSONsintaxis es la siguiente.

    { "jobName": "JobD", "jobQueue": "ProdQueue", "jobDefinition": "JobD-Sequential-Validation:1", "containerOverrides": { "resourceRequirements": [ { "type": "MEMORY", "value": "32768" }, { "type": "VCPU", "value": "1" } ] } "arrayProperties": { "size": 10 }, "dependsOn": [ { "jobId": "JobC_job_ID" }, { "type": "SEQUENTIAL" }, ] }
  • JobE: Un último trabajo, que no es de matriz, que realiza algunas operaciones de limpieza sencillas y envía una SNS notificación de Amazon con un mensaje de que la canalización se ha completado y un enlace al resultado. URL La SubmitJobJSONsintaxis es la siguiente.

    { "jobName": "JobE", "jobQueue": "ProdQueue", "jobDefinition": "JobE-Cleanup-and-Notification:1", "parameters": { "SourceBucket": "s3://JobD-Output-Bucket", "Recipient": "pipeline-notifications@mycompany.com" }, "dependsOn": [ { "jobId": "JobD_job_ID" } ] }