Step Functions의 컨텍스트 객체에서 실행 데이터 액세스 - AWS Step Functions

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

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 } } }

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

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

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

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