本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管理狀態和轉換資料
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
(在映射狀態) -
Variable
(選擇狀態) -
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 RedriveTime
無法使用 Express 類型的 Map Run。
正在進行中執行的內容包含以下格式的規格。
{
"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 (地圖)
欄位中指定。
注意
您必須從主要Map
狀態ItemSelector
區塊中的內容物件定義參數,而不是在ItemProcessor
區段中包含的狀態內。
使用 狀態機器時JSONPathMap
,您可以從內容物件插入資訊,如下所示。
{
"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"
}
]
執行的輸出會傳回三個反覆運算中的每個 Index
和 Value
項目的值,如下所示:
[
{
"ContextIndex": 0,
"ContextValue": {
"who": "bob"
}
},
{
"ContextIndex": 1,
"ContextValue": {
"who": "meg"
}
},
{
"ContextIndex": 2,
"ContextValue": {
"who": "joe"
}
}
]