Step Functions에서 ResultPath를 사용하여 상태 출력 지정 - AWS Step Functions

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

Step Functions에서 ResultPath를 사용하여 상태 출력 지정

상태 관리 및 데이터 트랜스포밍

이 페이지에서는 JSONPath를 참조합니다. Step Functions는 최근에 상태를 관리하고 데이터를 트랜스포밍하기 위해 변수와 JSONata를 추가했습니다.

변수를 사용하여 데이터 전달JSONata를 사용하여 데이터 트랜스포밍에 대해 알아봅니다.

상태 출력은 상태 입력의 복사본, 상태 결과(예, Task 상태의 Lambda 함수 출력), 또는 상태 입력 및 결과의 조합일 수 있습니다. ResultPath를 사용하여 상태 출력으로 이들의 어떤 조합을 전달할지 관리합니다.

다음 상태 유형은 결과를 생성하고 ResultPath:를 포함할 수 있습니다.

ResultPath를 사용하여 작업 입력과 작업 결과를 결합하거나 이들 중 하나를 선택합니다. ResultPath에 제공한 경로는 어떤 정보가 출력으로 전달될지 관리합니다.

참고

ResultPath는 JSON에서 단일 노드만 식별하는 범위가 제한된 참조 경로의 사용으로 한정됩니다. Amazon States Language참조 경로 섹션을 참조하세요.

ResultPath를 사용하여 입력을 태스크 결과로 바꾸기

ResultPath를 지정하지 않으면 기본 동작은 "ResultPath": "$"와 동일합니다. 상태는 전체 상태 입력을 작업의 결과로 바꿉니다.

# State Input { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" } # Path "ResultPath": "$" # Task result "Hello, Step Functions!" # State Output "Hello, Step Functions!"
참고

ResultPath는 결과를 출력으로 전달하기 전에 입력에 결과의 내용을 포함할 경우 사용됩니다. 하지만 ResultPath가 지정되지 않으면 기본적으로 전체 입력을 대체합니다.

결과 삭제 및 원래의 입력 유지

ResultPathnull로 설정하면 원래의 입력이 출력에 전달됩니다. 상태의 입력 페이로드가 태스크 결과에 관계없이 출력에 직접 복사됩니다.

# State Input { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" } # Path "ResultPath": null # Task result "Hello, Step Functions!" # State Output { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" }

ResultPath를 사용하여 입력에 결과 포함

ResultPath에 대한 경로를 지정하는 경우 상태 출력은 상태 입력과 작업 결과를 결합합니다.

# State Input { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" } # Path "ResultPath": "$.taskresult" # Task result "Hello, Step Functions!" # State Output { "comment": "This is a test", "details": "Default example", "who" : "Step Functions", "taskresult" : "Hello, Step Functions!" }

결과를 입력의 하위 노드로 입력할 수 있습니다. ResultPath 속성을 다음과 같이 설정합니다.

"ResultPath": "$.strings.lambdaresult"

입력은 다음과 같습니다.

{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz" }, "who": "AWS Step Functions" }

태스크 결과는 입력에 strings 노드의 하위 항목으로 삽입됩니다.

{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz", "lambdaresult": "Hello, Step Functions!" }, "who": "AWS Step Functions" }

다음 상태 출력은 기존 입력 JSON과 결과를 하위 노드로 포함합니다.

ResultPath를 사용하여 입력의 노드를 결과로 업데이트

ResultPath에 기존 노드를 지정하면 작업 결과가 해당 기존 노드를 대체합니다.

# State Input { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" } # Path "ResultPath": "$.comment" # Task result "Hello, Step Functions!" # State Output { "comment": "Hello, Step Functions!", "details": "Default example", "who" : "Step Functions" }

ResultPath를 사용하여 Catch에 오류와 입력 포함

경우에 따라 오류가 있는 기존 입력을 보존하고자 할 수 있습니다. ResultPathCatch를 사용하면 원래 입력을 바꾸는 대신 오류를 포함시킬 수 있습니다.

"Catch": [{ "ErrorEquals": ["States.ALL"], "Next": "NextTask", "ResultPath": "$.error" }]

이전 Catch 상태가 오류를 발견하면 상태 입력 내 error 노드에 결과를 포함합니다. 예를 들어 다음 입력을 고려해 보십시오.

{"foo": "bar"}

오류 발견 시 상태 출력은 다음과 같습니다.

{ "foo": "bar", "error": { "Error": "Error here" } }

오류를 처리하는 방법에 대한 자세한 내용은 다음을 참조하십시오.