本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管理狀態和轉換資料
內容物件是在執行期間可用的內部 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 類型的子工作流程。對於具有 Express 類型的子工作流程的 redriven 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 狀態的內容物件資料。
Map 狀態的內容物件資料
管理狀態和轉換資料
處理Map狀態時,內容物件中有兩個額外的項目: Index
和 Value
。對於每個Map
狀態反覆運算, Index
包含目前正在處理的陣列項目索引號碼,而 Value
包含正在處理的陣列項目。在 Map
狀態中,內容物件包含下列資料:
"Map": {
"Item": {
"Index": Number
,
"Value": "String
"
}
}
這些功能只能在 Map
狀態中使用,並且可以在 ItemSelector (地圖)
欄位中指定。
注意
您必須從主要Map
狀態ItemSelector
區塊中的內容物件定義參數,而不是在ItemProcessor
區段中包含的狀態內。
假設狀態機器使用 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"
}
]
執行的輸出會傳回三個反覆運算中的每個 Index
和 Value
項目的值,如下所示:
[
{
"ContextIndex": 0,
"ContextValue": {
"who": "bob"
}
},
{
"ContextIndex": 1,
"ContextValue": {
"who": "meg"
}
},
{
"ContextIndex": 2,
"ContextValue": {
"who": "joe"
}
}
]