Redriving Step Functions での ステートマシンの実行 - AWS Step Functions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Redriving Step Functions での ステートマシンの実行

redrive を使用して、過去 14 日間に正常に完了しなかった標準ワークフローの実行を再開できます。これには、失敗した、中止された、またはタイムアウトした実行が含まれます。

redrive を実行すると、失敗したステップから失敗した実行が継続され、同じ入力が使用されます。Step Functions は、成功したステップの結果と実行履歴を保存し、redrive の実行時にこれらのステップは再実行されません。例えば、ワークフローに 2 つの状態、1 つは ワークフロー状態を渡す 状態、もう 1 つはそれに続く タスクワークフローの状態 状態です ワークフローの実行が Task 状態で失敗し、実行を redrive すると、実行のスケジュールが再設定され、Task 状態が再実行されます。

Redriven 実行では、元の実行試行に使用したARNのと同じステートマシン定義と実行が使用されます。元の実行試行がバージョンエイリアス、あるいはその両方に関連付けられていた場合、redriven された実行は同じバージョン、エイリアス、または両方に関連付けられます。エイリアスを別のバージョンを指すように更新しても、再処理された実行には元の実行試行に関連付けられたバージョンが使用され続けます。再処理された実行では同じステートマシン定義が使用されるため、ステートマシン定義を更新した場合は新しい実行を開始する必要があります。

実行を再処理すると、ステートマシンレベルのタイムアウト (定義されている場合) は 0 にリセットされます。ステートマシンレベルのタイムアウトの詳細については、「TimeoutSeconds」を参照してください。

実行の再処理は状態遷移と見なされます。状態遷移が課金に及ぼす影響については、‭‬Step Functions コスト‭を参照してください。

失敗した実行の再処理対象

最初に試みた実行が以下の条件を満たしていれば、実行を再処理することができます。

  • 2023 年 11 月 15 日以降に実行を開始しました。この日付より前に開始した実行は再処理の対象外です。

  • 実行ステータスは SUCCEEDED ではありません。

  • ワークフローの実行は 14 日間の再処理可能期間を超えていません。再処理可能期間とは、特定の実行を再処理できる時間を指します。この期間は、ステートマシンが実行を完了した日から始まります。

  • ワークフローの実行は、1 年間の最大オープン時間を超えていません。ステートマシン実行クォータの詳細については、「ステートマシンの実行に関連するクォータ」を参照してください。

  • 実行イベント履歴数は 24,999 件未満です。再処理された実行によって、イベント履歴が既存のイベント履歴に追加されます。ExecutionRedriven 履歴イベントと少なくとも 1 つのその他の履歴イベントに対応するため、ワークフロー実行に含まれるイベントが 24,999 件未満であることを確認してください。

個々の状態の再処理動作

ワークフローで失敗した状態によって、失敗したすべての状態の再処理動作は異なります。次の表では、すべての状態に対する再処理動作について説明します。

状態名 再処理実行動作
ワークフロー状態を渡す

前のステップが失敗したり、ステートマシンがタイムアウトしたりすると、パス状態は終了し、再処理では実行されません。

タスクワークフローの状態

タスク状態をスケジュールして再開します。

タスク状態を再実行する実行を再処理すると、その状態の (定義されている場合) TimeoutSeconds は 0 にリセットされます。タイムアウト値の詳細については、「タスク状態」を参照してください。

選択ワークフローの状態 Choice ステートルールを再評価します。
ワークフロー状態を待機する

状態が過去のタイムスタンプを参照する Timestamp または TimestampPath を指定している場合、再処理は Wait ステートを終了させ、Next フィールドで指定されたステートに入ります。

ワークフロー状態が成功

Succeed ステートになるステートマシン実行を再処理しません。

ワークフローの状態の失敗

再び Fail ステートになり、再び失敗します。

並列ワークフローの状態

失敗または中止されたブランチのみを再スケジュールし、再処理します。

States.DataLimitExceeded エラーが原因でステートが失敗した場合、最初の実行試行で成功したブランチを含めて、Parallel ステートが再実行されます。

インラインマップステート

スケジュールを変更し、失敗または中止されたイテレーションのみを再スケジュールし、再処理します。

States.DataLimitExceeded エラーが原因でステートが失敗した場合、最初の実行試行で成功した反復を含めて、インラインマップステートが再実行されます。

分散マップ状態

マップ実行で失敗した子ワークフローの実行を再処理します。詳細については、「Redriving Step Functions 実行のマップ実行」を参照してください。

States.DataLimitExceeded エラーが原因でステートが失敗すると、分散マップ状態が再実行されます。これには、最初の実行試行で成功した子ワークフローも含まれます。

IAM 実行に対する redrive アクセス許可

Step Functions には、実行を再処理するための適切なアクセス許可が必要です。次のIAMポリシー例では、redriving実行に必要な最小権限をステートマシンに付与します。必ず を置き換えてください。italicized リソース固有の情報を含む テキスト。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:RedriveExecution" ], "Resource": "arn:aws:states:us-east-2:123456789012:execution:myStateMachine:*" } ] }

