Questa pagina mostra come risolvere i problemi che potresti riscontrare quando utilizzi Eventarc Advanced.
Problemi relativi a CMEK
Puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per proteggere Eventarc. Le chiavi vengono create e gestite tramite Cloud Key Management Service (Cloud KMS). La tabella seguente descrive diversi problemi di CMEK e come risolverli quando utilizzi Cloud KMS con Eventarc.Problemi che si verificano durante la creazione o l'aggiornamento delle risorse Eventarc
| Problema CMEK | Messaggio di errore | Descrizione |
|---|---|---|
| Chiave disattivata | $KEY is not enabled, current state is: DISABLED |
La chiave Cloud KMS fornita è stata disabilitata per una risorsa Eventarc. Gli eventi o i messaggi associati alla risorsa non sono più protetti. Soluzione:
|
| Quota superata | Quota exceeded for limit |
Hai raggiunto il limite di quota per le richieste Cloud KMS. Soluzione:
|
| Regione non corrispondente | Key region $REGION must match the resource to be protected |
La regione della chiave KMS fornita è diversa da quella della risorsa. Soluzione: Utilizza una chiave Cloud KMS della stessa regione. |
| Vincolo delle policy dell'organizzazione | project/PROJECT_ID violated org policy constraint |
Eventarc è integrato con i seguenti due vincoli della policy dell'organizzazione per garantire l'utilizzo di CMEK in un'organizzazione. Qualsiasi risorsa Eventarc esistente non è soggetta a un criterio impostato dopo la creazione della risorsa; tuttavia, l'aggiornamento della risorsa potrebbe non riuscire.
|
Problemi che si verificano durante la pubblicazione degli eventi
| Problema CMEK | Messaggio di errore | Descrizione |
|---|---|---|
| Chiave disattivata | $KEY is not enabled, current state is: DISABLED |
La chiave Cloud KMS fornita è stata disabilitata per una risorsa Eventarc. Gli eventi o i messaggi associati alla risorsa non sono più protetti. Soluzione:
|
| Quota superata | Quota exceeded for limit |
Hai raggiunto il limite di quota per le richieste Cloud KMS. Soluzione:
|
| Errore di autorizzazione | Permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on
resource $KEY (or it may not exist) |
La chiave Cloud KMS fornita non esiste o l'autorizzazione Identity and Access Management (IAM) non è configurata correttamente. Soluzione:
|
Per risolvere i problemi che potresti riscontrare durante l'utilizzo di chiavi gestite esternamente tramite Cloud External Key Manager (Cloud EKM), consulta Messaggio di errore Cloud EKM.
Errori HTTP 400 Bad Request
La visualizzazione di un errore HTTP 400 Bad Request generico per una pipeline spesso indica
un problema di trasformazione o di binding dei messaggi oppure un problema relativo all'endpoint
di destinazione. Assicurati di svolgere le seguenti operazioni:
- Cerca errori di sintassi o logici nelle espressioni CEL. Ad esempio, in questo documento, consulta Problemi di trasformazione.
- Verifica che i messaggi di evento siano conformi allo schema previsto. Ad esempio, in questo documento, vedi Formato della richiesta non valido.
- Se la destinazione dell'evento restituisce l'errore, controlla l'endpoint di destinazione.
Errori HTTP 503 Service Unavailable
Se riscontri un errore HTTP 503 Service Unavailable per una pipeline che instrada i messaggi a una destinazione Google utilizzando un indirizzo DNS, ad esempio Cloud Run, assicurati che l'accesso privato Google sia abilitato nella subnet utilizzata nel collegamento di rete; in caso contrario, l'indirizzo DNS non può essere risolto.
Autorizzazione negata durante l'utilizzo del service agent Eventarc
Se si verifica il seguente errore durante il tentativo di creare una risorsa Eventarc Advanced, attendi qualche minuto (potenzialmente sette) e poi riprova a creare la risorsa:
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.
Un service agent funge da identità di un determinato servizio per un progetto specifico. Google Cloud Per saperne di più, consulta
Agenti di servizio e visualizza le
autorizzazioni Identity and Access Management (IAM) per il
ruolo Agente di servizio
Eventarc (roles/eventarc.serviceAgent).
Se continui a riscontrare l'errore precedente dopo aver tentato di creare di nuovo la risorsa, completa i seguenti passaggi per verificare che l'agente di servizio Eventarc esista nel tuo progetto Google Cloud e disponga del ruolo necessario:
- Nella console Google Cloud vai alla pagina IAM.
- Nella scheda Visualizza per entità, seleziona la casella di controllo Includi concessioni di ruoli fornite da Google.
Nell'elenco dei principal, individua l'agente di servizio Eventarc, che utilizza il seguente formato:
service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com- Verifica che l'agente di servizio disponga del ruolo Agente di servizio Eventarc. Se il service agent non ha il ruolo, concedi il ruolo.
Problemi di pubblicazione dei job Cloud Run
Questa sezione descrive come risolvere i problemi che potresti riscontrare durante la pubblicazione di eventi in un job Cloud Run. Per una dimostrazione end-to-end, consulta la guida rapida.
Errori HTTP 403 Forbidden
Se si verifica un errore HTTP 403 Forbidden durante il tentativo di eseguire un job Cloud Run che esegue l'override della configurazione del job, ad esempio definendo un binding del messaggio, assicurati di aver concesso il ruolo IAM Cloud Run Developer (roles/run.developer) o Cloud Run Jobs Executor With Overrides (roles/run.jobsExecutorWithOverrides) al account di servizio OAuth utilizzato dalla pipeline Eventarc. Per saperne di più, consulta Eseguire l'override della configurazione del job per un'esecuzione specifica.
Formato della richiesta non valido
Quando definisci un
binding del messaggio,
devi utilizzare la chiave http_endpoint_message_binding_template per trasformare l'evento nel formato previsto dall'API Cloud Run Admin, ad esempio {"body": ""}.
Se la chiave è mancante o vuota, il messaggio di evento indirizzato al job non rispetta lo schema previsto per l'endpoint del job Cloud Run e questo impedisce l'attivazione corretta dell'esecuzione del job da parte del messaggio di evento.
Problemi di trasformazione
Se i dati degli eventi non possono essere trasformati o non vengono trasformati come previsto quando specifichi un binding del messaggio, assicurati che la sintassi dell'espressione CEL sia corretta.
Espressione CEL errata
Ad esempio, nella seguente espressione, le sostituzioni di stringhe tra virgolette, come
\"${message.data}\", vengono utilizzate per valutare e inserire i valori delle variabili quando
invece dovrebbero essere utilizzate le funzioni di estensione CEL:
cel_expression: "{\"body\":{\"overrides\":{\"containerOverrides\":[{\"env\":[{\"name\":\"CLOUD_EVENT_PAYLOAD\",\"value\":\"${message.data}\"},{\"name\":\"CLOUD_EVENT_ATTRIBUTES\",\"value\":\"${message.attributes}\"}]}]}}}"
Inoltre, gli attributi evento sono campi di primo livello dell'oggetto messaggio e
non sono contenuti in un campo attributi separato, ad esempio message.attributes.
A ogni attributo di un messaggio CloudEvents in entrata deve essere eseguito l'accesso utilizzando il valore
message.key, dove key è
il nome dell'attributo.
Espressione CEL corretta
Per risolvere questi problemi, aggiungi la funzione toJsonString() direttamente all'oggetto per passare i dati del messaggio come stringa JSON. Per acquisire gli attributi
dell'evento come stringa JSON escludendo il payload, utilizza
message.removeFields(["data"]).toJsonString(). Ad esempio:
cel_expression: "{\"body\":{\"overrides\":{\"containerOverrides\":[{\"env\":[{\"name\":\"CLOUD_EVENT_PAYLOAD\",\"value\":\"message.data.toJsonString()\"},{\"name\":\"CLOUD_EVENT_ATTRIBUTES\",\"value\":\"message.removeFields(['data']).toJsonString()\"}]}]}}}"
Per saperne di più, consulta Trasformare gli eventi ricevuti.