AWS Step Functions で AWS Batch のステートマシンを作成する


ステートマシンの作成

まずステートマシンの Type フィールドですが、 Task を指定します。これはステートマシンが他の AWS リソースを呼び出すときに使用します。

"Type": "Task"

次に Resource フィールドですが、Batch 用には次の ARN が用意されています。

arn:aws:states:::batch:submitJob

さらにサフィックスに .sync を付与すると、ステートマシンは実行完了まで待機します。

リクエストの完了まで待機してから、次の状態に進むことができます。Step Functions を待機させるには、"Resource"フィールドを使用して、タスク状態定義の.syncサフィックスをリソース URI の後に付加します。

詳しくはこちらを参照してください。

上記を踏まえ、以下のような Resource を指定します。

"Resource": "arn:aws:states:::batch:submitJob.sync"

次に Parameters フィールドですが、以下のように指定します。

"Parameters": {
  "JobDefinition": "call-job",
  "JobName": "call-job",
  "JobQueue": "call-queue"
}

以下が完成版になります。

{
  "Comment": "Execute Variant Call",
  "StartAt": "call",
  "States": {
    "call": {
      "Type": "Task",
      "Resource": "arn:aws:states:::batch:submitJob.sync",
      "Parameters": {
        "JobDefinition": "call-job",
        "JobName": "call-job",
        "JobQueue": "call-queue"
      },
      "End": true
    }
  }
}

実行時はジョブキューで指定したコンピューティング環境を有効化することを忘れないように注意してください。

以下は実行結果になります。

参考記事