

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

# Step Functions で redrive を使用してステートマシン実行を再開する
<a name="redrive-executions"></a>

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

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

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

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

実行の再処理は状態遷移と見なされます。状態遷移が課金に及ぼす影響については、[‭‬Step Functions コスト‭](https://aws.amazon.com/step-functions/pricing/)を参照してください。

## 失敗した実行の再処理対象
<a name="redrive-eligibility"></a>

最初に試みた実行が以下の条件を満たしていれば、実行を再処理することができます。
+ 2023 年 11 月 15 日以降に実行を開始しました。この日付より前に開始した実行は再処理の対象外です。
+ 実行ステータスは `SUCCEEDED` ではありません。
+ ワークフローの実行は 14 日間の再処理可能期間を超えていません。再処理可能期間とは、特定の実行を再処理できる時間を指します。この期間は、ステートマシンが実行を完了した日から始まります。
+ ワークフローの実行は、1 年間の最大オープン時間を超えていません。ステートマシン実行クォータの詳細については、「[ステートマシンの実行に関連するクォータ](service-quotas.md#service-limits-state-machine-executions)」を参照してください。
+ 実行イベント履歴数は 24,999 件未満です。再処理された実行によって、イベント履歴が既存のイベント履歴に追加されます。`ExecutionRedriven` 履歴イベントと少なくとも 1 つのその他の履歴イベントに対応するため、ワークフロー実行に含まれるイベントが 24,999 件未満であることを確認してください。

## 個々の状態の再処理動作
<a name="redrive-behavior-states"></a>

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


| 状態名 | 再処理実行動作 | 
| --- | --- | 
| [Pass ワークフロー状態](state-pass.md) |  前のステップが失敗したり、ステートマシンがタイムアウトしたりすると、パス状態は終了し、再処理では実行されません。  | 
| [Task ワークフロー状態](state-task.md) |  タスク状態をスケジュールして再開します。 タスク状態を再実行する実行を再処理すると、その状態の (定義されている場合) `TimeoutSeconds` は 0 にリセットされます。タイムアウト値の詳細については、「[タスク状態](state-task.md#task-state-fields)」を参照してください。  | 
| [Choice ワークフローの状態](state-choice.md) | Choice ステートルールを再評価します。 | 
| [Wait ワークフロー状態](state-wait.md) |  状態が過去のタイムスタンプを参照する `Timestamp` または `TimestampPath` を指定している場合、再処理は Wait ステートを終了させ、`Next` フィールドで指定されたステートに入ります。  | 
| [Succeed ワークフロー状態](state-succeed.md) |  Succeed ステートになるステートマシン実行を再処理しません。  | 
| [ワークフロー状態に失敗する](state-fail.md) |  再び Fail ステートになり、再び失敗します。  | 
| [Parallel ワークフローの状態](state-parallel.md) |  失敗または中止されたブランチのみを再スケジュールし、再処理します。 `States.DataLimitExceeded` エラーが原因でステートが失敗した場合、最初の実行試行で成功したブランチを含めて、Parallel ステートが再実行されます。  | 
| [インラインマップステート](state-map-inline.md) |  スケジュールを変更し、失敗または中止されたイテレーションのみを再スケジュールし、再処理します。 `States.DataLimitExceeded` エラーが原因でステートが失敗した場合、最初の実行試行で成功した反復を含めて、インラインマップステートが再実行されます。  | 
| [分散マップ状態](state-map-distributed.md) |  [マップ実行](concepts-examine-map-run.md)で失敗した子ワークフロー実行の redrives を行います。詳細については、「[Step Functions で実行される Redriving マップ実行](redrive-map-run.md)」を参照してください。 `States.DataLimitExceeded` エラーが原因でステートが失敗すると、分散マップ状態が再実行されます。これには、最初の実行試行で成功した子ワークフローも含まれます。  | 

## 実行を再処理する IAM アクセス許可
<a name="redrive-iam-permission"></a>

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

****  

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

マップ実行の再処理に必要なアクセス許可の例については、「[分散マップの IAM redriving ポリシーの例](iam-policies-eg-dist-map.md#iam-policy-redrive-dist-map)」を参照してください。

## コンソールでの実行の再処理
<a name="redrive-execution-console"></a>

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

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

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

![\[失敗したステートマシン実行のグラフの例。\]](http://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/images/redrive-eg-failed-workflow.png)


**コンソールから実行を再処理するには**

1. [Step Functions コンソール](https://console.aws.amazon.com/states/home?region=us-east-1#/)を開き、実行に失敗した既存のステートマシンを選択します。

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

1. **[Redrive]** を選択します。

1. **[Redrive]** ダイアログボックスで **[Redrive 実行]** を選択します。
**ヒント**  
失敗した実行の *[実行の詳細]* ページを開いている場合は、次のいずれかを実行して、実行の redrive を行います。  
**[復旧]** を選択し、**[障害からの Redrive]** を選択します。
**[アクション]**、**[Redrive]** の順に選択します。

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

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

   このページでは、redriven 実行の結果を表示できます。例えば、[実行の概要](concepts-view-execution-details.md#exec-details-intf-exec-summ) セクションには、実行の redriven 回数を表す **[Redrive 回数]** が表示されます。**[イベント]** セクションでは、元の実行試行のイベントに追加された redrive 関連の実行イベントを確認できます。例えば、`ExecutionRedriven` イベントです。

## API を使用した実行の再処理
<a name="redrive-execution-api"></a>

[RedriveExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_RedriveExecution.html) API を使用して[対象の](#redrive-eligibility)実行をredrive できます。この API は、標準ワークフローの実行に失敗した場合に、失敗、中止、またはタイムアウトになったステップから再開します。

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

```
aws stepfunctions redrive-execution --execution-arn arn:aws:states:us-east-2:account-id:execution:myStateMachine:foo
```

## 再処理された実行内容を調べる
<a name="examine-redriven-executions"></a>

実行の redriven の内容はコンソールで調べることも、[GetExecutionHistory](https://docs.aws.amazon.com/step-functions/latest/apireference/API_GetExecutionHistory.html) および [DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html) という API を使って調べることもできます。

**コンソールで再処理された実行内容を調べる**

1. [Step Functions コンソール](https://console.aws.amazon.com/states/home?region=us-east-1#/)を開き、実行の redriven を行った既存のステートマシンを選択します。

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

   このページでは、redriven 実行の結果を表示できます。例えば、[実行の概要](concepts-view-execution-details.md#exec-details-intf-exec-summ) セクションには、実行の redriven 回数を表す **[Redrive 回数]** が表示されます。**[イベント]** セクションでは、元の実行試行のイベントに追加された redrive 関連の実行イベントを確認できます。例えば、`ExecutionRedriven` イベントです。

**API を使用して再処理された実行内容を調べる**  
ステートマシンの実行を再処理した、次の API のいずれかを使用して再処理された実行に関する詳細を表示できます。*イタリック体*のテキストを、リソース固有の情報に必ず置き換えてください。
+ GetExecutionHistory – イベントのリストとして指定した実行の履歴を返します。この API は、可能であれば、実行の再処理試行に関する詳細も返します。

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

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

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

  ```
  aws stepfunctions describe-execution --execution-arn arn:aws:states:us-east-2:account-id:execution:myStateMachine:foo
  ```

## 再処理された実行の再試行動作
<a name="redrive-retry-behavior"></a>

[再試行](concepts-error-handling.md#error-handling-retrying-after-an-error)を定義した、[Task ワークフロー状態](state-task.md)、[Parallel ワークフローの状態](state-parallel.md)、または [インラインマップステート](state-map-inline.md)を redriven で再実行すると、redrive での再試行回数が最大になるように、これらのステートの再試行回数は 0 にリセットされます。redriven 実行では、コンソールを使用してこれらのステートでの再試行を個別に追跡できます。

**コンソールで個々の再試行回数を調べるには**

1. [Step Functions コンソール](https://console.aws.amazon.com/states/home?region=us-east-1#/)の *[実行の詳細]* ページで、redrive の再試行されたステートを選択します。

1. **[再試行と redrives]** タブを選択します。

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

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

![\[3 回の再試行が失敗し、4 回目の再試行が成功したことを示すスクリーンショットの例。\]](http://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/images/task-retry-redrive.png)
