컨텍스트 객체 - AWS Step Functions

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

컨텍스트 객체

컨텍스트 객체는 실행 중에 사용할 수 있는 내부 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입니다

아직 실행을 redriven하지 않은 경우 RedriveCount 컨텍스트 객체 값은 0입니다. 또한 RedriveTime 컨텍스트 객체는 실행을 redriven한 경우에만 사용 가능합니다. redriven a Map Run한 경우 표준 유형의 하위 워크플로에만 RedriveTime 컨텍스트 객체를 사용할 수 있습니다. Express 유형의 하위 워크플로가 포함된 redriven 맵 실행의 경우에는 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을 검색하여 다운스트림 서비스에 전달

이 예제 Task 상태는 경로를 사용하여 실행 Amazon 리소스 이름(ARN)을 검색하고 Amazon Simple Queue Service(Amazon SQS) 메시지에 전달합니다.

{ "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 횟수에 액세스

다음 Task 상태 정의 예제에서는 실행의 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 상태를 처리하고 있을 때 컨텍스트 객체에서 사용 가능한 추가 항목은 IndexValue입니다. 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 } } }

다음 입력으로 이전 상태 머신을 실행하면 IndexValue가 출력에 삽입됩니다.

[ { "who": "bob" }, { "who": "meg" }, { "who": "joe" } ]

실행 출력은 다음과 같이 반복 3회마다 IndexValue 항목 값을 반환합니다.

[ { "ContextIndex": 0, "ContextValue": { "who": "bob" } }, { "ContextIndex": 1, "ContextValue": { "who": "meg" } }, { "ContextIndex": 2, "ContextValue": { "who": "joe" } } ]