Probleme beheben

Auf dieser Seite erfahren Sie, wie Sie Probleme bei der Verwendung von Eventarc Advanced beheben.

CMEK-Probleme

Sie können kundenverwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden um Eventarc zu schützen. Die Schlüssel werden über den Cloud Key Management Service (Cloud KMS) erstellt und verwaltet. In der folgenden Tabelle werden verschiedene CMEK-Probleme und deren Behebung bei der Verwendung von Cloud KMS mit Eventarc beschrieben.

Probleme beim Erstellen oder Aktualisieren von Eventarc-Ressourcen

CMEK-Problem Fehlermeldung Beschreibung
Deaktivierter Schlüssel $KEY is not enabled, current state is: DISABLED

Der bereitgestellte Cloud KMS-Schlüssel wurde für eine Eventarc-Ressource deaktiviert. Ereignisse oder Nachrichten, die mit der Ressource verknüpft sind, sind nicht mehr geschützt.

Lösung :

  1. Schlüssel für eine Ressource anzeigen:
  2. Aktivieren Sie den Cloud KMS-Schlüssel wieder.
Kontingent überschritten Quota exceeded for limit

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

Lösung :

  • Beschränken Sie die Anzahl der Cloud KMS-Aufrufe.
  • Erhöhen Sie das Kontingent.
Weitere Informationen finden Sie unter Cloud KMS-Kontingente überwachen und anpassen.
Falsche Region Key region $REGION must match the resource to be protected

Die bereitgestellte KMS-Schlüsselregion unterscheidet sich von der Region der Ressource.

Lösung :

Verwenden Sie einen Cloud KMS-Schlüssel aus derselben Region.

Einschränkung der Organisationsrichtlinie project/PROJECT_ID violated org policy constraint

Eventarc ist in die folgenden beiden Einschränkungen der Organisationsrichtlinie eingebunden, um die CMEK-Nutzung in einer Organisation zu gewährleisten. Für vorhandene Eventarc-Ressourcen gilt keine Richtlinie, die nach dem Erstellen der Ressource festgelegt wird. Das Aktualisieren der Ressource kann jedoch fehlschlagen.

  • constraints/gcp.restrictNonCmekServices führt dazu, dass alle Anfragen zur Ressourcenerstellung ohne angegebenen Cloud KMS-Schlüssel fehlschlagen.

    Lösung :

    Geben Sie einen Cloud KMS-Schlüssel für die Eventarc Ressource an. Weitere Informationen finden Sie unter CMEKs für neue Eventarc-Ressourcen erforderlich machen.

  • constraints/gcp.restrictCmekCryptoKeyProjects schränkt die Cloud KMS-Schlüssel ein, die Sie zum Schutz einer Eventarc-Ressource verwenden können.

    Lösung :

    Verwenden Sie einen unterstützten Cloud KMS-Schlüssel aus einem zulässigen Eventarc Projekt, -Ordner oder einer zulässigen Organisation. Weitere Informationen finden Sie unter Cloud KMS-Schlüssel für ein Eventarc-Projekt einschränken.

Probleme bei der Ereignisübermittlung

CMEK-Problem Fehlermeldung Beschreibung
Deaktivierter Schlüssel $KEY is not enabled, current state is: DISABLED

Der bereitgestellte Cloud KMS-Schlüssel wurde für eine Eventarc-Ressource deaktiviert. Ereignisse oder Nachrichten, die mit der Ressource verknüpft sind, sind nicht mehr geschützt.

Lösung :

  1. Schlüssel für eine Ressource anzeigen:
  2. Aktivieren Sie den Cloud KMS-Schlüssel wieder.
Kontingent überschritten Quota exceeded for limit

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

Lösung :

  • Beschränken Sie die Anzahl der Cloud KMS-Aufrufe.
  • Erhöhen Sie das Kontingent.
Weitere Informationen finden Sie unter Cloud KMS-Kontingente überwachen und anpassen.
Berechtigungsfehler Permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on resource $KEY (or it may not exist)

Entweder ist der angegebene Cloud KMS-Schlüssel nicht vorhanden oder die Identity and Access Management (IAM)-Berechtigung ist nicht ordnungsgemäß konfiguriert.

Lösung :

Informationen zum Beheben von Problemen, die bei der Verwendung extern verwalteter Schlüssel über Cloud External Key Manager (Cloud EKM) auftreten können, finden Sie in der Cloud EKM-Fehlerreferenz.

HTTP-Fehler 400 Bad Request

Ein allgemeiner HTTP-Fehler 400 Bad Request für eine Pipeline deutet oft auf ein Problem mit der Transformation oder der Nachrichtenbindung oder auf ein Problem mit dem Zielendpunkt hin. Achten Sie auf Folgendes:

  • Suchen Sie in Ihren CEL-Ausdrücken nach Syntax- oder Logikfehlern. Ein Beispiel finden Sie in diesem Dokument unter Transformationsprobleme.
  • Prüfen Sie, ob die Ereignisnachrichten dem erwarteten Schema entsprechen. Ein Beispiel finden Sie in diesem Dokument unter Ungültiges Anfrageformat.
  • Wenn der Fehler vom Ereignisziel selbst zurückgegeben wird, prüfen Sie den Zielendpunkt.

HTTP-Fehler 503 Service Unavailable

Wenn ein HTTP-503 Service Unavailable Fehler für eine Pipeline auftritt, die Nachrichten über eine DNS-Adresse an ein Google-Ziel weiterleitet, z. B. Cloud Run, muss der private Google-Zugriff in dem im Netzwerkanhang verwendeten Subnetz aktiviert sein. Andernfalls kann die DNS-Adresse nicht aufgelöst werden.

