

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

# ワークフロー状態に失敗する
<a name="state-fail"></a>

**ステートの管理とデータの変換**  
[変数を使用したステート間のデータ受け渡し](workflow-variables.md)と [JSONata を使用したデータ変換](transforming-data.md)について説明します。

`Fail` 状態 (`"Type": "Fail"`) は、ステートマシンの実行を停止し、`Catch` ブロックでキャッチされるのでなければ、障害としてマークします。

`Fail` 状態では、`Type` 共通状態フィールド `Comment` のセットから [ および ](statemachine-structure.md#amazon-states-language-common-fields) フィールドの使用のみが許可されます。また、`Fail` 状態では以下のフィールドを使用できます。

** `Cause` (オプション)**  
エラーの原因を説明するカスタム文字列。このフィールドは、運用または診断目的で指定できます。  
JSONata ステートでは、JSONata 式を指定することもできます。

** `CausePath` (オプション、JSONPath のみ) **  
[リファレンスパス](amazon-states-language-paths.md#amazon-states-language-reference-paths)を使用して、状態入力からエラーの原因に関する詳細な説明を動的に指定する場合は、`CausePath` を使用します。解決されると、リファレンスパスは文字列値を含むフィールドを選択する必要があります。  
文字列を返す[組み込み関数](intrinsic-functions.md)を使用して `CausePath` を指定することもできます。これらの組み込み関数は、[States.Format](intrinsic-functions.md#asl-intrsc-func-generic)、[States.JsonToString](intrinsic-functions.md#jsontostring)、[States.ArrayGetItem](intrinsic-functions.md#arraygetitem)、[States.Base64Encode](intrinsic-functions.md#base64encode)、[States.Base64Decode](intrinsic-functions.md#base64decode)、[States.Hash](intrinsic-functions.md#asl-intrsc-func-uuid-generate)、[States.UUID](intrinsic-functions.md#statesuuid) です。  
+ 失敗状態の定義では、`CausePath` または `Cause` のいずれかを指定できますが、両方を指定することはできません。
+ 情報セキュリティのベストプラクティスとして、原因の説明から機密情報や内部システムの詳細を削除することをお勧めします。

** `Error` (オプション)**  
[Retry](concepts-error-handling.md#error-handling-retrying-after-an-error) または [Catch](concepts-error-handling.md#error-handling-fallback-states) フィールドを使用してエラー処理を実行する際に指定できるエラー名。運用または診断目的で使用できるエラー名も提供できます。  
JSONata ステートでは、JSONata 式を指定することもできます。

** `ErrorPath` (オプション、JSONPath のみ) **  
[リファレンスパス](amazon-states-language-paths.md#amazon-states-language-reference-paths)を使用して状態入力からエラー名を動的に指定する場合は、`ErrorPath` を使用してください。解決されると、リファレンスパスは文字列値を含むフィールドを選択する必要があります。  
文字列を返す[組み込み関数](intrinsic-functions.md)を使用して `ErrorPath` を指定することもできます。これらの組み込み関数は、[States.Format](intrinsic-functions.md#asl-intrsc-func-generic)、[States.JsonToString](intrinsic-functions.md#jsontostring)、[States.ArrayGetItem](intrinsic-functions.md#arraygetitem)、[States.Base64Encode](intrinsic-functions.md#base64encode)、[States.Base64Decode](intrinsic-functions.md#base64decode)、[States.Hash](intrinsic-functions.md#asl-intrsc-func-uuid-generate)、[States.UUID](intrinsic-functions.md#statesuuid) です。  
+ 失敗状態の定義では、`ErrorPath` または `Error` のいずれかを指定できますが、両方を指定することはできません。
+ 情報セキュリティのベストプラクティスとして、エラー名から機密情報や内部システムの詳細を削除することをお勧めします。

`Fail` 状態は常にステートマシンを終了するため、`Next` フィールドはなく、`End` フィールドも不要です。

## 失敗状態の例
<a name="fail-state-examples"></a>

以下の失敗状態の定義例では、`Error` および `Cause` フィールド値を指定しています。

```
"FailState": {
  "Type": "Fail",
  "Cause": "Invalid response.",
  "Error": "ErrorA"
}
```

以下の失敗状態の定義例では、参照パスを動的に使用して `Error` および `Cause` フィールド値を解決しています。

```
"FailState": {
  "Type": "Fail",
  "CausePath": "$.Cause",
  "ErrorPath": "$.Error"
}
```

以下の失敗状態の定義例では、[States.Format](intrinsic-functions.md#asl-intrsc-func-generic) 組み込み関数関数を使用して `Error` および `Cause` フィールド値を動的に指定しています。

```
"FailState": {
  "Type": "Fail",
  "CausePath": "States.Format('This is a custom error message for {}, caused by {}.', $.Error, $.Cause)",
  "ErrorPath": "States.Format('{}', $.Error)"
}
```