AWS Batch
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

示例数组作业工作流

AWS Batch 客户的常见工作流是运行先决条件设置任务,针对大量输入任务运行一系列命令,然后以聚合结果并将摘要数据写入到 Amazon S3、DynamoDB、Amazon Redshift 或 Aurora 的任务结束。

例如:

  • JobA:一个标准的非数组任务,它对 Amazon S3 存储桶 BucketA 中的对象执行快速列示和元数据验证。SubmitJob JSON 语法如下所示。

    { "jobName": "JobA", "jobQueue": "ProdQueue", "jobDefinition": "JobA-list-and-validate:1" }
  • JobB:一个包含 10000 个副本的数组作业,它依赖于 JobA,针对 BucketA 中的每个对象运行 CPU 密集型命令并将结果上传至 BucketBSubmitJob JSON 语法如下所示。

    { "jobName": "JobB", "jobQueue": "ProdQueue", "jobDefinition": "JobB-CPU-Intensive-Processing:1", "containerOverrides": { "vcpus": 32, "memory": 4096 } "arrayProperties": { "size": 10000 }, "dependsOn": [ { "jobId": "JobA_job_ID" } ] }
  • JobC:另一个包含 10000 个副本的数组任务,依赖于 JobB,具有 N_TO_N 依赖项模型,针对 BucketB 中的每个项目运行内存密集型命令,将元数据写入到 DynamoDB,并将生成的输出上传至 BucketCSubmitJob JSON 语法如下所示。

    { "jobName": "JobC", "jobQueue": "ProdQueue", "jobDefinition": "JobC-Memory-Intensive-Processing:1", "containerOverrides": { "vcpus": 1, "memory": 32768 } "arrayProperties": { "size": 10000 }, "dependsOn": [ { "jobId": "JobB_job_ID", "type": "N_TO_N" } ] }
  • JobD:一个执行 10 个验证步骤的数组任务,其中每个步骤需要查询 DynamoDB 并且可能与上述任一 Amazon S3 存储桶交互。JobD 中的每个步骤均运行相同命令,但其行为因该作业的容器内的 AWS_BATCH_JOB_ARRAY_INDEX 环境变量的值而异。这些验证步骤按顺序运行 (例如,先运行 JobD:0,再运行 JobD:1,依此类推)。SubmitJob JSON 语法如下所示。

    { "jobName": "JobD", "jobQueue": "ProdQueue", "jobDefinition": "JobD-Sequential-Validation:1", "containerOverrides": { "vcpus": 1, "memory": 32768 } "arrayProperties": { "size": 10 }, "dependsOn": [ { "jobId": "JobC_job_ID" }, { "type": "SEQUENTIAL" }, ] }
  • JobE:一个最终的非数组任务,它执行一些简单的清除操作并发送包含管道已完成的消息和指向输出 URL 的链接的 Amazon SNS 通知。SubmitJob JSON 语法如下所示。

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