기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Step Functions의 컨텍스트 객체에서 실행 데이터 액세스
상태 관리 및 데이터 변환
변수를 사용하여 상태 간 데이터 전달과 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
컨텍스트 객체를 사용할 수 있습니다. Express 유형의 하위 워크플로가 포함된 redriven 맵 실행의 경우에는 RedriveTime
을 사용할 수 없습니다.
실행 중인 실행의 콘텐츠에는 다음 형식의 세부 정보가 포함됩니다.
{
"Execution": {
"Id": "arn:aws:states:region
:123456789012:execution:stateMachineName:executionName",
"Input": {
"key": "value"
},
"Name": "executionName",
"RoleArn": "arn:aws:iam::123456789012:role...",
"StartTime": "2025-08-27T10:04:42Z"
},
"State": {
"EnteredTime": "2025-08-27T10:04:42.001Z",
"Name": "Test",
"RetryCount": 3
},
"StateMachine": {
"Id": "arn:aws:states:region
:123456789012:stateMachine:stateMachineName",
"Name": "stateMachineName"
},
"Task": {
"Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W"
}
}
소수 초가 포함된 타임스탬프 형식
Step Functions는 필요에 따라 출력이 0, 3, 6 또는 9자리일 수 있음을 명시하는 ISO8601 사양을 따릅니다. 타임스탬프에 분수 초가 0인 경우 Step Functions는 출력을 패딩하지 않고 후행 0을 제거합니다.
Step Functions 타임스탬프를 사용하는 코드를 생성하는 경우 코드는 분수 초의 가변 수를 처리할 수 있어야 합니다.
Map 상태에 대한 컨텍스트 객체 데이터
상태 관리 및 데이터 변환
변수를 사용하여 상태 간 데이터 전달과 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"
}
}
]