Probleme beheben

Auf dieser Seite erfahren Sie, wie Sie Probleme beheben können, die bei der Verwendung von Workflows

Weitere Informationen finden Sie unter Workflows überwachen und Workflows debuggen.

Bereitstellungsfehler

Wenn ein Workflow bereitgestellt wird, überprüft Workflows, ob der Quellcode fehlerfrei ist und der Sprachsyntax entspricht. Workflows geben einen Fehler zurück, wenn einer gefunden wird. Die häufigsten Arten von Bereitstellungsfehlern sind:

  • Verweis auf eine nicht definierte Variable, einen nicht definierten Schritt oder untergeordneten Workflow
  • Falsche Syntax
    • Falscher Einzug
    • Fehlende oder irrelevante {, }, ", - oder :

Der folgende Quellcode gibt beispielsweise einen Bereitstellungsfehler aus, da die Rückgabeanweisung auf die nicht definierte Variable varC verweist:

- step1:
    assign:
    - varA: "Hello"
    - varB: "World"
- step2:
    return: ${varC + varB}

Dieser falsche Quellcode wird in der folgenden Google Cloud Console verwendet und gcloud CLI.

Console

Wenn ein Bereitstellungsfehler auftritt, wird in Workflows die Fehlermeldung in einem Banner auf der Seite Workflow bearbeiten angezeigt: Bereitstellungsfehler Die Fehlermeldung kennzeichnet das Problem im Quellcode und gibt nach Möglichkeit den Ursprung des Fehlers an:

Could not deploy workflow: failed to build: error in step step2: error
evaluating return value: symbol 'varC' is neither a variable nor a
sub-workflow name (Code: 3)

gcloud

Wenn Sie den Befehl gcloud workflows deploy ausführen, gibt Workflows eine Fehlermeldung an die Befehlszeile zurück, wenn die Bereitstellung fehlschlägt. Die Fehlermeldung kennzeichnet das Problem im Quellcode und gibt nach Möglichkeit den Ursprung des Fehlers an:

ERROR: (gcloud.workflows.deploy) [INVALID_ARGUMENT] failed to build:
error in step step2: error evaluating return value: symbol 'varC' is neither
a variable nor a sub-workflow name

Bearbeiten Sie den Quellcode des Workflows, um das Problem zu beheben. Verweisen Sie in diesem Fall auf varA anstelle von varC.

HTTP-Fehler mit Dienstkontoberechtigungen 403

Die Workflowausführung schlägt fehl, wenn ein HTTP-Server einen Fehlercode zurückgibt von 403. Beispiel:

Permission 'iam.serviceaccounts.actAs' denied on service
account PROJECT_NUMBER-compute@developer.gserviceaccount.com (or it may not exist).

oder

SERVICE_ACCOUNT does not have storage.objects.create access to the Google Cloud
Storage object. Permission 'storage.objects.create' denied on resource (or it may not exist).

Jeder Workflow ist einem IAM-Dienstkonto am wenn der Workflow erstellt wird. Um dieses Problem zu beheben, müssen Sie dem Dienst eine oder mehrere IAM-Rollen, die das Minimum Berechtigungen, die zum Verwalten Ihres Workflows erforderlich sind. Wenn Sie beispielsweise möchten, dass Ihr Workflow Logs an Cloud Logging sendet, muss dem Dienstkonto, das den Workflow ausführt, eine Rolle mit der Berechtigung logging.logEntries.create zugewiesen werden. Weitere Informationen finden Sie unter Workflowberechtigungen für den Zugriff auf Google Cloud-Ressourcen gewähren

HTTP-Fehler 429 Too many requests

Es gibt eine maximale Anzahl aktiver Workflows Ausführungen, die gleichzeitig ausgeführt werden können. Wenn dieses Kontingent erschöpft ist deaktiviert ist oder das Kontingent für zurückgestellte Ausführungen erreicht, schlagen neue Ausführungen mit dem HTTP-Status 429 Too many requests fehl Code.

