Redriving の実行 - AWS Step Functions

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

Redriving の実行

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

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

再処理された実行では、元の実行試行に使用されたのと同じステートマシン定義と実行 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 エラーが原因でステートが失敗した場合、最初の実行試行で成功した反復を含めて、インラインマップステートが再実行されます。

分散マップ状態

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

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

実行を再処理する IAM アクセス許可

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

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

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

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

Step Functions コンソールから対象となる実行を再処理できます。

例えば、以下のイメージがステートマシンのワークフローグラフを表しているとしましょう。


                Pass、Parallel、Lambda Invoke、Wait の各ステートを含むステートマシンのワークフローグラフ。

このステートマシンを実行するとします。次のイメージに、ステートマシンの実行のグラフを示します。


                失敗したステートマシンの実行のグラフ。この実行では、[平方数を実行する] という名前の Parallel ステートブランチが失敗し、Parallel ステートが失敗しました。

この図に示すように、[Parallel] ステート内の [平方数を実行する] という名前の [Lambda 呼び出し] ステップがエラーを返しました。このため、[Parallel] ステートは失敗しました。実行が進行中または開始されていないブランチは停止し、ステートマシンの実行は失敗します。

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

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

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

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

    ヒント

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

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

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

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

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

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

API を使用した実行の再処理

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

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

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 イベントです。

API を使用して再処理された実行内容を調べる

ステートマシンの実行を再処理した、次の API のいずれかを使用して再処理された実行に関する詳細を表示できます。イタリック体のテキストを、リソース固有の情報に必ず置き換えてください。

  • GetExecutionHistory – 指定された実行の履歴をイベントのリストとして返します。この API は、可能であれば、実行の再処理試行に関する詳細も返します。

    で 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

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

再処理された実行により、再試行を定義した タスク並行、またはインラインマップステートが再実行される場合、これらのステートの再試行回数は 0 にリセットされます。これにより、再処理の最大試行回数を設定できます。redriven 実行では、コンソールを使用してこれらのステートでの再試行を個別に追跡できます。

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

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

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

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


                再処理された Task ステートの [再試行とリドライブ] タブ このタブには、元の実行とその実行の再処理で行った 3 回の再試行が表示されます。4 回目の再処理試行で成功し、16 という出力が返されます。