Redriving Step Functions 実行のマップ実行 - AWS Step Functions

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

Redriving Step Functions 実行のマップ実行

失敗した子ワークフロー実行は、 によってマップ実行で再開できます。 redriving 親ワークフロー 。A redriven 親ワークフロー redrives 分散マップを含む、失敗したすべての状態。親ワークフローが実行を完了したときに、ステートの <stateType>Entered イベントに対応する <stateType>Exited イベントがない場合、親ワークフローは失敗した状態を再処理します。例えば、イベント履歴にMapStateExitedイベントのMapStateEnteredイベントが含まれていない場合は、redrive 親ワークフローを redrive マップ実行で失敗したすべての子ワークフロー実行。

ステートマシンに ItemReader (マップ)ResultWriter (マップ)、またはその両方にアクセスするために必要な権限がない場合、マップ実行は開始されないか、最初の実行試行に失敗します。親ワークフローの元の実行試行でマップ実行が開始されなかった場合は、redriving 親ワークフローがマップ実行を初めて開始します。これを解決するには、必要なアクセス許可をステートマシンロールに追加してから、redrive 親ワークフロー。オプション: redrive 必要なアクセス許可を追加せずに親ワークフローは、再度失敗する新しいマップ実行の実行を開始しようとします。必要なアクセス許可については、「IAM 分散マップ状態を使用するための ポリシー」を参照してください。

Redrive マップ実行での子ワークフローの適格性

次のことができます。redrive 次の条件が満たされた場合にマップ実行で失敗した子ワークフローの実行。

  • 2023 年 11 月 15 日以降に親ワークフローの実行を開始しました。この日付より前に開始した実行は、 の対象外です。redrive.

  • ハード制限の 1000 を超えていない redrives 特定のマップ実行の 。この制限を超えると、States.Runtime エラーが表示されます。

  • 親ワークフローは です。redrivable。 親ワークフローが でない場合 redrivable、できません redrive マップ実行の子ワークフロー実行。の詳細については、「」を参照してください。redrive ワークフローの適格性については、「」を参照してくださいRedrive 失敗した実行の適格性

  • マップ実行でのタイプ Standard の子ワークフロー実行は、実行イベント履歴の上限である 25,000 件を超えていません。イベント履歴の制限を超えた子ワークフローの実行は、許容される失敗しきい値にカウントされ、失敗したと見なされます。の詳細については、redrive 実行の適格性については、「」を参照してくださいRedrive 失敗した実行の適格性

新しいマップ実行が開始され、既存のマップ実行は開始されない redriven マップ実行が元の実行試行で失敗した場合でも、次の場合は になります。

マップ実行は、親ワークフローが停止またはタイムアウトした後も引き続き実行できます。これらのシナリオでは、redrive はすぐには発生しません。

  • マップ実行は、進行中のタイプ Standard の子ワークフロー実行をキャンセルしているか、タイプ Express の子ワークフロー実行が完了するのを待っている可能性があります。

  • 結果をエクスポートするように設定した場合、マップ実行は結果をまだ ResultWriter (マップ) に書き込んでいる可能性があります。

このような場合、実行中のマップ実行はオペレーションを完了してから、redrive.

子ワークフロー実行 redrive behavior

- redriven マップ実行の子ワークフロー実行は、次の表で説明されているように動作します。

エクスプレス子ワークフロー 標準子ワークフロー
元の実行試行で失敗またはタイムアウトした子ワークフローの実行はすべて、 StartExecutionAPIアクションを使用して開始されます。ItemProcessor で最初に実行されたステートが最初に実行されます。 元の実行試行で失敗、タイムアウト、またはキャンセルされたすべての子ワークフロー実行は、redriven の使用 RedriveExecution API アクション。これらの子ワークフローは、redriven 実行に失敗した ItemProcessor の最後の状態から。

失敗した実行は常に redriven。 これは、Express の子ワークフロー実行は常に アクションを使用して新しい実行として開始されるためです StartExecution API。

失敗した標準子ワークフローの実行は、常に であるとは限りません。redriven。 実行が でない場合 redrivable、再試行されません。実行の最後のエラーまたは出力は永続的です。これは、実行が 25,000 件の履歴イベント、またはそのイベントを超えた場合に発生する可能性があります。redrivable 14 日間の期間が終了しました。

標準の子ワークフロー実行は、redrivable 親ワークフローの実行が 14 日以内に終了し、子ワークフローの実行が 14 日より前に終了した場合。

Express の子ワークフロー実行は、ARN元の実行試行と同じ実行を使用しますが、個々の実行を区別することはできません。redrives. 標準の子ワークフロー実行では、元の実行試行ARNと同じ実行が使用されます。個人を明確に識別できる redrives コンソールで を使用しAPIs、 GetExecutionHistoryや などの を使用しますDescribeExecution。詳細については、「検査 redriven 実行」を参照してください。

