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:
|
| 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.
|
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:
|
| 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 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:
- 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, 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.