執行工作流程後,您可以在 Google Cloud 控制台存取工作流程執行結果,也可以使用 Google Cloud CLI 存取。
控制台
前往 Google Cloud 控制台的「Workflows」頁面。
如要存取工作流程的執行結果,請按一下工作流程名稱,前往「Workflow details」(工作流程詳細資料) 頁面。
如要查看特定執行的詳細資料,請在「Executions」(執行) 分頁中,按一下清單中的執行 ID,前往該執行的「Execution details」(執行詳細資料) 頁面。
在「摘要」分頁中,每項執行作業都會顯示下列資訊:
如要以步驟項目的清單形式查看工作流程執行記錄,請按一下「步驟」分頁標籤。詳情請參閱「查看執行步驟記錄」。
如要查看工作流程執行的記錄,請按一下「記錄」分頁標籤。
如要篩選執行記錄,請使用表格頂端的「Filter」(篩選器) 欄位。舉例來說,如要只顯示執行失敗的嘗試,請在篩選條件的文字欄位中輸入
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 語法引發自訂錯誤。