Step Functions を使用した AWS Batch ワークロードの実行 - AWS Step Functions

Step Functions を使用した AWS Batch ワークロードの実行

Step Functions を AWS Batch と統合すると、AWS クラウドでバッチコンピューティングワークロードを実行できます。このページでは、サポートされている AWS Batch API を一覧表示し、バッチ処理タスクを実行するための Task 状態の例を示します。

Step Functions で AWS サービスと統合することについては、「 サービスとの統合」および「Step Functions でサービス API にパラメータを渡す」を参照してください。

最適化された AWS Batch 統合の主な機能

リクエストレスポンス または タスクトークンのコールバックまで待機する 統合パターンに固有の最適化はないことに注意してください。

次に示しているのは、AWS 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 } } }

最適化された AWS Batch API:

Step Functions のパラメータは PascalCase で表されます。

ネイティブサービス API が、API アクション startSyncExecution などの camelCase である場合でも、StateMachineArn などの PascalCase でパラメータを指定します。

AWS Batch を呼び出すための IAM ポリシー

以下のテンプレート例では、ステートマシンの定義におけるリソースに基づき、AWS Step Functions による IAM ポリシーの生成方法を示しています。詳細については、「Step Functions が統合サービスの IAM ポリシーを生成する方法」および「Step Functions でサービス統合パターンを検出する」を参照してください。

SubmitJob および TerminateJob のジョブ 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": "*" } ] }