

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Fail 워크플로 상태
<a name="state-fail"></a>

**상태 관리 및 데이터 트랜스포밍**  
[변수를 사용하여 상태 간 데이터 전달](workflow-variables.md)과 [JSONata를 사용하여 데이터 트랜스포밍](transforming-data.md)에 대해 알아봅니다.

`Fail` 상태(`"Type": "Fail"`)는 `Catch` 블록에서 포착하지 않는 한 상태 머신 실행을 중지하고 이를 실패로 표시합니다.

`Fail` 상태를 통해 [공통 상태 필드](statemachine-structure.md#amazon-states-language-common-fields) 집합의 `Type` 및 `Comment` 필드만 사용할 수 있습니다. 또한 `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)입니다.  
+ `Cause` 또는 `CausePath`를 지정할 수 있지만 Fail 상태 정의에서는 둘 다 지정할 수 없습니다.
+ 정보 보안 모범 사례로 민감한 정보나 내부 시스템 세부 정보 모두 원인 설명에서 제거하는 것이 좋습니다.

** `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)입니다.  
+ `Error` 또는 `ErrorPath`를 지정할 수 있지만 Fail 상태 정의에서는 둘 다 지정할 수 없습니다.
+ 정보 보안 모범 사례로 민감한 정보나 내부 시스템 세부 정보 모두 오류 이름에서 제거하는 것이 좋습니다.

`Fail` 상태는 항상 상태 머신을 종료하므로 `Next` 필드가 없으며 `End` 필드도 필요하지 않습니다.

## Fail 상태 정의 예제
<a name="fail-state-examples"></a>

다음 Fail 상태 정의 예제에서는 정적 `Error` 및 `Cause` 필드 값을 지정합니다.

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

다음 Fail 상태 정의 예제에서는 참조 경로를 동적으로 사용하여 `Error` 및 `Cause` 필드 값을 확인합니다.

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

다음 Fail 상태 정의 예제에서는 [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)"
}
```