InputPath, 매개변수 및 ResultSelector - AWS Step Functions

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

InputPath, 매개변수 및 ResultSelector

InputPath,ParametersResultSelector 필드는 워크플로를 통해 이동하는 JSON을 조작할 수 있는 방법을 제공합니다. InputPath경로를 사용하여 JSON 표기법을 필터링하여 전달되는 입력을 제한할 수 있습니다 (참조경로). Parameters 필드를 사용하면 키-값 페어 컬렉션을 전달할 수 있습니다. 여기서 값은 상태 머신 정의에서 정의하는 정적 값 또는 경로를 사용하여 입력에서 선택하는 값입니다. 이ResultSelector 필드는 상태가 적용되기 전에ResultPath 상태의 결과를 조작하는 방법을 제공합니다.

AWS Step Functions는 InputPath 필드를 먼저 적용한 다음 Parameters 필드를 적용합니다. 우선 InputPath를 사용하여 원시 입력을 필터링한 다음 Parameters를 적용하여 입력을 추가로 조작하거나 새 값을 추가할 수 있습니다. 그런 다음ResultSelector 필드를 사용하여ResultPath 가 적용되기 전의 상태 출력을 조작할 수 있습니다.

작은 정보

Step Functions 콘솔의 데이터 흐름 시뮬레이터를 사용하여 JSON 경로 구문을 테스트하고, 상태 내에서 데이터가 조작되는 방식을 더 잘 이해하고, 상태 간에 데이터가 전달되는 방식을 확인할 수 있습니다.

InputPath

InputPath를 사용하여 상태 입력의 부분을 선택합니다.

예를 들어, 상태에 대한 입력에 다음이 포함된다고 가정합니다.

{ "comment": "Example for InputPath.", "dataset1": { "val1": 1, "val2": 2, "val3": 3 }, "dataset2": { "val1": "a", "val2": "b", "val3": "c" } }

InputPath를 적용할 수 있습니다.

"InputPath": "$.dataset2",

위의 InputPath를 통해 입력으로 전달되는 JSON은 다음과 같습니다.

{ "val1": "a", "val2": "b", "val3": "c" }
참고

경로는 값의 모음을 출력할 수 있습니다. 다음 예제를 살펴보세요.

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

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

[ 1, 2 ]

파라미터

이 섹션에서는 매개변수 필드를 사용할 수 있는 다양한 방법에 대해 설명합니다.

키-값 쌍

Parameters필드를 사용하여 입력으로 전달되는 키-값 페어 컬렉션을 만들 수 있습니다. 각각의 값은 상태 머신 정의에 포함한 정적 값 또는 path를 통해 입력 또는 컨텍스트 객체에서 선택한 값일 수 있습니다. path를 사용하여 값을 선택한 키-값 페어의 경우 키 이름이 .$ 기호로 끝나야 합니다.

예를 들어 다음과 같은 입력을 제공한다고 가정합니다.

{ "comment": "Example for Parameters.", "product": { "details": { "color": "blue", "size": "small", "material": "cotton" }, "availability": "in stock", "sku": "2317", "cost": "$23" } }

정보의 일부를 선택하기 위해 상태 머신 정의에 이러한 파라미터를 지정할 수 있습니다.

"Parameters": { "comment": "Selecting what I care about.", "MyDetails": { "size.$": "$.product.details.size", "exists.$": "$.product.availability", "StaticValue": "foo" } },

이전 입력 및 Parameters 필드를 지정하면 다음과 같은 JSON이 전달됩니다.

{ "comment": "Selecting what I care about.", "MyDetails": { "size": "small", "exists": "in stock", "StaticValue": "foo" } },

입력 외에도 컨텍스트 객체라고 알려진 특수 JSON 객체에 액세스할 수 있습니다. 컨텍스트 객체에는 상태 머신 실행에 대한 정보가 포함됩니다. 컨텍스트 객체를 참조하세요.

연결된 리소스

또한 Parameters 필드는 정보를 연결된 리소스로 전달할 수 있습니다. 예를 들어 작업 상태가 AWS Batch 작업을 오케스트레이션하는 경우 관련 API 파라미터를 해당 서비스의 API 작업에 직접 전달할 수 있습니다. 자세한 내용은 다음을 참조하세요.

Amazon S3

상태 간에 전달하는 Lambda 함수 데이터가 262,144바이트 이상으로 증가할 수 있는 경우 Amazon S3를 사용하여 데이터를 저장하고 다음 방법 중 하나를 구현하는 것이 좋습니다.

또는 실행에서 더 작은 페이로드를 전달하도록 구현을 조정할 수 있습니다.

ResultSelector

ResultSelector필드를 사용하여 상태가ResultPath 적용되기 전의 결과를 조작할 수 있습니다. 이ResultSelector 필드를 사용하면 값이 정적이거나 상태 결과에서 선택된 키 값 쌍의 컬렉션을 만들 수 있습니다. ResultSelector필드를 사용하여 상태 결과의 어느 부분을ResultPath 필드에 전달할지 선택할 수 있습니다.

참고

ResultPath필드를 사용하여 필드의 출력을 원래 입력에ResultSelector 추가할 수 있습니다.

ResultSelector는 다음 상태의 선택적 필드입니다.

예를 들어, Step Functions 서비스 통합은 결과의 페이로드 외에 메타데이터를 반환합니다. ResultSelector를 사용하여 결과의 일부를 선택하고 상태 입력과 병합할 수ResultPath 있습니다. 이 예에서는resourceTypeClusterId 만 선택하고 이를 Amazon EMR CreateCluster.sync의 상태 입력과 병합하려고 합니다. 다음을 감안할 때:

{ "resourceType": "elasticmapreduce", "resource": "createCluster.sync", "output": { "SdkHttpMetadata": { "HttpHeaders": { "Content-Length": "1112", "Content-Type": "application/x-amz-JSON-1.1", "Date": "Mon, 25 Nov 2019 19:41:29 GMT", "x-amzn-RequestId": "1234-5678-9012" }, "HttpStatusCode": 200 }, "SdkResponseMetadata": { "RequestId": "1234-5678-9012" }, "ClusterId": "AKIAIOSFODNN7EXAMPLE" } }

그런 다음 다음을ClusterId 사용하여ResultSelector 다음을 선택할 수 있습니다.resourceType

"Create Cluster": { "Type": "Task", "Resource": "arn:aws:states:::elasticmapreduce:createCluster.sync", "Parameters": { <some parameters> }, "ResultSelector": { "ClusterId.$": "$.output.ClusterId", "ResourceType.$": "$.resourceType" }, "ResultPath": "$.EMROutput", "Next": "Next Step" }

주어진 입력으로 사용하면 다음이ResultSelector 생성됩니다.

{ "OtherDataFromInput": {}, "EMROutput": { "ResourceType": "elasticmapreduce", "ClusterId": "AKIAIOSFODNN7EXAMPLE" } }