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

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

作业定义示例

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

使用环境变量

以下作业定义示例使用环境变量来指定文件类型和 Amazon S3 URL。该特定示例来自创建简单的“Fetch & Run”Amazon 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", "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" } }

使用参数替代

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

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

有关更多信息,请参阅参数

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

测试 GPU 功能

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

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

可以创建名为tensorflow_mnist_deep.json的文件来包含上面的 JSON 文本,然后使用以下命令注册Amazon Batch作业定义:

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

多节点并行作业

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

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