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. So rufen Sie den für eine Ressource verwendeten Schlüssel auf:
  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.
Region stimmt nicht überein 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 für Organisationsrichtlinien 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.

  • Mit constraints/gcp.restrictCmekCryptoKeyProjects werden die Cloud KMS-Schlüssel eingeschränkt, 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 Eventarc-Organisation. Weitere Informationen finden Sie unter Cloud KMS-Schlüssel für ein Eventarc-Projekt einschränken.

Probleme, die während der Bereitstellung von Events auftreten

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. So rufen Sie den für eine Ressource verwendeten Schlüssel auf:
  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 IAM-Berechtigung (Identity and Access Management) ist nicht ordnungsgemäß konfiguriert.

Lösung:

Informationen zur Behebung 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. Beachte 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 Ereignisnachrichten dem erwarteten Schema entsprechen. Ein Beispiel finden Sie in diesem Dokument unter Ungültiges Anfrageformat.
  • Wenn der Fehler von der Ereigniszielvorrichtung selbst zurückgegeben wird, prüfen Sie den Zielendpunkt.

HTTP-Fehler 503 Service Unavailable

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

Berechtigung bei Verwendung 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 IAM-Berechtigungen (Identity and Access Management) für die Rolle des Eventarc-Dienst-Agents (roles/eventarc.serviceAgent) ab.

Wenn der vorherige Fehler weiterhin auftritt, nachdem Sie versucht haben, die Ressource noch einmal zu erstellen, führen Sie die folgenden Schritte aus, um zu prüfen, ob der Eventarc-Dienst-Agent in Ihrem Google Cloud -Projekt vorhanden ist 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, 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, prüfen Sie, ob Sie dem OAuth-Dienstkonto, das von der Eventarc-Pipeline verwendet wird, die IAM-Rolle Cloud Run-Entwickler (roles/run.developer) oder Cloud Run Jobs Executor With Overrides (roles/run.jobsExecutorWithOverrides) zugewiesen haben. Weitere Informationen finden Sie unter Jobkonfiguration für eine bestimmte Ausführung überschreiben.

Ungültiges Anfrageformat

Wenn Sie eine Nachrichtenbindung definieren, müssen Sie den Schlüssel http_endpoint_message_binding_template verwenden, um das Ereignis in das von der Cloud Run Admin API erwartete 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-Job-Endpunkt. Dadurch kann der Job nicht durch die Ereignisnachricht ausgelöst werden.

Transformationsprobleme

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

Falscher CEL-Ausdruck

Im folgenden Ausdruck werden beispielsweise Substitutionen für in Anführungszeichen gesetzte Strings 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 auf oberster Ebene im Nachrichtenobjekt und nicht in einem separaten Attributfeld wie message.attributes enthalten. Auf jedes Attribut einer eingehenden CloudEvents-Nachricht sollte mit dem Wert message.key zugegriffen werden, wobei key der Name des Attributs ist.

Richtiger 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. Wenn Sie die Ereignisattribute als JSON-String erfassen möchten, ohne die Nutzlast einzubeziehen, verwenden Sie message.removeFields(["data"]).toJsonString(). 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