기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Step Functions 워크플로의 파라미터를 사용하여 상태 데이터를 조작합니다.
Parameters
및 ResultSelector
필드는 워크플로우 내에서 데이터가 이동할 때 JSON 조작할 수 있는 방법을 제공합니다. InputPath
InputPath
경로를 사용하여 JSON 표기법을 필터링하여 전달되는 입력을 제한할 수 있습니다 (참조경로를 사용하여 Step Functions 워크플로의 입력에 액세스하기). Parameters
필드를 사용하면 키-값 페어 컬렉션을 전달할 수 있습니다. 여기서 값은 상태 머신 정의에서 정의하는 정적 값 또는 경로를 사용하여 입력에서 선택하는 값입니다. ResultSelector
필드는 ResultPath
가 적용되기 전의 상태 결과를 조작할 수 있는 방법을 제공합니다.
AWS Step Functions InputPath
필드를 먼저 적용한 다음 Parameters
필드를 적용합니다. 우선 InputPath
를 사용하여 원시 입력을 필터링한 다음 Parameters
를 적용하여 입력을 추가로 조작하거나 새 값을 추가할 수 있습니다. 그런 다음 ResultSelector
필드를 사용하여 ResultPath
가 적용되기 전의 상태 출력을 조작할 수 있습니다.
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를 사용하여 데이터를 저장하고 다음 방법 중 하나를 구현하는 것이 좋습니다.
Map
상태에서 Amazon S3 데이터 소스에서 직접 입력을 읽을 수 있도록 워크플로에서 Distributed Map 상태를 사용합니다. 자세한 내용은 분산 모드 단원을 참조하십시오.Payload
파라미터에 있는 버킷의 Amazon 리소스 이름 (ARN) 을 파싱하여 버킷 이름과 키 값을 가져옵니다. 자세한 내용은 Step Functions에서 대용량 페이로드를 전달하는 ARNs 대신 Amazon S3 사용 단원을 참조하십시오.
또는 구현을 조정하여 실행에서 더 작은 용량의 페이로드를 전달할 수 있습니다.
ResultSelector
ResultSelector
필드를 사용하여 ResultPath
가 적용되기 전의 상태 결과를 조작합니다. 이 ResultSelector
필드를 사용하면 키 값 페어 컬렉션을 만들 수 있습니다. 여기서 값은 정적이거나 상태 결과에서 선택한 값입니다. ResultSelector
필드를 사용하면 ResultPath
필드에 전달하려는 상태 결과 부분을 선택할 수 있습니다.
참고
ResultPath
필드를 사용하여 ResultSelector
필드 출력을 원래 입력에 추가할 수 있습니다.
ResultSelector
는 다음 상태의 선택적 필드입니다.
예를 들어 Step Functions 서비스 통합에서는 결과의 페이로드 외에 메타데이터를 반환합니다. ResultSelector
는 결과의 일부를 선택하고 ResultPath
를 사용하여 상태 입력과 병합할 수 있습니다. 이 예제에서는 and만 선택하고 이를 Amazon EMR createCluster .sync의 상태 입력과 병합하려고 합니다. resourceType
ClusterId
다음을 예로 들어보겠습니다.
{
"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"
}
}
그런 다음 ResultSelector
를 사용하여 resourceType
및 ClusterId
를 선택할 수 있습니다.
"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": {
"ClusterId": "AKIAIOSFODNN7EXAMPLE"
"ResourceType": "elasticmapreduce",
}
}
배열의 배열 평면화
상태 시스템의 병렬 워크플로 상태 또는 워크플로 상태 매핑 상태에서 배열의 배열을 반환하는 경우 ResultSelector 필드를 사용하여 배열을 평면 배열로 변환할 수 있습니다. Parallel 또는 Map 상태 정의 내에 이 필드를 포함하여 이러한 상태의 결과를 조작할 수 있습니다.
배열을 평면화하려면 다음 예제와 같이 [*]
ResultSelector
필드의 JMESPath구문을
"ResultSelector": { "flattenArray.$": "$[*][*]" }
배열을 평면화하는 방법을 보여주는 예제는 다음 자습서의 3단계를 참조하세요.