マップ実行の再処理に必要なアクセス許可の例については、「分散マップredrivingのIAMポリシーの例」を参照してください。

コンソールでの実行の再処理

Step Functions コンソールからredrive適格な実行を行うことができます。

例えば、ステートマシンを実行し、並列状態が実行に失敗したとします。

次の図は、並列状態内の Do 二乗番号 という名前のLambda呼び出しステップが失敗を返したことを示しています。これにより、並列状態も失敗しました。実行が進行中または開始されていないブランチは停止し、ステートマシンの実行は失敗します。

ステートマシンの実行に失敗したグラフの例。
コンソールから実行を再処理するには
  1. Step Functions コンソールを開き、実行に失敗した既存のステートマシンを選択します。

  2. ステートマシンの詳細ページの [実行] で、失敗した実行インスタンスを選択します。

  3. [Redrive] を選択します。

  4. [Redrive] ダイアログボックスで [Redrive 実行] を選択します。

    ヒント

    失敗した実行の[実行の詳細] ページを開いている場合は、次のいずれかを実行して、実行を再処理します。

    • [復旧] を選択し、[障害からのリドライブ] を選択します。

    • [アクション][再処理] の順に選択します。

    が同じステートマシン定義 と redriveを使用していることに注意してくださいARN。最初の実行試行で失敗したステップから実行を継続します。この例では、それは、[Parallel] ステート内の [平方数を実行する] ステップと [3 秒待機] ブランチです。[Parallel] ステートで失敗したこれらのステップの実行を再開した後は、[完了] ステップまで実行を継続します。

  5. 実行を選択して、[実行の詳細] ページを開きます。

    このページでは、redriven 実行の結果を表示できます。例えば、実行の概要 セクションには、実行が再処理された回数を表す [リドライブ回数] が表示されます。[イベント] セクションでは、元の実行試行のイベントに追加された再処理関連の実行イベントを確認できます。例えば、ExecutionRedriven イベントです。

Redriving を使用した の実行 API

を使用して実行をredrive適格にすることができますRedriveExecutionAPI。これによりAPI、失敗した、中止された、またはタイムアウトしたステップから標準ワークフローの実行が再開されます。

AWS Command Line Interface (AWS CLI) で、次のコマンドを実行してステートマシンの実行redriveに失敗します。必ず を置き換えてください。italicized リソース固有の情報を含む テキスト。

aws stepfunctions redrive-execution --execution-arn arn:aws:states:us-east-2:123456789012:execution:myStateMachine:foo

再処理された実行内容を調べる

コンソールでredriven実行を調べるか、APIs: GetExecutionHistoryと を使用しますDescribeExecution

コンソールで再処理された実行内容を調べる
  1. Step Functions コンソールを開き、実行を再処理した既存のステートマシンを選択します。

  2. [実行の詳細] ページを開きます。

    このページでは、redriven 実行の結果を表示できます。例えば、実行の概要 セクションには、実行が再処理された回数を表す [リドライブ回数] が表示されます。[イベント] セクションでは、元の実行試行のイベントに追加された再処理関連の実行イベントを確認できます。例えば、ExecutionRedriven イベントです。

を使用してredriven実行を検証する APIs

redriven ステートマシンの実行がある場合は、次のいずれかを使用してredriven実行の詳細APIsを表示できます。必ず を置き換えてください。italicized リソース固有の情報を含む テキスト。

  • GetExecutionHistory – 指定された実行の履歴をイベントのリストとして返します。API これにより、実行のredrive試行に関する詳細も返されます。

    で AWS CLI、次のコマンドを実行します。

    aws stepfunctions get-execution-history --execution-arn arn:aws:states:us-east-2:123456789012:execution:myStateMachine:foo
  • DescribeExecution – ステートマシンの実行に関する情報を提供します。これには、実行に関連するステートマシン、実行の入出力、再処理実行の詳細 (ある場合)、関連する実行メタデータなどがあります。

    で AWS CLI、次のコマンドを実行します。

    aws stepfunctions describe-execution --execution-arn arn:aws:states:us-east-2:123456789012:execution:myStateMachine:foo

再処理された実行の再試行動作

再試行を定義した、タスクワークフローの状態並列ワークフローの状態、または インラインマップステートを redriven で再実行すると、redrive での再試行回数が最大になるように、これらのステートの再試行回数は 0 にリセットされます。redriven 実行では、コンソールを使用してこれらのステートでの再試行を個別に追跡できます。

コンソールで個々の再試行回数を調べるには
  1. Step Functions コンソール実行の詳細ページで、再処理の再試行されたステートを選択します。

  2. [再試行とリドライブ] タブを選択します。

  3. 各再試行の横にある矢印アイコンを選択して、詳細を表示します。再試行が成功すると、ドロップダウンボックスに表示される [出力] に結果が表示されます。

以下のイメージは、元の実行試行時とその実行の再処理時のステートに対して実行された再試行の例を示しています。この図では、元の試行と実行の再処理試行で 3 回の再試行が行われています。4 回目の再処理試行で成功し、16 という出力が返されます。

3 回の再試行が失敗し、4 回目の再試行が成功したことを示すスクリーンショット例。