示例作业定义 - AWS Batch
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

示例作业定义

以下示例作业定义说明了如何使用常见模式,如环境变量、参数替代和卷挂载。

使用环境变量

以下示例作业定义使用环境变量来指定文件类型和 Amazon S3 URL。该特定示例来自创建简单的“Fetch & Run”AWS Batch 作业计算博客文章。博客文章中描述的fetch_and_run.sh脚本使用这些环境变量从 S3 下载myjob.sh脚本并声明其文件类型。

即使在本示例中,命令和环境变量被硬编码到作业定义中,您也可以指定命令和环境变量覆盖以使作业定义更加通用。

{ "jobDefinitionName": "fetch_and_run", "type": "container", "containerProperties": { "image": "123456789012.dkr.ecr.us-east-1.amazonaws.com/fetch_and_run", "vcpus": 2, "memory": 2000, "command": [ "myjob.sh", "60" ], "jobRoleArn": "arn:aws-cn: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" } }

使用参数替换

以下示例作业定义说明了如何允许参数替代和设置默认值。

Ref:: 部分中的 command 声明用于设置参数替代的占位符。当您提交使用此作业定义的作业时,可以指定参数覆盖以填充这些值,例如 inputfileoutputfile。后面parameters的部分设置 的默认值codec,但您可以根据需要覆盖该参数。

有关更多信息,请参阅Parameters

{ "jobDefinitionName": "ffmpeg_parameters", "type": "container", "parameters": {"codec": "mp4"}, "containerProperties": { "image": "my_repo/ffmpeg", "vcpus": 2, "memory": 2000, "command": [ "ffmpeg", "-i", "Ref::inputfile", "-c", "Ref::codec", "-o", "Ref::outputfile" ], "jobRoleArn": "arn:aws-cn:iam::123456789012:role/ECSTask-S3FullAccess", "user": "nobody" } }

测试 GPU 功能

在以下示例中,作业定义测试使用 GPU 工作负载 AMI 中所述的 GPU 工作负载 AMI 是否正确配置。此示例作业定义运行 GitHub 中的 TensorFlow deep MNIST 分类器示例

{ "containerProperties": { "image": "tensorflow/tensorflow:1.8.0-devel-gpu", "vcpus": 8, "command": [ "sh", "-c", "cd /tensorflow/tensorflow/examples/tutorials/mnist; python mnist_deep.py" ], "memory": 32000 }, "type": "container", "jobDefinitionName": "tensorflow_mnist_deep" }

您可以使用名为 的上述 JSON 文本创建一个文件tensorflow_mnist_deep.json,然后使用以下命令注册 AWS Batch 作业定义:

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

多节点并行作业

以下作业定义示例描述了多节点并行作业。有关更多信息,请参阅 AWS 计算AWS Batch博客中的在 中使用多节点并行作业构建紧密耦合的分子动力学工作流程。

{ "jobDefinitionName": "gromacs-jobdef", "jobDefinitionArn": "arn:aws-cn: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", "vcpus": 8, "memory": 24000, "command": [], "jobRoleArn": "arn:aws-cn:iam::123456789012:role/ecsTaskExecutionRole", "ulimits": [], "instanceType": "p3.2xlarge" } } ] } }