기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Step Functions의 컨텍스트 객체에서 실행 데이터 액세스
상태 관리 및 데이터 변환
Step Functions는 최근에 상태 및 변환 데이터를 관리하기 JSONata 위해 변수 및를 추가했습니다.
변수를 사용하여 데이터 전달 및 를 사용하여 데이터 변환에 JSONata대해 알아봅니다.
컨텍스트 객체는 실행 중에 사용할 수 있는 내부 JSON 구조이며 상태 시스템 및 실행에 대한 정보를 포함합니다. 컨텍스트는 워크플로의 특정 실행에 대한 정보를 제공합니다. 워크플로는를 사용하여 JSONata 표현식의 컨텍스트 객체를 참조할 수 있습니다$states.context
.
컨텍스트 객체에 액세스
에서 컨텍스트 객체에 액세스하려면 JSONata
JSONata 상태의 컨텍스트 객체에 액세스하려면 JSONata 표현식$states.context
에를 사용합니다.
{
"ExecutionID" : "{% $states.context.Execution.Id %}"
}
에서 컨텍스트 객체에 액세스하려면 JSONPath
에서 컨텍스트 객체에 액세스하려면 JSONPath먼저 키 .$
끝에를 추가하여 값이 경로임을 나타냅니다. 그런 다음 값을 로 명명$$.
하여 컨텍스트 객체에서 노드를 선택합니다.
{
"ExecutionID.$": "$$.Execution.Id"
}
JSONPath 상태는 다음 JSONPath 필드의 컨텍스트($$.
)를 참조할 수 있습니다.
-
InputPath
-
OutputPath
-
ItemsPath
(Map 상태에서) -
Variable
(Choice 상태에서) -
ResultSelector
-
Parameters
-
변수와 변수 비교 연산자
컨텍스트 객체 필드
컨텍스트 객체에는 상태 시스템, 상태, 실행 및 작업에 대한 정보가 포함됩니다. 이 JSON 객체에는 각 데이터 유형에 대한 노드가 포함되며는 다음 형식입니다.
{
"Execution": {
"Id": "String
",
"Input": {},
"Name": "String
",
"RoleArn": "String
",
"StartTime": "Format: ISO 8601
",
"RedriveCount": Number
,
"RedriveTime": "Format: ISO 8601
"
},
"State": {
"EnteredTime": "Format: ISO 8601
",
"Name": "String
",
"RetryCount": Number
},
"StateMachine": {
"Id": "String
",
"Name": "String
"
},
"Task": {
"Token": "String
"
}
}
실행 중에 컨텍스트 객체는 관련 데이터로 채워집니다. RedriveTime
컨텍스트 객체는 다음과 같은 경우에만 사용할 수 있습니다.redriven 실행. 다음과 같은 경우 redriven a Map Run, RedriveTime
컨텍스트 객체는 Standard 유형의 하위 워크플로에만 사용할 수 있습니다. 의 경우 redriven Express 유형의 하위 워크플로로 Map RunRedriveTime
을 사용할 수 없습니다.
진행 중인 실행의 콘텐츠에는 다음 형식의 세부 사항이 포함됩니다.
{
"Execution": {
"Id": "arn:aws:states:us-east-1:123456789012:execution:stateMachineName:executionName",
"Input": {
"key": "value"
},
"Name": "executionName",
"RoleArn": "arn:aws:iam::123456789012:role...",
"StartTime": "2019-03-26T20:14:13.192Z"
},
"State": {
"EnteredTime": "2019-03-26T20:14:13.192Z",
"Name": "Test",
"RetryCount": 3
},
"StateMachine": {
"Id": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName",
"Name": "stateMachineName"
},
"Task": {
"Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W"
}
}
참고
Map
상태와 관련된 컨텍스트 객체 데이터는 섹션을 참조하세요맵 상태에 대한 컨텍스트 객체 데이터.
맵 상태에 대한 컨텍스트 객체 데이터
상태 관리 및 데이터 변환
Step Functions는 최근에 상태 및 변환 데이터를 관리하기 JSONata 위해 변수 및를 추가했습니다.
변수를 사용하여 데이터 전달 및 를 사용하여 데이터 변환에 JSONata대해 알아봅니다.
Map 상태 처리 시 컨텍스트 객체에서 사용할 수 있는 추가 항목은 Index
및 입니다Value
. Map
상태 반복마다 Index
는 현재 처리 중인 배열 항목의 인덱스 번호를 포함하는 반면 Value
는 처리 중인 배열 항목을 포함합니다. Map
상태 내에서 컨텍스트 객체에는 다음 데이터가 포함됩니다.
"Map": {
"Item": {
"Index": Number
,
"Value": "String
"
}
}
Map
상태에서만 이러한 데이터를 사용할 수 있으며 ItemSelector (맵)
필드에 지정할 수 있습니다.
참고
ItemProcessor
섹션에 포함된 상태가 아닌 기본 Map
상태의 ItemSelector
블록에서 컨텍스트 객체에서 파라미터를 정의해야 합니다.
상태를 사용하는 JSONPath Map
상태 시스템에서는 다음과 같이 컨텍스트 객체의 정보를 주입할 수 있습니다.
{ "StartAt": "ExampleMapState", "States": { "ExampleMapState": { "Type": "Map", "ItemSelector": { "ContextIndex.$": "$$.Map.Item.Index", "ContextValue.$": "$$.Map.Item.Value" }, "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "StartAt": "TestPass", "States": { "TestPass": { "Type": "Pass", "End": true } } }, "End": true } } }
다음 입력으로 이전 상태 머신을 실행하면 Index
와 Value
가 출력에 삽입됩니다.
[ { "who": "bob" }, { "who": "meg" }, { "who": "joe" } ]
실행 출력은 다음과 같이 반복 3회마다 Index
및 Value
항목 값을 반환합니다.
[
{
"ContextIndex": 0,
"ContextValue": {
"who": "bob"
}
},
{
"ContextIndex": 1,
"ContextValue": {
"who": "meg"
}
},
{
"ContextIndex": 2,
"ContextValue": {
"who": "joe"
}
}
]