Questa pagina mostra come risolvere i problemi che potresti riscontrare quando utilizzi Eventarc Advanced.
Problemi relativi a CMEK
Puoi utilizzare 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 |
È stato 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 di policy dell'organizzazione per contribuire a 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 dell'evento
| 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 |
È stato 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 Riferimento agli errori di Cloud EKM.
Errori HTTP 400 Bad Request
L'errore HTTP generico 400 Bad Request 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 agente di servizio funge da identità di un determinato Google Cloud servizio per
un progetto specifico. 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 il service agent 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, concedilo.
Problemi di pubblicazione nei 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 non è presente o è vuota, il messaggio evento indirizzato al job non rispetterà lo schema previsto per l'endpoint del job Cloud Run e questo impedisce l'attivazione corretta dell'esecuzione del job da parte del messaggio evento.
Problemi di trasformazione
Se i dati sugli 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 nell'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.