기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
컨텍스트 객체
컨텍스트 객체는 실행 중에 사용할 수 있는 내부 JSON 구조이며, 상태 머신 및 실행에 대한 정보를 포함합니다. 이를 사용하면 워크플로에서 특정 실행에 대한 정보에 액세스할 수 있습니다. 다음 필드에서 컨텍스트 객체에 액세스할 수 있습니다.
-
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
"
}
}
실행 중에 컨텍스트 객체는 이 객체에 액세스하는 Parameters
필드에 대한 관련 데이터로 채워집니다. Parameters
필드가 작업 상태 범위를 벗어나는 경우 Task
필드의 값은 null입니다
RedriveCount
컨텍스트 개체의 값은 0입니다 (아직 입력하지 않은 경우). redriven실행. 또한 RedriveTime
컨텍스트 객체는 다음과 같은 경우에만 사용할 수 있습니다.redriven 실행. 만약 redriven a Map RunRedriveTime
컨텍스트 개체는 Standard 유형의 하위 워크플로에만 사용할 수 있습니다. 의 경우 redriven Express 유형의 하위 워크플로를 사용한 Map Run은 사용할 수 RedriveTime
없습니다.
진행 중인 실행의 콘텐츠에는 다음 형식의 세부 사항이 포함됩니다.
{
"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
상태와 관련된 컨텍스트 객체 데이터는 Map 상태의 컨텍스트 객체 데이터 단원을 참조하십시오.
컨텍스트 객체 액세스
컨텍스트 객체에 액세스하려면 경로를 통해 상태 입력을 선택할 때와 같이 먼저 .$
를 끝에 추가하여 파라미터 이름을 지정합니다. 그런 다음, 입력 대신 컨텍스트 객체 데이터에 액세스하기 위해 경로 앞에 $$.
를 추가합니다. 이렇게 알 수 있습니다. AWS Step Functions 경로를 사용하여 컨텍스트 개체에서 노드를 선택합니다.
다음 예제는 실행 ID, 이름, 시작 시간 등과 같은 컨텍스트 객체에 액세스하는 방법을 보여줍니다.redrive 개수.
실행을 ARN 검색하여 다운스트림 서비스로 전달
이 예제 태스크 상태는 경로를 사용하여 Amazon 리소스 이름 (ARN) 실행을 검색하고 Amazon 심플 큐 서비스 (AmazonSQS) 메시지로 전달합니다.
{
"Order Flight Ticket Queue": {
"Type": "Task",
"Resource": "arn:aws:states:::sqs:sendMessage",
"Parameters": {
"QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/flight-purchase",
"MessageBody": {
"From": "YVR",
"To": "SEA",
"Execution.$": "$$.Execution.Id"
}
},
"Next": "NEXT_STATE"
}
}
통합 서비스를 호출할 때 작업 토큰을 사용하는 방법에 대한 자세한 내용은 태스크 토큰으로 콜백이 올 때까지 기다리세요. 단원을 참조하십시오.
Pass 상태의 실행 시작 시간과 이름에 액세스
{ "Comment": "Accessing context object in a state machine", "StartAt": "Get execution context data", "States": { "Get execution context data": { "Type": "Pass", "Parameters": { "startTime.$": "$$.Execution.StartTime", "execName.$": "$$.Execution.Name" }, "ResultPath": "$.executionContext", "End": true } } }
액세스: redrive 실행 횟수
다음 태스크 상태 정의 예제는 태스크 상태 정의에 액세스하는 방법을 보여줍니다. redrive실행 횟수.
{ "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload": {
"Number.$": "$$.Execution.RedriveCount"
}, "FunctionName": "arn:aws:lambda:us-east-2
:123456789012
:function:functionName
" }, "End": true }
Map 상태의 컨텍스트 객체 데이터
Map 상태를 처리하고 있을 때 컨텍스트 객체에서 사용 가능한 추가 항목은 Index
와 Value
입니다. Map
상태 반복마다 Index
는 현재 처리 중인 배열 항목의 인덱스 번호를 포함하는 반면 Value
는 처리 중인 배열 항목을 포함합니다. Map
상태에서 컨텍스트 객체에는 다음 데이터가 포함됩니다.
"Map": {
"Item": {
"Index": Number
,
"Value": "String
"
}
}
Map
상태에서만 이러한 데이터를 사용할 수 있으며 ItemSelector (지도)
필드에 지정할 수 있습니다.
참고
컨텍스트 객체의 파라미터는 ItemProcessor
섹션에 포함된 상태가 아니라 기본 Map
상태의 ItemSelector
블록에서 정의할 수 있습니다.
상태 머신이 단순한 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"
}
}
]