Berechtigung beim Verwenden des Eventarc-Dienst-Agents verweigert

Wenn beim Erstellen einer Eventarc Advanced-Ressource der folgende Fehler auftritt, warten Sie einige Minuten (möglicherweise sieben) und versuchen Sie dann noch einmal, die Ressource zu erstellen:

Permission denied while using the Eventarc Service Agent. If you recently started to use
Eventarc, it may take a few minutes before all necessary permissions are propagated to the
Service Agent. Otherwise, verify that it has Eventarc Service Agent role.

Ein Dienst-Agent fungiert als Identität eines bestimmten Google Cloud Dienstes für ein bestimmtes Projekt. Weitere Informationen finden Sie unter Dienst-Agents und rufen Sie die Berechtigungen im Identity and Access Management (IAM) für die Eventarc Dienst-Agent-Rolle (roles/eventarc.serviceAgent) ab.

Wenn der vorherige Fehler weiterhin auftritt, nachdem Sie noch einmal versucht haben, die Ressource zu erstellen, führen Sie die folgenden Schritte aus, um zu prüfen, ob der Eventarc-Dienst-Agent vorhanden ist in Ihrem Google Cloud Projekt und die erforderliche Rolle hat:

  1. Rufen Sie in der Google Cloud Console die Seite IAM auf.

    IAM aufrufen

  2. Klicken Sie auf dem Tab Nach Hauptkonten ansehen das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen an.
  3. Suchen Sie in der Liste der Hauptkonten nach dem Eventarc-Dienst-Agent, der das folgende Format verwendet:

    service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com

  4. Prüfen Sie, ob der Dienst-Agent die Rolle Eventarc-Dienst-Agent hat. Wenn der Dienst-Agent nicht über die Rolle verfügt, dann weisen Sie die Rolle zu.

Probleme beim Veröffentlichen in Cloud Run-Jobs

In diesem Abschnitt wird beschrieben, wie Sie Probleme beheben, die beim Veröffentlichen von Ereignissen in einem Cloud Run-Job auftreten können. Eine End-to-End- Demonstration finden Sie in der Kurzanleitung.

HTTP-Fehler 403 Forbidden

Wenn beim Ausführen eines Cloud Run-Jobs, der die Jobkonfiguration überschreibt, z. B. durch Definieren einer Nachrichtenbindung, ein HTTP-Fehler 403 Forbidden auftritt, müssen Sie dem OAuth Dienstkonto, das von der Eventarc-Pipeline verwendet wird, die IAM-Rolle „Cloud Run-Entwickler (roles/run.developer)“ oder „Cloud Run-Jobausführer mit Überschreibungen (roles/run.jobsExecutorWithOverrides)“ zugewiesen haben. Weitere Informationen finden Sie unter Jobkonfiguration für eine bestimmte Ausführung überschreiben.

Ungültiges Anfrageformat

Beim Definieren einer Nachrichtenbindung, müssen Sie den http_endpoint_message_binding_template Schlüssel verwenden, um das Ereignis in das von der Cloud Run Admin APIerwartete Format zu transformieren, z. B. {"body": ""}.

Wenn der Schlüssel fehlt oder leer ist, entspricht die an den Job weitergeleitete Ereignisnachricht nicht dem erwarteten Schema für den Cloud Run-Jobendpunkt. Dadurch kann die Jobausführung nicht erfolgreich durch die Ereignisnachricht ausgelöst werden.

Transformationsprobleme

Wenn Ihre Ereignisdaten beim Angeben einer Nachrichtenbindung, nicht wie erwartet transformiert werden können oder nicht transformiert werden, prüfen Sie, ob die Syntax Ihres CEL-Ausdrucks korrekt ist.

Falscher CEL-Ausdruck

Im folgenden Ausdruck werden beispielsweise Substitutionen mit Anführungszeichen wie \"${message.data}\" verwendet, um Variablenwerte auszuwerten und einzufügen, obwohl stattdessen CEL-Erweiterungsfunktionen verwendet werden sollten:

cel_expression: "{\"body\":{\"overrides\":{\"containerOverrides\":[{\"env\":[{\"name\":\"CLOUD_EVENT_PAYLOAD\",\"value\":\"${message.data}\"},{\"name\":\"CLOUD_EVENT_ATTRIBUTES\",\"value\":\"${message.attributes}\"}]}]}}}"

Außerdem sind Ereignisattribute Felder der obersten Ebene im Nachrichtenobjekt und nicht in einem separaten Attributfeld wie message.attributes enthalten. Auf jedes Attribut einer eingehenden CloudEvents-Nachricht sollte mit dem message.key Wert zugegriffen werden, wobei key der Name des Attributs ist.

Korrekter CEL-Ausdruck

Um diese Probleme zu beheben, hängen Sie die Funktion toJsonString() direkt an das Objekt an, um die Nachrichtendaten als JSON-String zu übergeben. Verwenden Sie message.removeFields(["data"]).toJsonString(), um die Ereignis attribute als JSON-String zu erfassen und die Nutzlast auszuschließen. Beispiel:

cel_expression: "{\"body\":{\"overrides\":{\"containerOverrides\":[{\"env\":[{\"name\":\"CLOUD_EVENT_PAYLOAD\",\"value\":\"message.data.toJsonString()\"},{\"name\":\"CLOUD_EVENT_ATTRIBUTES\",\"value\":\"message.removeFields(['data']).toJsonString()\"}]}]}}}"

Weitere Informationen finden Sie unter Empfangene Ereignisse transformieren.

Nächste Schritte