メニュー
AWS Step Functions
開発者ガイド

Parallel

Parallel 状態 ("Type": "Parallel") はステートマシンの実行の並列ブランチを作成するために使用できます。

共通状態フィールドに加えて、Parallel 状態には次の追加フィールドが導入されます。

Branches (必須)

ステートマシンで並列して実行する状態を指定するオブジェクトの配列。このような各ステートマシンオブジェクトには States および StartAt というフィールドが必要です。これらの意味はステートマシンの最上位にあるものとまったく同様です。

ResultPath(オプション)

ブランチの出力を配置する (入力内の) 場所を指定します。その後、入力は OutputPath フィールド (ある場合) に従ってフィルタリングされてから状態の出力に使用されます。詳細については、「入力および出力処理」を参照してください。

Retry(オプション)

Retrier と呼ばれるオブジェクトの配列。状態でランタイムエラーが発生した場合の再試行ポリシーを定義します。詳細については、「エラー後の再試行」を参照してください。

Catch(オプション)

Catcher と呼ばれるオブジェクトの配列。状態でランタイムエラーが発生し、再試行ポリシーがすでに試された後または定義されていない場合に実行されるフォールバック状態を定義します。詳細については、「フォールバック状態」を参照してください。

Parallel 状態を使用すると AWS Step Functions で各ブランチが実行されます。そのブランチの StartAt フィールドに指定された名前の状態から開始され、可能な限り同時に実行されて、すべてのブランチが終了 (終了状態に到達) してから、Parallel 状態の Next フィールドが処理されます。

例を示します。

"LookupCustomerInfo": { "Type": "Parallel", "Branches": [ { "StartAt": "LookupAddress", "States": { "LookupAddress": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:AddressFinder", "End": true } } }, { "StartAt": "LookupPhone", "States": { "LookupPhone": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:PhoneFinder", "End": true } } } ], "Next": "NextState" }

この例では、LookupAddress および LookupPhone ブランチは並行して実行されます。

各ブランチは自己完結型である必要があります。Parallel 状態の 1 つのブランチの状態にはそのブランチ外のフィールドをターゲットにする Next フィールドがあってはなりません。また、そのブランチ外の他の状態からこのブランチに移行することもできません。

Parallel 状態出力

Parallel 状態は各ブランチに自身の入力データ (InputPath フィールドによって変更される場合があります) のコピーを提供します。そのブランチからの出力を含む各ブランチの 1 つの要素から成る配列である出力が生成されます。すべての要素が同じタイプである必要はありません。出力配列は、ResultPath を通常の方法で使用して、入力データに挿入 (および前部を Parallel 状態の出力として送信) できます (入力および出力処理を参照)。

次に、別の例を示します。

"FunWithMath": { "Type": "Parallel", "Branches": [ { "StartAt": "Add", "States": { "Add": { "Type": "Task", "Resource": "arn:aws:swf:us-east-1:123456789012:task:Add", "End": true } } }, { "StartAt": "Subtract", "States": { "Subtract": { "Type": "Task", "Resource": "arn:aws:swf:us-east-1:123456789012:task:Subtract", "End": true } } } ], "Next": "NextState" }

FunWithMath 状態に入力として配列 [3, 2] が提供される場合、Add および Subtract 状態は両方ともその配列を入力として受信します。Add の出力は 5 になり、Subtract の場合は 1 になります。Parallel 状態の出力は配列になります。

[ 5, 1 ]

エラー処理

処理されないエラーまたは Fail 状態に移行したためにブランチが失敗すると、Parallel 状態全体が失敗とみなされ、そのすべてのブランチが停止します。エラーが Parallel 状態事態で処理されない場合、Step Functions は実行をエラーで停止します。

このページの内容: