기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Step Functions 워크플로 ResultPath 에서 를 사용하여 상태 출력 지정
상태 출력은 상태 입력의 복사본, 상태 결과(예, Task
상태의 Lambda 함수 출력), 또는 상태 입력 및 결과의 조합일 수 있습니다. ResultPath
를 사용하여 상태 출력으로 이들의 어떤 조합을 전달할지 관리합니다.
다음 상태 유형은 결과를 생성하고 ResultPath:
를 포함할 수 있습니다.
ResultPath
를 사용하여 작업 입력과 작업 결과를 결합하거나 이들 중 하나를 선택합니다. ResultPath
에 제공한 경로는 어떤 정보가 출력으로 전달될지 관리합니다.
참고
ResultPath
는 에서 단일 노드만 식별할 수 있도록 범위를 제한하는 참조 경로 사용으로 제한됩니다JSON. Amazon States Language의 참조 경로 섹션을 참조하세요.
이 예제는 Lambda를 사용하는 Step Functions 상태 시스템 만들기 자습서에 설명된 상태 시스템과 Lambda 함수를 기반으로 합니다. ResultPath
필드의 다양한 경로를 시도하여 자습서를 실습하고 다른 출력을 테스트합니다.
입력을 결과로 바꾸는 ResultPath 데 사용
ResultPath
를 지정하지 않는 경우, 기본값은 "ResultPath": "$"
에 지정된 것처럼 행동합니다. 상태가 입력을 결과로 대체하도록 하기 때문에 상태 입력은 작업 결과의 결과로 완전히 대체됩니다.
다음 도표는 ResultPath
가 입력을 작업의 결과로 완전히 대체하는 방법을 보여줍니다.
에 설명된 상태 시스템 및 Lambda 함수를 사용하고 서비스 통합 유형을 Lambda 함수의 AWS SDK 통합으로 Lambda를 사용하는 Step Functions 상태 시스템 만들기변경합니다. 이렇게 하려면 다음 예제와 같이 Task
상태 Resource
필드에 Lambda 함수 Amazon 리소스 이름(ARN)을 지정합니다. 통합을 사용하면 AWS SDK Task
상태 결과에 메타데이터가 없는 Lambda 함수 출력만 포함됩니다.
{
"StartAt":"CallFunction",
"States":{
"CallFunction": {
"Type":"Task",
"Resource":"arn:aws:lambda:us-east-2:123456789012:function:HelloFunction",
"End": true
}
}
}
그런 다음, 다음 입력을 전달합니다.
{ "comment": "This is a test of the input and output of a Task state.", "details": "Default example", "who": "AWS Step Functions" }
Lambda 함수에서 다음 결과를 제공합니다.
"Hello, AWS Step Functions!"
작은 정보
이 결과는 에서 볼 수 있습니다. Step Functions 콘솔
ResultPath
가 상태에서 지정되지 않은 경우 또는 "ResultPath":
"$"
가 설정된 경우 상태 입력은 Lambda 함수 결과로 대체되고 상태 출력은 다음과 같습니다.
"Hello, AWS Step Functions!"
참고
ResultPath
는 결과를 출력으로 전달하기 전에 입력에 결과의 내용을 포함할 경우 사용됩니다. 하지만 ResultPath
가 지정되지 않으면 기본적으로 전체 입력을 대체합니다.
결과 삭제 및 원래의 입력 유지
ResultPath
를 null
로 설정하면 원래의 입력이 출력에 전달됩니다. "ResultPath": null
를 사용하면 상태의 입력 페이로드가 결과에 관계없이 출력에 직접 복사됩니다.
다음 다이어그램은 null ResultPath
가 입력을 직접 출력에 복사하는 방법을 보여줍니다.
입력에 결과를 포함 ResultPath 하려면 사용
다음 그림은 ResultPath
가 입력에 결과를 포함하는 방법을 보여줍니다.
Lambda를 사용하는 Step Functions 상태 시스템 만들기 자습서에 설명된 상태 시스템과 Lambda 함수를 사용하여 다음 입력을 전달할 수 있습니다.
{ "comment": "This is a test of the input and output of a Task state.", "details": "Default example", "who": "AWS Step Functions" }
Lambda 함수 결과는 다음과 같습니다.
"Hello, AWS Step Functions!"
입력을 보존하려면 Lambda 함수의 결과를 삽입한 다음 결합된 를 JSON 다음 상태로 전달ResultPath
하면 다음과 같이 설정할 수 있습니다.
"ResultPath": "$.taskresult"
이렇게 하면 Lambda 함수 결과가 원래 입력에 포함됩니다.
{ "comment": "This is a test of input and output of a Task state.", "details": "Default behavior example", "who": "AWS Step Functions", "taskresult": "Hello, AWS Step Functions!" }
Lambda 함수 출력은 taskresult
값으로 기존 입력에 추가됩니다. 새로이 입력된 값을 포함하여 이 입력은 다음 상태로 전달됩니다.
결과를 입력의 하위 노드로 입력할 수 있습니다. ResultPath
속성을 다음과 같이 설정합니다.
"ResultPath": "$.strings.lambdaresult"
다음 입력을 사용하여 실행을 시작합니다.
{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz" }, "who": "AWS Step Functions" }
Lambda 함수 결과는 입력에서 strings
노드의 하위 값으로 삽입됩니다.
{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz", "lambdaresult": "Hello, AWS Step Functions!" }, "who": "AWS Step Functions" }
상태 출력에는 이제 결과가 하위 노드JSON인 원본 입력이 포함됩니다.
입력의 노드를 결과로 업데이트하는 ResultPath 데 사용
다음 다이어그램은 ResultPath
가 입력의 기존 JSON 노드 값을 작업 결과의 값으로 업데이트하는 방법을 보여줍니다.
Lambda를 사용하는 Step Functions 상태 시스템 만들기 자습서에 설명된 상태 시스템과 Lambda 함수의 예제를 사용하여 다음 입력을 전달할 수 있습니다.
{ "comment": "This is a test of the input and output of a Task state.", "details": "Default example", "who": "AWS Step Functions" }
Lambda 함수 결과는 다음과 같습니다.
Hello, AWS Step Functions!
입력을 보존하고 결과를 에 새 노드로 삽입하는 대신 기존 노드를 덮어쓸 JSON수 있습니다.
예를 들어, "ResultPath": "$"
를 삭제하고 설정하면 전체 노드를 덮어쓰는 것처럼 개별 노드를 결과로 덮어쓰도록 지정할 수 있습니다.
"ResultPath": "$.comment"
comment
노드는 상태 입력에 이미 존재하므로ResultPath
를 "$.comment"
로 설정하면 입력의 노드가 Lambda 함수 결과로 바꿉니다. OutputPath
의 추가 필터링 없이, 다음과 같이 출력으로 전달됩니다.
{ "comment": "Hello, AWS Step Functions!", "details": "Default behavior example", "who": "AWS Step Functions", }
comment
노드 값 "This is a test of the input and output
of a Task state."
는 상태 출력에서 Lambda 함수 결과인 "Hello, AWS
Step Functions!"
로 대체됩니다.
ResultPath 에 오류와 입력을 모두 포함하려면 사용 Catch
이 Step Functions 상태 시스템을 사용하여 오류 조건 처리 자습서에서는 상태 머신이 오류를 잡아내는 방법을 보여줍니다. 경우에 따라 오류가 있는 기존 입력을 보존하고자 할 수 있습니다. Catch
에 ResultPath
를 사용하면 원래 입력을 바꾸는 대신 오류를 포함시킬 수 있습니다.
"Catch": [{ "ErrorEquals": ["States.ALL"], "Next": "NextTask", "ResultPath": "$.error" }]
이전 Catch
상태가 오류를 발견하면 상태 입력 내 error
노드에 결과를 포함합니다. 예를 들어 다음 입력을 고려해 보십시오.
{"foo": "bar"}
오류 발견 시 상태 출력은 다음과 같습니다.
{ "foo": "bar", "error": { "Error": "
Error here
" } }
오류를 처리하는 방법에 대한 자세한 내용은 다음을 참조하십시오.