Mit der Backlog-Ausführung können Sie Workflowausführungen in die Warteschlange stellen, sobald das Kontingent für parallele Ausführungen erreicht ist. Standardmäßig ist das Ausführungsrückprotokoll für alle Anfragen (einschließlich der von Cloud Tasks ausgelösten Anfragen) mit dem folgende Ausnahmen:

  • Wenn Sie eine Ausführung mit einem executions.run- oder executions.create-Connector in einem Workflow erstellen, ist das Backlogging der Ausführung standardmäßig deaktiviert. Sie können sie konfigurieren, indem Sie das Feld disableConcurrencyQuotaOverflowBuffering der Ausführung explizit auf false setzen.
  • Bei Ausführungen, die von Pub/Sub ausgelöst werden, ist das Backlogging deaktiviert und können nicht konfiguriert werden.

Weitere Informationen finden Sie unter Ausführungsbacklogging verwalten

Sie können auch eine Cloud Tasks-Warteschlange aktivieren, um untergeordnete Workflows mit einer von Ihnen festgelegten Rate auszuführen, um eine bessere Ausführungsrate zu erzielen. In diesem Fall sollten Sie das Ausführen von Backlogs deaktivieren.

Fehler bei projektübergreifenden Dienstkontoberechtigungen

Wenn Sie den Fehler PERMISSION_DENIED erhalten, wenn Sie versuchen, einen projektübergreifenden Dienstkonto zum Bereitstellen eines Workflows. Stellen Sie sicher, dass der Die boolesche Einschränkung iam.disableCrossProjectServiceAccountUsage wird nicht erzwungen für Ihr Projekt und ob Sie das Dienstkonto korrekt eingerichtet haben. Für Weitere Informationen finden Sie unter Workflow mit einem projektübergreifenden Dienst bereitstellen Konto.

Der Ressourcenname muss RFC 1123 entsprechen.

Die Workflowausführung schlägt fehl, wenn ein HTTP-Server mit dem Fehlercode 400 antwortet. Beispiel:

"description": "must conform to RFC 1123: only lowercase, digits, hyphens,
and periods are allowed, must begin and end with letter or digit, and less
than 64 characters."

Achten Sie darauf, dass der Ressourcenname dem DNS-Label folgt, um dieses Problem zu beheben wie in den RFC 1123 und beim Zuweisen von Variablen verketten Sie strings und Ausdrücke korrekt.

Eine Variable kann beispielsweise nicht so zugewiesen werden: - string: hello-${world}. Gehen Sie stattdessen so vor:

YAML

  - assign_vars:
      assign:
          - string: "hello"
          - string: ${string+" "+"world"}

JSON

  [
    {
      "assign_vars": {
        "assign": [
          {
            "string": "hello"
          },
          {
            "string": "${string+" "+"world"}"
          },
        ]
      }
    }
  ]

Ausdrücke mit Doppelpunkten

In YAML können Ausdrücke mit Doppelpunkten unerwartetes Verhalten verursachen, wenn der Doppelpunkt als Definition einer Zuordnung interpretiert wird. Auch wenn es möglich ist, und den Workflow ausführen, ist die Ausgabe nicht wie erwartet.

Wenn Sie einen Workflow über die Google Cloud Console erstellen, kann er nicht in der Google Cloud Console visuell gerendert werden. Warnung ähnlich der folgenden:

Warnung bei der Workflowerstellung

Sie können dieses Problem beheben, indem Sie den YAML-Ausdruck in einfache Anführungszeichen setzen:

Empfohlen: '${"a: " +string(a)}'

Nicht empfohlen: ${"a: " +string(a)}

Schlüssel mit nicht alphanumerischen Zeichen zuordnen

Beim Zugriff auf Kartenschlüssel mit nicht alphanumerischen Zeichen (z. B. Ausrufezeichen in "special!key": value), müssen Sie den Schlüsselnamen in Anführungszeichen. Wenn der Schlüsselname nicht in Anführungszeichen gesetzt ist, kann der Workflow nicht bereitgestellt. Wenn Sie beispielsweise versuchen, den folgenden Quellcode bereitzustellen, wird ein token recognition error wird ausgelöst:

- init:
    assign:
    - var:
        key:
            "special!key": bar
- returnOutput:
    return: '${"foo" + var.key[special!key]}'

Um dieses Problem zu beheben, verwenden Sie stattdessen den folgenden Code, um die Ausgabe zurückzugeben:

'${"foo" + var.key["special!key"]}'

Mehrere Ausdrücke in einer Liste