以下の場合 redriven マップ実行で同時実行数の上限に達した場合、そのマップ実行の子ワークフロー実行は保留状態に移行します。マップ実行の実行ステータスも、保留中に移行します。redrive 状態。指定された同時実行数の制限により、子ワークフローの実行がさらに許可されるまで、実行は保留中のままになります。redrive 状態。

例えば、ワークフロー内の分散マップの同時実行数の上限が 3000 件で、再実行される子ワークフローの数が 6000 件だとします。これにより、3000 件の子ワークフローが並行して実行され、残りの 3000 件のワークフローは [保留中のリドライブ] ステートのままになります。3000 件の子ワークフローの最初のバッチが実行を完了すると、残りの 3000 件の子ワークフローが実行されます。

マップ実行が完了または中止されると、保留中の の子ワークフロー実行の数 redrive 状態は 0 にリセットされます。

マップ実行で使用される入力のシナリオ redrive

元の実行試行で分散マップに入力を提供した方法に応じて、redriven マップ実行は、次の表に示すように入力を使用します。

最初の実行試行時の入力 マップ実行で使用される入力 redrive
前のステートから渡された入力または実行入力。 - redriven マップ実行は同じ入力を使用します。
入力は ItemReader (マップ) を使用して渡され、次の条件のいずれかが true であるため、マップ実行は子ワークフローの実行を開始しませんでした。
  • マップ実行が States.ItemReaderFailed エラーで失敗しました。

  • マップ実行が States.ResultWriterFailed エラーで失敗しました。

  • マップ実行が開始される前に、親ワークフローの実行がタイムアウトになったか、キャンセルされました。

- redriven マップ実行は Amazon S3 バケットの入力を使用します。
を使用して渡された入力 ItemReader。子ワークフローの実行を開始または開始しようとした後にマップ実行が失敗しました。 - redriven マップ実行は、元の実行試行で提供されたものと同じ入力を使用します。

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

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

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

Redriving コンソールでのマップ実行

以下のイメージは、分散マップを含むステートマシンの実行グラフを示しています。マップ実行が失敗したため、この実行は失敗しました。目的 redrive マップ実行では、redrive 親ワークフロー。

マップ実行の失敗によるステートマシンの実行失敗のグラフ。
目的 redrive コンソールからのマップ実行
  1. Step Functions コンソールを開き、実行に失敗した分散マップを含む既存のステートマシンを選択します。

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

  3. 選択 Redrive.

  4. Redrive ダイアログボックス、選択 Redrive 実行

    ヒント

    以下の操作も可能 redrive 実行の詳細ページまたはマップ実行の詳細ページからのマップ実行

    実行の詳細ページが表示されている場合は、次のいずれかを実行して redrive 実行:

    • リカバリ を選択し、 を選択します。 Redrive 失敗 から

    • アクション を選択し、 を選択します。 Redrive.

    マップ実行の詳細ページが表示されている場合は、「リカバリ」を選択し、「」を選択します。 Redrive 失敗 から

    次の点に注意してください。redrive は、同じステートマシン定義 と を使用しますARN。最初の実行試行で失敗したステップから実行を継続します。この例では、[マップ] という名前の分散マップステップとその中の [入力を処理する] ステップです。失敗したマップ実行の子ワークフロー実行を再開した後、redrive は、完了ステップの実行を続行します。

  5. 実行の詳細 ページで、マップ実行 を選択して の詳細を表示します。redriven マップ実行。

    このページでは、redriven 実行。例えば、 [マップ実行] 実行の概要セクションでは、 Redrive count 。マップ実行が であった回数を表します。redriven。 イベントセクションには、redrive 元の実行試行のイベントに追加される に関連する実行イベント。例えば、MapRunRedriven イベントです。

完了後 redriven マップ実行では、そのマップ実行を調べることができます。redrive コンソールで、または GetExecutionHistoryおよび DescribeExecutionAPIアクションを使用して、 の詳細を表示します。の検証の詳細については、「」を参照してください。redriven 実行については、「」を参照してください検査 redriven 実行

Redriving を使用したマップ実行 API

次のことができます。redrive を使用した対象となるマップ実行 RedriveExecution API 親ワークフローの 。これにより、マップ実行で失敗した子ワークフロー実行が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 マップ実行では、そのマップ実行を調べることができます。redrive コンソールまたは DescribeMapRunAPIアクションを使用した の詳細。を調べるには redrive マップ実行での標準ワークフロー実行の詳細。 GetExecutionHistoryまたは DescribeExecutionAPIアクションを使用できます。の検証の詳細については、「」を参照してください。redriven 実行については、「」を参照してください検査 redriven 実行

を調べることができます。redrive 親ワークフローでログ記録を有効にしている場合の、Step Functions コンソールのマップ実行での Express ワークフロー実行の詳細。詳細については、「 CloudWatch ログを使用した Step Functions の実行履歴のログ記録」を参照してください。