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": "012345678910.dkr.ecr.us-east-1.amazonaws.com/fetch_and_run", "vcpus": 2, "memory": 2000, "command": [ "myjob.sh", "60" ], "jobRoleArn": "arn:aws:iam::012345678910: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", "vcpus": 2, "memory": 2000, "command": [ "ffmpeg", "-i", "Ref::inputfile", "-c", "Ref::codec", "-o", "Ref::outputfile" ], "jobRoleArn": "arn:aws:iam::012345678910: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" }

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

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