使用 Step Functions 运行 Amazon Batch 工作负载
可以将 Step Functions 与 Amazon Batch 集成,以便在 Amazon 云端运行批量计算工作负载。本页列出了支持的 Amazon Batch API,并提供了执行批处理任务的示例 Task 状态。
要了解如何在 Step Functions 中与 Amazon 服务集成,请参阅集成 服务和在 Step Functions 中将参数传递给服务 API。
经优化的 Amazon Batch 集成的主要功能
运行作业 (.sync) 集成模式可用。
请注意,没有针对 请求响应 或 等待具有任务令牌的回调 集成模式的特定优化。
下面显示了一个提交 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 中的服务集成模式。
由于 SubmitJob 和 TerminateJob 的作业 ID 是在运行时生成的(因此只有在运行时才可知),您无法创建基于特定资源来限制访问的策略。
精细访问权限小贴士
要添加对 SubmitJob 和 TerminateJob 的精细访问权限,请考虑对作业使用标签,并创建基于标签限制访问权限的策略。此外,对于 SubmitJob 操作,可以利用已知资源对作业队列、作业定义和可使用资源进行限制。