Cette page explique comment résoudre les problèmes que vous pouvez rencontrer lors de l'utilisation d'Eventarc Advanced.
Problèmes liés aux CMEK
Vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK) pour protéger Eventarc. Les clés sont créées et gérées via Cloud Key Management Service (Cloud KMS). Le tableau suivant décrit les différents problèmes liés aux CMEK et explique comment les résoudre lorsque vous utilisez Cloud KMS avec Eventarc.Problèmes survenant lors de la création ou de la mise à jour de ressources Eventarc
| Problème lié aux CMEK | Message d'erreur | Description |
|---|---|---|
| Clé désactivée | $KEY is not enabled, current state is: DISABLED |
La clé Cloud KMS fournie a été désactivée pour une ressource Eventarc. Les événements ou messages associés à la ressource ne sont plus protégés. Solution :
|
| Quota dépassé | Quota exceeded for limit |
Votre limite de quota pour les requêtes Cloud KMS a été atteinte. Solution :
|
| Région non correspondante | Key region $REGION must match the resource to be protected |
La région de la clé KMS fournie est différente de celle de la ressource. Solution : Utilisez une clé Cloud KMS de la même région. |
| Contrainte liée aux règles d'administration | project/PROJECT_ID violated org policy constraint |
Eventarc est intégré aux deux contraintes de règle d'administration suivantes pour garantir l'utilisation des CMEK dans toute l' organisation. Toute ressource Eventarc existante n'est pas soumise à une règle définie après sa création. Toutefois, la mise à jour de la ressource peut échouer.
|
Problèmes survenant lors de la diffusion d'événements
| Problème lié aux CMEK | Message d'erreur | Description |
|---|---|---|
| Clé désactivée | $KEY is not enabled, current state is: DISABLED |
La clé Cloud KMS fournie a été désactivée pour une ressource Eventarc. Les événements ou messages associés à la ressource ne sont plus protégés. Solution :
|
| Quota dépassé | Quota exceeded for limit |
Votre limite de quota pour les requêtes Cloud KMS a été atteinte. Solution :
|
| Erreur d'autorisation | Permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on
resource $KEY (or it may not exist) |
Soit la clé Cloud KMS fournie n'existe pas, soit l' autorisation Identity and Access Management (IAM) n'est pas correctement configurée. Solution :
|
Pour résoudre les problèmes que vous pouvez rencontrer lors de l'utilisation de clés gérées en externe via Cloud External Key Manager (Cloud EKM), consultez la documentation de référence sur les erreurs Cloud EKM.
Erreurs HTTP 400 Bad Request
Une erreur HTTP 400 Bad Request générique pour un pipeline signale souvent un problème de transformation ou de liaison de message, ou un problème lié au point de terminaison ciblé. Assurez-vous de procéder comme suit :
- Recherchez les erreurs de syntaxe ou de logique dans vos expressions CEL. Par exemple, dans ce document, consultez la section Problèmes de transformation.
- Vérifiez que les messages d'événement sont conformes au schéma attendu. Par exemple, dans ce document, consultez la section Format de requête non valide.
- Si la destination de l'événement elle-même renvoie l'erreur, vérifiez votre point de terminaison ciblé.
Erreurs HTTP 503 Service Unavailable
Si vous rencontrez une erreur HTTP 503 Service Unavailable pour un pipeline qui
achemine des messages vers une destination Google à l'aide d'une adresse DNS (par exemple,
Cloud Run), assurez-vous que
l'accès privé à Google est activé sur le
sous-réseau utilisé dans l'association réseau. Sinon, l'adresse DNS ne peut pas être
résolue.
Autorisation refusée lors de l'utilisation de l'agent de service Eventarc
Si vous rencontrez l'erreur suivante lors de la tentative de création d'une ressource Eventarc Advanced, attendez quelques minutes (sept, par exemple), puis réessayez de créer la ressource :
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 agent de service agit comme l'identité d'un service donné Google Cloud pour
un projet particulier. Pour plus d'informations, consultez la page
Agents de service et affichez les
autorisations Identity and Access Management (IAM) pour le
rôle d'agent de service
Eventarc (roles/eventarc.serviceAgent).
Si vous rencontrez toujours l'erreur précédente après avoir tenté de recréer votre ressource, procédez comme suit pour vérifier que l'agent de service Eventarc existe dans votre Google Cloud projet et qu'il dispose du rôle nécessaire :
- Dans la Google Cloud console, accédez à la page IAM.
- Dans l'onglet Afficher par comptes principaux, cochez la case Inclure les attributions de rôles fournies par Google.
Dans la liste des comptes principaux, recherchez l'agent de service Eventarc, qui utilise le format suivant :
service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com- Vérifiez que l'agent de service dispose du rôle Agent de service Eventarc. Si l'agent de service ne dispose pas du rôle, alors attribuez-le-lui.
Problèmes de publication dans une tâche Cloud Run
Cette section explique comment résoudre les problèmes que vous pouvez rencontrer lors de la publication d'événements dans une tâche Cloud Run. Pour une démonstration de bout en bout, consultez le guide de démarrage rapide.
Erreurs HTTP 403 Forbidden
Si vous rencontrez une erreur HTTP 403 Forbidden lorsque vous tentez d'exécuter une
tâche Cloud Run qui remplace la configuration de la tâche (par exemple, en
définissant une liaison de message), assurez-vous d'avoir attribué le
rôle IAM Développeur Cloud Run
(roles/run.developer) ou
Exécuteur de tâches Cloud Run avec remplacement
(roles/run.jobsExecutorWithOverrides) au compte de service OAuth
utilisé par le pipeline Eventarc. Pour en savoir plus, consultez la page
Remplacer la configuration d'une tâche pour une exécution spécifique.
Format de requête non valide
Lorsque vous définissez une
liaison de message,
vous devez utiliser la clé http_endpoint_message_binding_template pour transformer l'événement
au format attendu par l'
API Cloud Run Admin, par
exemple : {"body": ""}.
Si la clé est manquante ou vide, le message d'événement acheminé vers la tâche n'est pas conforme au schéma attendu pour le point de terminaison de la tâche Cloud Run, ce qui empêche le message d'événement de déclencher correctement l'exécution de la tâche.
Problèmes de transformation
Si vos données d'événement ne peuvent pas être transformées ou ne le sont pas comme prévu lorsque vous spécifiez une liaison de message, assurez-vous que la syntaxe de votre expression CEL est correcte.
Expression CEL incorrecte
Par exemple, dans l'expression suivante, des substitutions de chaînes entre guillemets, telles que
\"${message.data}\"sont utilisées pour évaluer et insérer des valeurs de variables alors que
des fonctions d'extension CEL devraient être utilisées à la place :
cel_expression: "{\"body\":{\"overrides\":{\"containerOverrides\":[{\"env\":[{\"name\":\"CLOUD_EVENT_PAYLOAD\",\"value\":\"${message.data}\"},{\"name\":\"CLOUD_EVENT_ATTRIBUTES\",\"value\":\"${message.attributes}\"}]}]}}}"
De plus, les attributs d'événement sont des champs de premier niveau de l'objet de message et ne sont pas contenus dans un champ d'attributs distinct, tel que message.attributes.
Chaque attribut d'un message CloudEvents entrant doit être accessible à l'aide de la
message.key valeur, où key est
le nom de l'attribut.
Expression CEL correcte
Pour résoudre ces problèmes, ajoutez la fonction toJsonString() directement à l'objet afin de transmettre les données du message sous forme de chaîne JSON. Pour capturer les attributs d'événement
sous forme de chaîne JSON tout en excluant la charge utile, utilisez
message.removeFields(["data"]).toJsonString(). Exemple :
cel_expression: "{\"body\":{\"overrides\":{\"containerOverrides\":[{\"env\":[{\"name\":\"CLOUD_EVENT_PAYLOAD\",\"value\":\"message.data.toJsonString()\"},{\"name\":\"CLOUD_EVENT_ATTRIBUTES\",\"value\":\"message.removeFields(['data']).toJsonString()\"}]}]}}}"
Pour en savoir plus, consultez la page Transformer les événements reçus.