Résoudre des problèmes

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 :

  1. Affichez la clé utilisée pour une ressource :
  2. Réactivez la clé Cloud KMS.
Quota dépassé Quota exceeded for limit

Votre limite de quota pour les requêtes Cloud KMS a été atteinte.

Solution :

  • Limitez le nombre d'appels Cloud KMS.
  • Augmentez le quota.
Pour en savoir plus, consultez la page Surveiller et ajuster les quotas Cloud KMS.
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.

  • constraints/gcp.restrictNonCmekServices entraîne l'échec de toutes les requêtes de création de ressources sans clé Cloud KMS spécifiée.

    Solution :

    Spécifiez une clé Cloud KMS pour la ressource Eventarc. Pour en savoir plus, consultez la page Exiger des CMEK pour les nouvelles ressources Eventarc.

  • constraints/gcp.restrictCmekCryptoKeyProjects limite les clés Cloud KMS que vous pouvez utiliser pour protéger une ressource Eventarc.

    Solution :

    Utilisez une clé Cloud KMS compatible provenant d'un projet, d'un dossier ou d'une organisation Eventarc autorisé. Pour en savoir plus, consultez la page Restreindre les clés Cloud KMS d'un projet Eventarc.

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 :

  1. Affichez la clé utilisée pour une ressource :
  2. Réactivez la clé Cloud KMS.
Quota dépassé Quota exceeded for limit

Votre limite de quota pour les requêtes Cloud KMS a été atteinte.

Solution :

  • Limitez le nombre d'appels Cloud KMS.
  • Augmentez le quota.
Pour en savoir plus, consultez la page Surveiller et ajuster les quotas Cloud KMS.
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 :

  1. Dans la Google Cloud console, accédez à la page IAM.

    Accéder à IAM

  2. Dans l'onglet Afficher par comptes principaux, cochez la case Inclure les attributions de rôles fournies par Google.
  3. 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

  4. 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.

Étape suivante