기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Step Functions 워크플로의 인라인 모드의 맵 상태 사용
기본적으로 Map
상태는 인라인 모드에서 실행됩니다. 인라인 모드에서 맵 상태는 JSON 배열만 입력으로 받아들입니다. 워크플로의 이전 단계에서 이 배열을 수신합니다. 이 모드에서는 각 Map
상태 반복이 Map
상태가 포함된 워크플로의 컨텍스트에서 실행됩니다. Step Functions는 이러한 반복 실행 내역을 상위 워크플로 실행 내역에 추가합니다.
이 모드에서 Map
상태는 동시 반복을 최대 40개까지 지원합니다.
인라인으로 설정된 Map
상태를 Inline Map 상태라고 합니다. 워크플로 실행 내역 항목이 25,000개를 초과하지 않거나 동시 반복이 40회 넘게 필요하지 않은 경우에 인라인 모드에서 Map
상태를 사용합니다.
Inline Map 상태 사용에 대한 소개는 자습서 인라인 맵으로 작업 반복 섹션을 참조하세요.
내용
이 주제의 주요 개념
- 인라인 모드
-
Map
상태의 제한된 동시성 모드입니다. 이 모드에서는 각Map
상태 반복이Map
상태가 포함된 워크플로의 컨텍스트에서 실행됩니다. Step Functions는 이러한 반복의 실행 내역을 상위 워크플로 실행 내역에 추가합니다.Map
상태는 기본적으로 인라인 모드에서 실행됩니다.이 모드는 JSON 배열만 입력으로 받아들이고 최대 40회의 동시 반복을 지원합니다.
- Inline Map 상태
-
인라인 모드로 설정된
Map
상태입니다. - 맵 워크플로
Map
상태가 반복마다 실행되는 단계 세트입니다.- Map 상태 반복
-
Map
상태 내에서 정의된 워크플로 반복입니다.
Inline Map 상태 필드
워크플로에서 Inline Map 상태를 사용하려면 다음 필드를 하나 이상을 지정합니다. 일반 상태 필드 외에 다음 필드를 지정합니다.
Type
(필수)-
상태 유형을 설정합니다(예:
Map
). ItemProcessor
(필수)-
Map
상태 처리 모드 및 정의를 지정하는 다음 JSON 객체를 포함합니다.정의에는 각 배열 항목을 처리하기 위해 반복하는 단계 세트가 포함되어 있습니다.
-
ProcessorConfig
—Map
상태의 처리 모드를 지정하는 선택적 JSON 객체입니다. 이 객체에는Mode
하위 필드가 포함되어 있습니다. 이 필드의 기본값은 인라인 모드의Map
상태를 사용하는INLINE
입니다.이 모드에서 반복이 실패하면
Map
상태가 실패합니다.Map
상태가 실패하면 모든 반복이 중지합니다.
StartAt
- 워크플로의 첫 번째 상태를 나타내는 문자열을 지정합니다. 이 문자열은 대소문자를 구분하며 상태 객체 중 하나의 이름과 일치해야 합니다. 이 상태는 데이터 세트의 항목마다 가장 먼저 실행됩니다.Map
상태에 제공하는 모든 실행 입력은 먼저StartAt
상태에 전달됩니다.-
States
— 쉼표로 구분된 상태 세트를 포함하는 JSON 객체입니다. 이 객체에서 Map workflow를 정의합니다.참고
-
ItemProcessor
필드 내의 상태는 서로 전환될 수만 있습니다.ItemProcessor
필드 외부의 상태는 필드 내의 상태로 전환될 수 없습니다. -
ItemProcessor
필드는 현재 지원 중단된Iterator
필드를 대체합니다.Iterator
필드를 사용하는Map
상태를 계속 포함할 수 있지만 이 필드를ItemProcessor
로 바꾸는 것이 좋습니다.Step Functions Local은 현재 이
ItemProcessor
필드를 지원하지 않습니다. Step Functions Local에서Iterator
필드를 사용하는 것이 좋습니다.
-
-
ItemsPath
(선택 사항)-
구문을 사용하여 참조 경로를 지정합니다. JsonPath
이 경로는 상태 입력 내에 항목 배열이 포함된 JSON 노드를 선택합니다. 자세한 내용은 ItemsPath (맵) 단원을 참조하십시오. ItemSelector
(선택 사항)-
입력 배열 항목 값을 각
Map
상태 반복으로 전달하기 전에 재정의합니다.이 필드에서는 키-값 쌍의 컬렉션을 JSON 포함하는 유효한 항목을 지정합니다. 이러한 페어에는 다음 중 하나가 포함할 수 있습니다.
자세한 내용은 ItemSelector (지도) 단원을 참조하십시오.
ItemSelector
필드는 현재 지원 중단된Parameters
필드를 대체합니다.Parameters
필드를 사용하는Map
상태를 계속 포함할 수 있지만 이 필드를ItemSelector
로 바꾸는 것이 좋습니다. MaxConcurrency
(선택 사항)-
동시에 실행할 수 있는
Map
상태 반복 횟수의 상한을 제공하는 정수 값을 지정합니다. 예를 들어MaxConcurrency
값이 10이면 한 번에 실행되는Map
상태 동시 반복 횟수는 10회로 제한됩니다.참고
동시 반복은 제한될 수 있습니다. 이 경우 일부 반복은 이전 반복이 완료될 때까지 시작되지 않습니다. 입력 배열에 항목이 40개 넘게 있으면 이러한 경우가 발생할 가능성이 높아집니다.
동시성을 높이려면 분산 모드을 고려하세요.
기본값은
0
이며 동시성에는 제한이 없습니다. Step Functions는 반복을 가능한 한 동시에 간접적으로 호출합니다.MaxConcurrency
값이1
이면ItemProcessor
배열 요소마다 한 번 간접적으로 호출됩니다. 배열의 항목은 입력에 나타나는 순서대로 처리됩니다. Step Functions는 이전 반복이 완료될 때까지 새 반복을 시작하지 않습니다. MaxConcurrencyPath
(선택 사항)-
참조 경로를 사용하여 상태 입력에서 동적으로 최대 동시성 값을 제공하려면
MaxConcurrencyPath
를 사용합니다. 확인되면 참조 경로에서 값이 음수가 아닌 정수인 필드를 선택해야 합니다.참고
Map
상태에는MaxConcurrency
및MaxConcurrencyPath
모두 포함될 수 없습니다. ResultPath
(선택 사항)-
Map
상태 반복 출력을 저장할 위치를 입력에서 지정합니다. 그러면 Map 상태에서 OutputPath 필드(지정된 경우)에 지정된 대로 입력을 필터링합니다. 그런 다음 필터링된 입력을 상태 출력으로 사용합니다. 자세한 내용은 입/출력 처리를 참조하십시오. ResultSelector
(선택 사항)-
키 값 페어 컬렉션을 전달합니다. 여기서 값은 정적이거나 결과에서 선택된 값입니다. 자세한 내용은 ResultSelector 단원을 참조하십시오.
작은 정보
상태 시스템에서 사용하는 Parallel 또는 Map 상태가 배열을 반환하는 경우 ResultSelector 필드를 사용하여 배열을 평면 배열로 변환할 수 있습니다. 자세한 내용은 배열의 배열 평면화 단원을 참조하십시오.
Retry
(선택 사항)-
Retrier라고 하는 객체 배열로, 재시도 정책을 정의합니다. 런타임 오류가 발생하면 상태에서 재시도 정책을 사용합니다. 자세한 내용은 Retry 및 Catch를 사용하는 상태 시스템 예제 단원을 참조하십시오.
참고
Inline Map 상태에 Retriers를 정의하면 재시도 정책이 실패한 반복이 아닌 모든
Map
상태 반복에 적용됩니다. 예를 들어Map
상태에 2회 성공한 반복과 한 번 실패한 반복이 있다고 가정해보겠습니다.Map
상태에 대한Retry
필드를 정의한 경우 재시도 정책은 실패한 이터레이션에만 적용되는 것이 아니라 세 가지Map
상태 이터레이션 모두에 적용됩니다. Catch
(선택 사항)-
폴백(fallback) 상태를 정의하는 객체 배열(Catcher). 런타임 오류가 발생하고 재시도 정책이 없거나 삭제되면 상태에서 Catcher를 실행합니다. 자세한 내용은 폴백 상태를 참조하십시오.
사용되지 않는 필드
참고
다음 필드를 사용하는 Map
상태를 계속 포함할 수 있지만 Iterator
를 ItemProcessor
및 ItemSelector
가 있는 Parameters
로 바꾸는 것이 좋습니다.
-
Iterator
-
배열의 각 요소를 처리하는 일련의 단계를 정의하는 JSON 객체를 지정합니다.
Parameters
-
키-값 페어 컬렉션을 지정합니다. 여기서 값에는 다음 중 하나가 포함될 수 있습니다.
-
상태 시스템 정의에서 정의하는 정적 값
-
경로를 사용하여 입력에서 선택한 값
-
Inline Map 상태 예제
인라인 모드에서 실행되는 Map
상태에 대한 다음 입력 데이터가 있다고 가정합니다.
{
"ship-date": "2016-03-14T01:59:00Z",
"detail": {
"delivery-partner": "UQS",
"shipped": [
{ "prod": "R31", "dest-code": 9511, "quantity": 1344 },
{ "prod": "S39", "dest-code": 9511, "quantity": 40 },
{ "prod": "R31", "dest-code": 9833, "quantity": 12 },
{ "prod": "R40", "dest-code": 9860, "quantity": 887 },
{ "prod": "R40", "dest-code": 9511, "quantity": 1220 }
]
}
}
이전 입력이 주어지면 다음 예제의 Map
상태는 a를 호출합니다. AWS Lambda shipped
필드에 있는 배열의 각 항목에 대해 ship-val
한 번씩 이름이 지정된 함수.
"Validate All": {
"Type": "Map",
"InputPath": "$.detail",
"ItemProcessor": {
"ProcessorConfig": {
"Mode": "INLINE"
},
"StartAt": "Validate",
"States": {
"Validate": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:ship-val:$LATEST
"
},
"End": true
}
}
},
"End": true,
"ResultPath": "$.detail.shipped",
"ItemsPath": "$.shipped"
}
Map
상태를 반복할 때마다 ItemsPath 필드로 선택한 배열의 항목이 입력으로 ship-val
Lambda 함수에 전송됩니다. 다음 값은 Map
상태에서 Lambda 함수 간접 호출에 보내는 입력의 예제입니다.
{
"prod": "R31",
"dest-code": 9511,
"quantity": 1344
}
완료 시 Map
상태의 출력은 JSON 배열이며, 여기서 각 항목은 반복의 출력입니다. 이 경우 이 배열에는 ship-val
Lambda 함수의 출력이 포함됩니다.
ItemSelector
가 있는 Inline Map 상태 예제
앞의 예제의 ship-val
Lambda 함수에 전송 주체에 대한 정보가 필요하다고 가정해보겠습니다. 이 정보는 각 반복의 배열에 있는 항목에 추가됩니다. 입력의 정보를 Map
상태의 현재 반복에 지정된 정보와 함께 포함할 수 있습니다. 다음 예제에서 ItemSelector
필드를 확인하세요.
"Validate-All": {
"Type": "Map",
"InputPath": "$.detail",
"ItemsPath": "$.shipped",
"MaxConcurrency": 0,
"ResultPath": "$.detail.shipped",
"ItemSelector": {
"parcel.$": "$$.Map.Item.Value",
"courier.$": "$.delivery-partner"
},
"ItemProcessor": {
"StartAt": "Validate",
"States": {
"Validate": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:ship-val",
"End": true
}
}
},
"End": true
}
ItemSelector
블록은 반복에 대한 입력을 노드로 대체합니다. JSON 이 노드에는 컨텍스트 개체의 현재 항목 데이터와 Map
상태입력 delivery-partner
필드의 주체 정보가 모두 포함됩니다. 다음은 단일 반복에 대한 입력의 예제입니다. Map
상태는 이 입력을 ship-val
Lambda 함수 간접 호출에 전달합니다.
{
"parcel": {
"prod": "R31",
"dest-code": 9511,
"quantity": 1344
},
"courier": "UQS"
}
이전 Inline Map 상태 예제에서 ResultPath
필드는 출력을 입력과 같은 형식으로 생성합니다. 하지만 각 요소가 각 반복의 ship-val
Lambda 간접 호출의 출력인 배열로 detail.shipped
필드를 덮어씁니다.
Inline Map 상태 및 해당 필드 사용 방법에 대한 자세한 내용은 다음을 참조하세요.
Inline Map
상태 입력 및 출력 처리
지정된 Map
상태의 경우 InputPath에서 상태 입력의 하위 집합을 선택합니다.
Map
상태 입력에는 배열이 포함되어야 합니다. JSON Map
상태는 배열의 항목마다 ItemProcessor
섹션을 한 번 실행합니다. ItemsPath 필드를 지정하면 Map
상태는 입력 위치를 선택하여 반복할 배열을 찾습니다. 지정하지 않으면 ItemsPath
값은 $
가 되고, ItemProcessor
섹션에서는 배열이 유일한 입력일 것으로 예상합니다. ItemsPath
필드를 지정하는 경우 해당 값은 참조 경로여야 합니다. Map
상태는 InputPath
를 적용한 후 이 경로를 유효 입력에 적용합니다. 는 값이 JSON 배열인 필드를 ItemsPath
식별해야 합니다.
각 반복에 대한 입력은 기본적으로 ItemsPath
값으로 식별되는 배열 필드의 단일 요소입니다. ItemSelector (지도)
필드를 사용하여 이 값을 재정의할 수 있습니다.
완료 시 Map
상태의 출력은 JSON 배열이며, 여기서 각 항목은 반복의 출력입니다.
Inline Map 상태 입력 및 출력에 대한 자세한 내용은 다음을 참조하세요.