使用 Step Functions 运行 Amazon Batch 工作负载 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Step Functions 运行 Amazon Batch 工作负载

可以将 Step Functions 与 Amazon Batch 集成,以便在 Amazon 云端运行批量计算工作负载。本页列出了支持的 Amazon Batch API,并提供了执行批处理任务的示例 Task 状态。

要了解如何在 Step Functions 中与 Amazon 服务集成,请参阅集成 服务在 Step Functions 中将参数传递给服务 API

经优化的 Amazon Batch 集成的主要功能

请注意,没有针对 请求响应等待具有任务令牌的回调 集成模式的特定优化。

下面显示了一个提交 Amazon Batch 作业并等待作业完成的 Task 状态。显示的许多参数都是可选的。

"Submit Batch Job": { "Type": "Task", "Resource": "arn:aws:states:::batch:submitJob.sync", "Arguments": { "JobName": "BATCH_NAME", "JobQueue": "BATCH_QUEUE_ARN", "JobDefinition": "BATCH_JOB_DEFINITION_ARN", "ArrayProperties": { "Size": 10 }, "ContainerOverrides": { "ResourceRequirements": [ { "Type": "VCPU", "Value": "4" } ] }, "DependsOn": [ { "JobId": "myJobId", "Type": "SEQUENTIAL" } ], "PropagateTags": true, "Arguments": { "Key1": "value1", "Key2": 100 }, "RetryStrategy": { "Attempts": 1 }, "Tags": { "Tag": "TAG" }, "Timeout": { "AttemptDurationSeconds": 10 } } }

经优化 Amazon Batch 的 API:

Step Functions 中的参数以 PascalCase 表示

即使原生服务 API 采用 camelCase(例如 API 操作 startSyncExecution),也可以采用 PascalCase 指定参数,例如:StateMachineArn

用于调用 Amazon Batch 的 IAM 策略

以下示例模板展示了 Amazon Step Functions 如何根据状态机定义中的资源生成 IAM 策略。有关更多信息,请参阅Step Functions 如何为集成服务生成 IAM 策略探索 Step Functions 中的服务集成模式

由于 SubmitJobTerminateJob 的作业 ID 是在运行时生成的(因此只有在运行时才可知),您无法创建基于特定资源来限制访问的策略。

精细访问权限小贴士

要添加对 SubmitJobTerminateJob 的精细访问权限,请考虑对作业使用标签,并创建基于标签限制访问权限的策略。此外,对于 SubmitJob 操作,可以利用已知资源对作业队列、作业定义和可使用资源进行限制。

Run a Job (.sync)
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:SubmitJob", "batch:DescribeJobs", "batch:TerminateJob" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForBatchJobsRule" ] } ] }
Request Response
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:SubmitJob" ], "Resource": "*" } ] }