Nachdem Sie einen Workflow ausgeführt haben, können Sie über die Google Cloud Console oder die Google Cloud CLI auf die Ergebnisse der Workflowausführung zugreifen.
Console
Öffnen Sie in der Google Cloud Console die Seite Workflows.
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 zu jeder Ausführung die folgenden Informationen zu sehen:
- Ausführungs-ID: Die eindeutige Kennung der Workflowausfü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 gestartet wurde.
- Ausführungsstart: Der Zeitpunkt, zu dem die Ausführung gestartet wurde und Schritte ausgeführt wurden.
- 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-Überarbeitung: die aktuelle Überarbeitung zum Zeitpunkt der Ausführung.
- Aufruflogebene: Ebene des Aufruf-Loggings, die während der Ausführung angewendet wird. Weitere Informationen finden Sie unter Anrufprotokollierung.
- 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 Fehlerzuordnungskarten für die Ausführung.
Wenn Sie den Ausführungsverlauf des Workflows als Liste von Schritten aufrufen möchten, klicken Sie auf den Tab Schritte. Weitere Informationen finden Sie unter Verlauf der Ausführungsschritte ansehen.
Klicken Sie auf den Tab Protokolle, um die Protokolle für eine Workflowausfü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
failed
ein.
gcloud
Geben Sie den folgenden Befehl ein, um eine vollständige Liste der Ausführungen eines Workflows aufzurufen:
gcloud workflows executions list WORKFLOW_NAME
Ersetzen Sie
WORKFLOW_NAME
durch 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_ID
Ersetzen Sie Folgendes:
WORKFLOW_NAME
: der Name des WorkflowsEXECUTION_ID
: die eindeutige ID der Ausführung
Die Ausgabe dieses Befehls sieht in etwa so aus:
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
: den aktuellen oder letzten 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, die in etwa so aussehen:
{'tags': ['SystemError'], 'message': 'an error has occurred'}
Es können mehrere Tags vorhanden sein. Wenn Sie nach einem bestimmten Tag suchen möchten, können Sie einen Ausdruck verwenden. Beispiel:
${'SystemError' in e.tags}
Daten zu Zugriffsfehlern werden als String zurückgegeben
Einige Connectoren und HTTP-APIs serialisieren Fehler als Strings, 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 Karte 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 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 wird möglicherweise nicht an den Endpunkt gesendet. Wiederholungen 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 langwieriger Vorgang 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 vom 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 nicht behandelter Laufzeitfehler auftritt, bis eine maximale Anzahl erreicht wird. |
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
- Debugging – Übersicht
- Bekannte Probleme mit Workflows
- Ausführungsprotokolle an Cloud Logging senden
- Fehlerbehebung