Ejemplos de definiciones de trabajo - 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.

Ejemplos de definiciones de trabajo

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

Utilización de variables de entorno

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. El script 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://my-batch-scripts/myjob.sh" }, { "name": "BATCH_FILE_TYPE", "value": "script" } ], "user": "nobody" } }

Cómo usar la sustitución de parámetros

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 Parámetros.

{ "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

En el siguiente ejemplo, la definición de trabajo prueba si la AMI de carga de trabajo de GPU descrita en Cómo utilizar una AMI de carga de trabajo de GPU se ha configurado correctamente. Esta definición de trabajo de ejemplo ejecuta el ejemplo 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

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