Nachdem Sie einen Workflow ausgeführt haben, können Sie in der Google Cloud Console oder mit der Google Cloud CLI auf die Ergebnisse der Workflowausführung zugreifen.
Console
Rufen Sie in der Google Cloud Console die Seite Workflows auf.
Klicken Sie auf den Namen des Workflows, um auf die Seite Workflow-Details zuzugreifen und so die Ausführungsergebnisse des Workflows anzuzeigen.
Wenn Sie Details zu einer bestimmten Ausführung aufrufen möchten, klicken Sie auf dem Tab Ausführungen in der Liste auf die Ausführungs-ID, um die Seite Ausführungsdetails aufzurufen.
Auf dem Tab Zusammenfassung sind für jede Ausführung die folgenden Informationen verfügbar:
- Ausführungs-ID: Die eindeutige Kennung der Workflow-Ausführung.
- Ausführungsstatus: Gibt den Endstatus des Workflows an, einschließlich des aktuellen oder letzten Workflowschritts.
- Ausführung erstellt: Der Zeitpunkt, zu dem die Ausführung initiiert wurde.
- Ausführungsstart: Der Zeitpunkt, zu dem die Ausführung und die Ausführung von Schritten begonnen hat.
- Ausführungsende: Der Zeitpunkt, an dem die Ausführung beendet wurde.
- Ausführungsdauer: Gesamtzeit, die während der Ausführung verstrichen ist. Dies kann ein Hinweis auf Netzwerkfehler oder Verbindungsprobleme sein.
- Workflowname: Der Name des Workflows.
- Workflow-Version: die aktuelle Version zum Zeitpunkt der Ausführung.
- Aufruflogebene: Die Ebene des Aufruf-Loggings, die während der Ausführung angewendet wird. Weitere Informationen finden Sie unter Anruflisten.
- Eingabe: Die Laufzeitargumente, die an den Workflow übergeben wurden, sofern vorhanden.
- Ausgabe: Die Ausgabe des Workflows. Wenn die Ausführung fehlgeschlagen ist, ist hier die Ausnahme enthalten, die zum Fehler der Ausführung geführt hat. Weitere Informationen finden Sie in diesem Dokument unter Karten für Ausführungsfehler.
Wenn Sie den Workflow-Ausführungsverlauf als Liste von Schritteinträgen aufrufen möchten, klicken Sie auf den Tab Schritte. Weitere Informationen finden Sie unter Verlauf der Ausführungsschritte ansehen.
Klicken Sie auf den Tab Logs, um die Logs für eine Workflow-Ausführung aufzurufen.
Verwenden Sie das Feld Filter oben in der Tabelle, um die Ausführungslogs zu filtern. Wenn Sie beispielsweise nur fehlgeschlagene Ausführungsversuche anzeigen möchten, geben Sie in das Textfeld des Filters
failedein.
gcloud
Geben Sie den folgenden Befehl ein, um eine vollständige Liste der Ausführungen eines Workflows aufzurufen:
gcloud workflows executions list WORKFLOW_NAMEErsetzen Sie
WORKFLOW_NAMEdurch den Namen Ihres Workflows. Kopieren Sie die Ausführungs-ID der Ausführung, für die Sie Informationen erhalten möchten.Geben Sie den folgenden Befehl ein, um die Ausführungslogs eines Workflows aufzurufen:
gcloud workflows executions describe \ --workflow=WORKFLOW_NAME \ EXECUTION_IDErsetzen Sie Folgendes:
WORKFLOW_NAME: der Name des WorkflowsEXECUTION_ID: die eindeutige ID der Ausführung
Die Ausgabe dieses Befehls sieht in etwa so aus:
Die Ausgabe enthält die folgenden Informationen: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: die Laufzeitargumente, die an den Workflow übergeben wurden, sofern vorhandenendTime: der Zeitpunkt, an dem die Ausführung beendet wurdeerror: die Fehlermeldung, die als Teil der Ausnahme ausgelöst wurde, die zum Fehler bei der Ausführung geführt hatname: der vollständige Name der Ausführung, einschließlich Projektname, Speicherort des Workflows, Name des Workflows und Ausführungs-IDstartTime: der Zeitpunkt, an dem die Ausführung gestartet wurdestate: gibt den Endstatus des Workflows anstatus: der aktuelle oder letzte Workflowschritt der AusführungworkflowRevisionID: die aktuelle Überarbeitung zum Zeitpunkt der Ausführung
Karten mit Ausführungsfehlern
Wenn ein Workflow während der Ausführung einen Fehler auslöst, der nicht in einem try/except-Block erfasst wird, schlägt die Ausführung fehl und eine Fehlerzuordnung (ein JSON-Wörterbuch), die den Fehler beschreibt, wird zurückgegeben.
Fehler, die während der Workflowausführung ausgelöst werden, enthalten Tags, anhand derer Sie die Fehlerursache ermitteln können. Der von einem Connector zurückgegebene Fehler kann beispielsweise zwei Schlüssel (tags und message) haben, wie im Folgenden dargestellt:
{'tags': ['SystemError'], 'message': 'an error has occurred'}
Es können mehrere Tags vorhanden sein. Mit einem Ausdruck können Sie nach einem bestimmten Tag suchen. Beispiel:
${'SystemError' in e.tags}
Fehlerdaten für den Zugriff als String zurückgeben
Bei einigen Connectors und HTTP-APIs werden Fehler als Strings serialisiert, bevor sie zurückgegeben werden. Sie können Standardbibliotheksfunktionen verwenden, um eine Nutzlast auf den ursprünglichen Fehler zurückzusetzen. Wenn Sie beispielsweise einen Fehlerstring in eine Map konvertieren möchten, können Sie die Funktionen json.decode und text.encode verwenden:
json.decode(text.encode(ERROR_FROM_API))
Fehler-Tags
Die Bedeutung verschiedener Fehlertags wird in der folgenden Tabelle beschrieben.
| Tag | Beschreibung |
|---|---|
| AuthError | Wird ausgelöst, wenn Anmeldedaten für eine HTTP-Anfrage generiert werden. |
| ConnectionError | Wird ausgelöst, wenn eine Verbindung mit dem Endpunkt erfolgreich hergestellt wurde, aber während der Datenübertragung ein Problem mit der Verbindung auftritt. Die Verbindung wird beendet, bevor eine vollständige Antwort empfangen wird, und eine Nachricht wurde möglicherweise nicht an den Endpunkt gesendet. Wiederholungsversuche sind möglicherweise nicht idempotent. |
| ConnectionFailedError | Wird ausgelöst, wenn keine Verbindung zum API-Endpunkt hergestellt werden kann. Zum Beispiel aufgrund eines falschen Domainnamens, aufgrund von Problemen mit der DNS-Auflösung oder aufgrund anderer Netzwerkprobleme. Wiederholungsversuche sind idempotent. |
| HttpError | Wird ausgelöst, wenn eine HTTP-Anfrage mit einem HTTP-Fehlerstatus fehlschlägt. Wenn diese Ausnahme ausgelöst wird, ist die Antwort eine Zuordnung mit den folgenden Elementen:
|
| IndexError | Wird ausgelöst, wenn ein Sequenzunterskript außerhalb des Bereichs liegt. |
| KeyError | Wird ausgelöst, wenn ein Zuordnungsschlüssel nicht in den vorhandenen Schlüsseln gefunden wird. |
| OperationError | Wird ausgelöst, wenn ein Vorgang mit langer Ausführungszeit nicht erfolgreich abgeschlossen wird. |
| ParallelNestingError | Wird ausgelöst, wenn die maximale Tiefe, in der parallele Schritte verschachtelt werden können, überschritten wird. |
| RecursionError | Wird ausgelöst, wenn der Interpreter erkennt, dass die maximale Aufrufstapeltiefe überschritten wurde. |
| ResourceLimitError | Wird ausgelöst, wenn ein Ressourcenlimit aufgebraucht ist. Bei internen Fehlern kann dieser Fehlertyp nicht erfasst werden und führt zu einem sofortigen Ausführungsfehler. |
| ResponseTypeError | Wird ausgelöst, wenn ein lang andauernder Vorgang eine Antwort mit dem falschen Typ zurückgibt. |
| SystemError | Wird ausgelöst, wenn der Interpreter einen internen Fehler findet. |
| TimeoutError | Wird ausgelöst, wenn eine Systemfunktion auf Systemebene das Zeitlimit überschreitet. |
| TypeError | Wird ausgelöst, wenn ein Vorgang oder eine Funktion auf ein Objekt mit nicht kompatiblem Typ angewendet wird. Der verknüpfte Wert ist ein String mit Details zur Typabweichung. |
| UnhandledBranchError | Wird ausgelöst, wenn in einem oder mehreren Zweigen oder Iterationen ein unbehandelter Laufzeitfehler auftritt, bis zu einer maximalen Anzahl. |
| ValueError | Wird ausgelöst, wenn ein Vorgang oder eine Funktion ein Argument mit dem richtigen Typ, aber einem falschen Wert erhält, und die Situation nicht durch eine präzisere Ausnahme beschrieben wird, z. B. durch IndexError. |
| ZeroDivisionError | Wird ausgelöst, wenn das zweite Argument eines Divisions- oder Modulo-Vorgangs null ist. Der zugehörige Wert ist ein String, der den Typ der Operanden und den Vorgang angibt. |
Mit der Syntax raise können Sie auch benutzerdefinierte Fehler auslösen.
Nächste Schritte
- Übersicht zum Debugging
- Bekannte Probleme bei Workflows
- Ausführungsprotokolle an Cloud Logging senden
- Fehlerbehebung