Mehrere Ausdrücke innerhalb einer Liste verwenden, z. B. Iterationsbereich Beispiel ist keine gültige YAML-Datei:

[${rangeStart}, ${rangeEnd}])

Sie haben folgende Möglichkeiten, dieses Problem zu beheben:

  • Platzieren Sie die Liste innerhalb eines Ausdrucks:

    ${[rangeStart, rangeEnd]}

  • Setzen Sie jeden Ausdruck in einfache Anführungszeichen:

    ['${rangeStart}', '${rangeEnd}']

Das Ergebnis ist dann wie erwartet eine Liste mit zwei Werten.

Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK)

Bei der Verwendung von Cloud KMS mit Workflows In der folgenden Tabelle werden verschiedene Probleme und wie Sie sie lösen können.

Problem Beschreibung
Berechtigung cloudkms.cryptoKeyVersions.useToEncrypt ist abgelehnt Entweder ist der angegebene Cloud KMS-Schlüssel nicht vorhanden oder die Berechtigung ist nicht ordnungsgemäß konfiguriert.

Lösung:

Schlüsselversion ist nicht aktiviert Die bereitgestellte Cloud KMS-Schlüsselversion wurde deaktiviert.

Lösung: Erneute Aktivierung Die Cloud KMS-Schlüsselversion

Schlüsselbundregion entspricht nicht der zu schützenden Ressource Die angegebene KMS-Schlüsselbundregion unterscheidet sich von der Region der zu optimieren.

Lösung: Geschützten Cloud KMS-Schlüsselbund verwenden für den Workflow aus derselben Region. (Beachten Sie, dass diese sich projects.) Weitere Informationen finden Sie unter Cloud KMS-Standorte und Workflows-Standorte.

Cloud KMS-Kontingent überschritten Ihr Kontingentlimit für Cloud KMS-Anfragen wurde erreicht.

Lösung: Begrenzen Sie die Anzahl der Cloud KMS-Aufrufe oder erhöhen Sie das Kontingentlimit. Weitere Informationen finden Sie unter Cloud KMS-Kontingente.

Die angeforderte Entität wurde bei Verwendung des Cloud Run-Connectors nicht gefunden

Die Workflowausführung schlägt fehl, wenn ein HTTP-Server einen Fehlercode zurückgibt 404, wenn Sie versuchen, die Connector-Methode zu verwenden, googleapis.run.v1.namespaces.jobs.create

Bei dieser Methode müssen Sie den Speicherort des HTTP-Endpunkts angeben. Für Beispiel: us-central1 oder asia-southeast1. Wenn Sie keinen Standort angeben, wird der globale Endpunkt https://run.googleapis.com verwendet. Dieser Standort unterstützt jedoch nur Listenmethoden.

Um dieses Problem zu beheben, geben Sie beim Anrufen des Connectors ein location-Argument an. Informationen zu Standortoptionen der Cloud Run Admin API finden Sie unter Dienstendpunkte.

Ressourcenlimits

Wenn Ressourcenlimits oder Fehler wie ResourceLimitError, MemoryLimitExceededError oder ResultSizeLimitExceededError auftreten, können Sie Speicherplatz freigeben, indem Sie Variablen löschen. So können Sie z. B. Arbeitsspeicher freigeben, der für weitere Schritte. Möglicherweise haben Sie auch Anrufe mit Ergebnissen, die Sie nicht interessieren. Diese Ergebnisse können Sie dann ganz weglassen.

YAML-Einzug

Der YAML-Einzug ist sinnvoll und sollte mindestens zwei Leerzeichen pro Einrückungsebene umfassen. Unzureichende Einzüge können Fehler verursachen. Eine neue Ebene sollte mindestens zwei Leerzeichen zum Anfang des Textes in der vorherigen Zeile.

Im folgenden Beispiel wird fälschlicherweise ein Listenelement angegeben, das eine Karte mit stepName- und call-Elementen:

- stepName:
  call: sys.log

Stattdessen sollten Sie die nachfolgende Zeile um zwei Leerzeichen einrücken, um call in stepName zu verschachteln:

- stepName:
    call: sys.log

Verwenden Sie zum Einrücken von Zeilen Leerzeichen anstelle von Tabulatorzeichen.

Nächste Schritte