AWS Step Functions
개발자 안내서

입/출력 처리

이 섹션에서는 경로 및 참조 경로를 사용하여 입/출력을 처리하는 방법에 대해 알아봅니다.

참고

단계 함수가 작동하는 방법 단원의 Step Functions 입/출력 처리를 참조하여 살펴봅니다.

경로

Amazon States 언어에서, path는 JSON 텍스트 내 구성 요소를 식별하기 위해 사용할 수 있는 $로 시작하는 문자열입니다. 경로는 JsonPath 구문을 따릅니다.

참조 경로

참조 경로는 JSON 구조에서 단일 노드만 식별할 수 있는 방식으로 구문이 제한되는 경로입니다.

  • 객체 필드는 점(.) 및 대괄호([ ]) 표기를 통해서만 액세스할 수 있습니다.

  • 연산자(@ .. , : ? *)는 지원되지 않습니다.

  • length()가 지원되지 않은 등의 함수

예를 들어 상태 입력 데이터에는 다음과 같은 값이 포함됩니다.

{ "foo": 123, "bar": ["a", "b", "c"], "car": { "cdr": true } }

이 경우에는 다음 참조 경로가 반환됩니다.

$.foo => 123 $.bar => ["a", "b", "c"] $.car.cdr => true

특정 상태에서는 경로 및 참조 경로를 사용하여 상태 시스템의 흐름을 제어하거나 상태 설정 또는 옵션을 구성합니다.

InputPath, ResultPath 및 OutputPath 필드의 경로

상태 입력의 일부를 사용하는 방법 및 다음 단계에 출력으로 전송할 항목을 지정하려면 InputPath, OutputPathResultPath를 사용하면 됩니다.

  • InputPathOutputPath에는 JsonPath 구문을 따르는 경로를 사용해야 합니다.

  • ResultPath에는 참조 경로를 사용해야 합니다.

InputPath

InputPath 필드는 상태 입력의 일부를 선택하여 상태의 처리 작업에 전달합니다. 필드를 생략하는 경우 $ 값으로 설정되며 전체 입력을 표시합니다. null을 사용하면 입력이 삭제되고(상태 작업에 전송되지 않음) 작업에 빈 객체 {}를 나타내는 JSON 텍스트가 전송됩니다.

참고

경로는 값의 모음을 출력할 수 있습니다. 다음 예제를 고려하십시오.

{ "a": [1, 2, 3, 4] }

경로 $.a[0:2]를 적용하는 경우 결과는 다음과 같습니다.

[ 1, 2 ]

ResultPath

보통, 상태가 작업을 실행하는 경우, 작업 결과가 상태의 결과(다음 작업의 입력이 됨)로 전송됩니다.

상태가 작업을 실행하지 않는 경우, 상태의 자체 입력이 수정되지 않은 상태로 출력으로 전송됩니다. 그러나 상태의 ResultPathOutputPath 필드 값에 경로를 지정한 경우에는 이와 다른 시나리오가 가능합니다.

ResultPath가 상태 작업 실행 결과를 가져와 이를 입력에 넣습니다. 그러면 OutputPath가 입력의 일부를 선택하여 상태의 출력으로 전송합니다. ResultPath가 상태의 작업 수행 결과를 입력에 추가하여 기존 입력을 덮어쓰거나 전체 입력을 덮어쓸 수 있습니다.

  • ResultPath가 상태의 입력에 있는 항목과 일치하는 경우, 해당 입력 항목만 상태의 작업 실행 결과로 덮어 쓰입니다. 수정된 전체 입력은 상태의 출력으로 사용할 수 있습니다.

  • ResultPath가 상태 입력에 있는 항목과 일치하지 않으면 입력에 항목이 추가됩니다. 항목에는 상태 작업 실행 결과가 들어 있습니다. 확장된 입력은 상태의 출력으로 사용할 수 있습니다.

  • ResultPath에 기본값인 $가 들어 있는 경우 전체 입력과 동일한 값으로 설정됩니다. 이 경우, 상태 실행의 결과가 입력 전체를 덮어쓰고 입력이 전달 가능한 상태가 됩니다.

  • ResultPathnull이면 상태 실행 결과가 삭제되고 입력이 그대로 유지됩니다.

참고

ResultPath 필드 값은 참조 경로여야 합니다. ResultPath에 대한 자세한 내용은 ResultPath 섹션을 참조하십시오.

OutputPath

  • OutputPath가 상태 입력에 있는 항목과 일치하면 해당 입력 항목만 선택됩니다. 이 입력 항목이 상태 결과가 됩니다.

  • OutputPath가 상태 입력에 있는 항목과 일치하지 않으면 예외가 발생하여 잘못된 경로를 알려줍니다. 자세한 내용은 오류를 참조하십시오.

  • OutputPath에 기본값인 $가 들어 있는 경우 전체 입력과 완전히 동일한 값으로 설정됩니다. 이 경우, 전체 입력이 다음 상태로 전달됩니다.

  • OutputPathnull이면 빈 객체({})를 나타내는 JSON 텍스트가 다음 상태로 전송됩니다.

다음 예는 InputPath, ResultPathOutputPath 필드가 실제로 어떻게 작동하는지 보여줍니다. 현재 상태에 대해 다음과 같은 입력이 있다고 가정합니다.

{ "title": "Numbers to add", "numbers": { "val1": 3, "val2": 4 } }

또한 상태에 다음 InputPath, ResultPathOutputPath 필드가 있다고 가정합니다.

"InputPath": "$.numbers", "ResultPath": "$.sum", "OutputPath": "$"

상태의 작업은 입력으로부터 numbers 객체만 수신합니다. 그러면 이 작업에서 7을 반환하는 경우 이 상태의 출력은 다음과 같습니다.

{ "title": "Numbers to add", "numbers": { "val1": 3, "val2": 4 } "sum": 7 }

다음과 같이 OutputPath를 약간 수정할 수 있습니다.

"InputPath": "$.numbers", "ResultPath": "$.sum", "OutputPath": "$.sum"

앞에서와 마찬가지로, 다음 상태 입력 데이터를 사용합니다.

{ "numbers": { "val1": 3, "val2": 4 } }

하지만 이제는 상태 출력 데이터가 7입니다.

이 페이지에서: