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 :
|
| Kontingent überschritten | Quota exceeded for limit |
Ihr Kontingentlimit für Cloud KMS-Anfragen wurde erreicht. Lösung :
|
| 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.
|
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 :
|
| Kontingent überschritten | Quota exceeded for limit |
Ihr Kontingentlimit für Cloud KMS-Anfragen wurde erreicht. Lösung :
|
| 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:
- Rufen Sie in der Google Cloud Console die Seite IAM auf.
- Klicken Sie auf dem Tab Nach Hauptkonten ansehen das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen an.
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- 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.