예: Step Functions 워크플로의 상태 데이터 조작 - AWS Step Functions

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

예: Step Functions 워크플로의 상태 데이터 조작

이 항목에는 InputPath ResultPath, 및 필드를 JSON 사용하여 상태 입력 및 출력을 조작하는 방법에 대한 예제가 포함되어 있습니다. OutputPath

실패 워크플로 상태 상태 또는 워크플로 상태 성공 상태 이외의 모든 상태에는 InputPath, ResultPath 또는 OutputPath와 같은 입력 및 출력 처리 필드가 포함될 수 있습니다. 또한 대기 워크플로 상태워크플로 상태 선택 상태는 ResultPath 필드를 지원하지 않습니다. 이러한 필드에서 a를 사용하여 JsonPath워크플로를 통해 이동하는 JSON 데이터를 필터링할 수 있습니다.

또한 Parameters 필드를 사용하여 워크플로를 통해 이동하는 JSON 데이터를 조작할 수 있습니다. Parameters 사용에 대한 자세한 내용은 Step Functions 워크플로의 파라미터를 사용하여 상태 데이터를 조작합니다.을 참조하십시오.

예를 들어, 다음으로 시작하십시오. AWS Lambda Lambda를 사용하는 Step Functions 상태 시스템 만들기튜토리얼에 설명된 함수 및 상태 머신. 상태 시스템을 수정하여 다음 InputPath, ResultPath, OutputPath를 포함할 수 있습니다.

{ "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda function", "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloFunction", "InputPath": "$.lambda", "ResultPath": "$.data.lambdaresult", "OutputPath": "$.data", "End": true } } }

다음 입력을 사용하여 실행을 시작합니다.

{ "comment": "An input comment.", "data": { "val1": 23, "val2": 17 }, "extra": "foo", "lambda": { "who": "AWS Step Functions" } }

commentextra 노드를 폐기할 수 있지만 Lambda 함수의 출력을 포함시키고 노드에 정보를 보존하고 싶다고 가정해 보겠습니다. data

업데이트된 상태 시스템에서 Task 상태를 변경하여 작업으로 입력을 전달합니다.

"InputPath": "$.lambda",

상태 시스템 정의의 이 라인은 작업 입력을 상태 입력의 lambda 노드로만 한정합니다. Lambda 함수는 객체만 JSON 입력으로 {"who": "AWS Step Functions"} 받습니다.

"ResultPath": "$.data.lambdaresult",

ResultPath는 상태 시스템에게 Lambda 함수 결과를 기존 상태 시스템 입력의 data 노드 하위 개념으로 lambdaresult라는 노드에 입력하라고 지시합니다. 원래 입력과 를 사용한 OutputPath 결과에 대해 다른 조작을 수행하지 않으므로 이제 상태의 출력에는 Lambda 함수와 원본 입력의 결과가 포함됩니다.

{ "comment": "An input comment.", "data": { "val1": 23, "val2": 17, "lambdaresult": "Hello, AWS Step Functions!" }, "extra": "foo", "lambda": { "who": "AWS Step Functions" } }

하지만 data 노드만 보존하고 Lambda 함수의 결과를 포함시키는 것이 목표였습니다. OutputPath이를 조합한 후 상태 출력으로 JSON 전달하기 전에 필터링합니다.

"OutputPath": "$.data",

기존 입력에서 data 노드(ResultPath가 입력한 lambdaresult 하위 개념 포함)만 선택하여 출력으로 전달될 수 있게 합니다. 상태 출력은 다음과 같이 필터링됩니다.

{ "val1": 23, "val2": 17, "lambdaresult": "Hello, AWS Step Functions!" }

Task작업 상태에서:

  1. InputPathlambda 노드만 입력에서 Lambda 함수로 보냅니다.

  2. ResultPath는 기존 입력의 data 노드의 하위 개념으로 결과를 입력합니다.

  3. OutputPath는 상태 입력에서 data 노드만 상태 출력으로 전달하도록 이제 Lambda 함수의 결과를 포함된 상태 입력을 필터링합니다.

예 를 사용하여 원본 상태 시스템 입력, 결과 및 최종 출력을 조작합니다. JsonPath

보험 신청자의 신원과 주소를 확인하는 다음 상태 시스템을 고려해보겠습니다.

참고

전체 예제를 보려면 Step Functions에서 JSON 경로를 사용하는 방법을 참조하십시오.

{ "Comment": "Sample state machine to verify an applicant's ID and address", "StartAt": "Verify info", "States": { "Verify info": { "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:check-identity:$LATEST" }, "End": true } } }, { "StartAt": "Verify address", "States": { "Verify address": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:check-address:$LATEST" }, "End": true } } } ] } } }

다음 입력을 사용하여 이 상태 시스템을 실행하면 검증을 수행하는 Lambda 함수에서 확인이 필요한 데이터만 입력으로 예상하므로 실행이 실패합니다. 따라서 적절한 방법을 사용하여 검증할 정보가 들어 있는 노드를 지정해야 JsonPath 합니다.

{ "data": { "firstname": "Jane", "lastname": "Doe", "identity": { "email": "jdoe@example.com", "ssn": "123-45-6789" }, "address": { "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" }, "interests": [ { "category": "home", "type": "own", "yearBuilt": 2004 }, { "category": "boat", "type": "snowmobile", "yearBuilt": 2020 }, { "category": "auto", "type": "RV", "yearBuilt": 2015 }, ] } }

check-identity Lambda 함수에서 사용해야 하는 노드를 지정하려면 다음과 같이 InputPath 필드를 사용합니다.

"InputPath": "$.data.identity"

그리고 check-address Lambda 함수에서 사용해야 하는 노드를 지정하려면 다음과 같이 InputPath 필드를 사용합니다.

"InputPath": "$.data.address"

이제 원본 상태 시스템 입력 내에 검증 결과를 저장하려면 다음과 같이 ResultPath 필드를 사용합니다.

"ResultPath": "$.results"

하지만 ID 및 확인 결과만 필요하고 원래 입력을 삭제하려면 다음과 같이 OutputPath 필드를 사용합니다.

"OutputPath": "$.results"

자세한 내용은 Step Functions에서 입력 및 출력 처리하기 단원을 참조하십시오.