執行工作流程後,您可以在 Google Cloud 控制台或使用 Google Cloud CLI 中存取工作流程執行結果。
控制台
前往 Google Cloud 控制台的「Workflows」頁面。
如要存取工作流程的執行結果,請按一下工作流程名稱,前往「工作流程詳細資料」頁面。
如要查看特定執行作業的詳細資料,請在「執行作業」分頁中,按一下清單中的執行作業 ID,前往「執行作業詳細資料」頁面。
在「摘要」分頁中,每個執行作業都會顯示以下資訊:
- 執行 ID:工作流程執行作業的專屬 ID。
- 執行狀態:表示工作流程的結束狀態,包括目前或最終的工作流程步驟。
- Execution created:執行作業啟動時。
- 執行作業展開:執行作業開始執行步驟的時間。
- 執行結束時間:執行作業結束的時間。
- 執行作業時間長度:已經過的總時間。這可能表示網路錯誤或連線問題。
- 工作流程名稱:工作流程名稱。
- 工作流程修訂版本:執行時的目前修訂版本。
- 呼叫記錄檔層級:執行期間套用的呼叫記錄層級。詳情請參閱「通話記錄」。
- 輸入:傳遞至工作流程的執行階段引數 (如有)。
- 輸出:工作流程的輸出內容。如果執行作業失敗,請附上導致執行作業失敗的例外狀況。請參閱本文件中的「執行錯誤對應」。
如要將工作流程執行記錄做為步驟項目清單來查看,請按一下「步驟」分頁標籤。詳情請參閱「查看執行步驟的記錄」。
如要查看工作流程執行記錄,請按一下「Logs」分頁標籤。
如要篩選執行記錄,請使用表格頂端的「篩選」欄位。舉例來說,如要只顯示執行失敗的嘗試,請在篩選器的文字欄位中輸入
failed
。
gcloud
如要查看工作流程執行作業的完整清單,請輸入下列指令:
gcloud workflows executions list WORKFLOW_NAME
將
WORKFLOW_NAME
替換為工作流程的名稱。複製所需執行作業的執行作業 ID。如要查看工作流程的執行記錄,請輸入下列指令:
gcloud workflows executions describe \ --workflow=WORKFLOW_NAME \ EXECUTION_ID
更改下列內容:
WORKFLOW_NAME
:工作流程名稱EXECUTION_ID
:執行作業的專屬 ID
這個指令會傳回類似以下的輸出內容:
argument: 'null' endTime: '2022-07-19T12:40:07.070039707Z' error: context: |- The argument of 'in' must be a dict or an array; got: null in step "checkSearchTermInInput", routine "main", line: 12 payload: "{"message":"The argument of 'in' must be a dict or an array; got: null"
,"tags":["TypeError"]}" stackTrace: elements: - position: column: '26' length: '24' line: '12' routine: main step: checkSearchTermInInput name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/17ffc89c-0a27-4d2f-8356-e681d949a3d3 startTime: '2022-07-19T12:40:07.024823663Z' state: FAILED status: currentSteps: - routine: main step: checkSearchTermInInput workflowRevisionId: 000001-ac2argument
:傳遞至工作流程的執行階段引數 (如有)endTime
:執行作業結束的時間error
:當執行作業失敗時,會擲回的例外狀況部分所產生的錯誤訊息name
:執行作業的完整名稱,包括專案名稱、工作流程位置、工作流程名稱和執行 IDstartTime
:執行作業開始的時間state
:表示工作流程的結束狀態status
:執行作業的目前或最終工作流程步驟workflowRevisionID
:執行時的目前修訂版本
執行錯誤對應
如果工作流程在執行期間擲回錯誤,且未在 try/except
區塊中偵測到錯誤,執行作業就會失敗,並傳回描述錯誤的錯誤對應項目 (JSON 字典)。
工作流程執行期間擲回的錯誤會包含標記,協助您找出導致錯誤的原因。舉例來說,連接器傳回的錯誤可能會有兩個鍵 (tags
和 message
),如下所示:
{'tags': ['SystemError'], 'message': 'an error has occurred'}
您可以使用多個標記。如要檢查特定標記,您可以使用運算式。例如:
${'SystemError' in e.tags}
以字串形式傳回的存取錯誤資料
部分連接器和 HTTP API 會在傳回錯誤前,將錯誤序列化為字串。您可以使用標準程式庫函式,將酬載還原為原始錯誤。舉例來說,如要將錯誤字串轉換為對應,您可以使用 json.decode
和 text.encode
函式:
json.decode(text.encode(ERROR_FROM_API))
錯誤標記
下表說明不同錯誤標記的意義。
標記 | 說明 |
---|---|
AuthError | 當產生 HTTP 要求的憑證失敗時,就會觸發此例外狀況。 |
ConnectionError | 當與端點成功建立連線,但在資料傳輸期間發生連線問題時,系統會擲回此例外狀況。在收到完整回應之前,連線就會終止,且訊息可能未送達端點。重試可能不會是冪等。 |
ConnectionFailedError | 當無法與 API 端點建立連線時,系統會擲回此例外狀況,例如網域名稱錯誤、DNS 解析問題或其他網路問題。重試是冪等的。 |
HttpError | 當 HTTP 要求失敗,並傳回 HTTP 錯誤狀態時,系統會擲回此異常。當這個例外狀況發生時,回應會是包含下列元素的對應項目:
|
IndexError | 引發時機:序列索引為超出範圍的整數。 |
KeyError | 在現有鍵集中找不到對應的對應鍵時,會引發此例外狀況。 |
OperationError | 當長時間執行的作業未順利完成時,系統會擲回此例外狀況。 |
ParallelNestingError | 當可巢狀結構的並行步驟數量上限超過時,就會觸發此例外狀況。 |
RecursionError | 當解譯器偵測到 呼叫堆疊深度上限超出時,就會觸發此例外狀況。 |
ResourceLimitError | 當某項資源用量達到上限時,系統會觸發此事件。當這種錯誤在內部發生時,系統無法擷取,並會導致立即執行失敗。 |
ResponseTypeError | 當長時間執行的作業傳回錯誤類型的回應時,就會擲回此例外狀況。 |
SystemError | 當轉譯器發現內部錯誤時,就會引發此事件。 |
TimeoutError | 系統功能在系統層級逾時時觸發。 |
TypeError | 當作業或函式套用至不相容類型的物件時,就會擲回此例外。相關值是字串,可提供類型不相符的詳細資料。 |
UnhandledBranchError | 當一或多個分支或疊代遇到未處理的執行階段錯誤,且數量達到上限時,就會觸發此事件。 |
ValueError | 當作業或函式收到的引數具有正確的類型但值不正確,且情況未由更精確的例外狀況 (例如 IndexError ) 加以說明時,就會擲回此例外狀況。 |
ZeroDivisionError | 當除法或模運算的第二個引數為零時,此例外狀況就會發生。相關值是字串,可指出運算元和運算的類型。 |
您也可以使用 raise
語法產生自訂錯誤。