Dépannage des fonctions externes pour GCP

Cette rubrique fournit des informations sur le dépannage des fonctions externes.

Dans ce chapitre :

Dépannage

Symptômes indépendants de la plateforme

Les valeurs de retour réelles pour un type de données ne correspondent pas aux valeurs de retour attendues

Lorsque vous transmettez des arguments vers ou depuis une fonction externe, assurez-vous que les types de données sont appropriés. Si la valeur envoyée ne peut pas correspondre au type de données reçues, la valeur peut être tronquée ou corrompue d’une autre manière.

Pour plus de détails, voir Assurez-vous que les arguments de la fonction externe correspondent aux arguments analysés par le service distant.

Lorsque vous appelez votre fonction à partir de SQL, vous obtenez un message indiquant que les numéros de ligne ne sont pas en ordre

Cause(s) possible(s)

N’oubliez pas que les numéros de ligne que vous renvoyez dans chaque lot doivent être des entiers ascendants monotones à partir de 0. Les numéros de ligne d’entrée doivent également suivre cette règle, et chaque ligne sortie doit correspondre à la ligne d’entrée correspondante (par exemple, la sortie dans la ligne de sortie 0 doit correspondre à l’entrée dans la ligne d’entrée 0).

Solution(s) possible(s)
  1. Assurez-vous que les numéros de ligne que vous renvoyez sont identiques à ceux que vous avez reçus et que chaque valeur de sortie utilise le numéro de ligne de l’entrée correspondante. Cela devrait fonctionner. Si ce n’est pas le cas, il est possible que les numéros de ligne en entrée ne soient pas corrects ou que vous n’ayez pas renvoyé les lignes dans le bon ordre. Passez donc à l’étape 2 ci-dessous.

  2. Assurez-vous que les numéros de ligne de sortie commencent par 0, augmentent de 1 et sont en ordre.

Pour plus d’informations sur les formats d’entrée et de sortie des données, voir Formats des données d’entrée et de sortie des services à distance.

Lorsque vous essayez d’appeler la fonction externe, vous obtenez le message « Erreur d’analyse JSON : réponse non valide »

Cause(s) possible(s)

La cause la plus probable est que le JSON renvoyé par le service distant (par exemple fonction AWS Lambda) n’est pas construit correctement.

Solution(s) possible(s)

Assurez-vous de renvoyer un tableau de tableaux, avec un tableau interne renvoyé pour chaque ligne d’entrée reçue. Consultez la description du format de sortie sur Format de données reçu par Snowflake.

Un message d’erreur indiquant que la valeur renvoyée n’est pas au format JSON

Cause(s) possible(s)

Une cause possible de ceci est que votre valeur de retour inclut des guillemets doubles à l’intérieur de la valeur.

Solution(s) possible(s)

Bien que les chaînes JSON soient délimitées par des guillemets doubles, la chaîne elle-même ne doit pas commencer et se terminer par un guillemet dans la plupart des cas. Si les guillemets doubles intégrés sont incorrects, supprimez-les.

Un message d’erreur indiquant que la fonction a reçu le mauvais nombre de lignes

Cause(s) possible(s)

Le service distant a probablement tenté de renvoyer plus ou moins de lignes qu’il en a reçues. (N’oubliez pas, même si la fonction est nominalement scalaire, elle peut recevoir plusieurs lignes dans le champ « body » du paramètre « event » et doit renvoyer exactement autant de lignes qu’elle a reçues.)

Solution(s) possible(s)

Assurez-vous que le service distant renvoie une ligne pour chaque ligne qu’il reçoit.

Symptômes spécifiques à la plateforme

La demande échoue avec “{« message »: »Audiences in Jwt are not allowed », »code »:403} “

Cause(s) possible(s)
  • Cet échec indique que la valeur du champ google_audience de l’intégration API n’est pas autorisée.

Solution(s) possible(s)
  • Veuillez vérifier que la valeur google_audience de l’intégration API correspond au nom du service géré de votre API, qui doit être enregistré dans le champ « Identificateur du service géré » de la feuille de calcul.

  • Si vous avez ajouté un champ x-google-audiences à la section securityDefinitions de votre fichier de configuration API, assurez-vous que la valeur de x-google-audiences correspond à celle du champ google_audience de l’intégration API.

Pour plus d’informations sur l’authentification avec Google, veuillez consulter la documentation sur l’authentification du compte de service Google.

La demande échoue avec “{« message »: »Jwt is missing », »code »:401} “

Cause(s) possible(s)
  • La valeur du champ x-google-issuer dans le champ securityDefinitions du fichier de configuration peut ne pas correspondre à la valeur du champ API_GCP_SERVICE_ACCOUNT dans l’intégration API (enregistrée dans la feuille de calcul).

  • La valeur de x-google-issuer peut contenir des espaces supplémentaires.

Solution(s) possible(s)
  • Mettez à jour x-google-issuer pour correspondre à API_GCP_SERVICE_ACCOUNT.

  • Supprimez les espaces inutiles.

La demande échoue avec “403 Forbidden”

Cause(s) possible(s)

Une cause possible de cet échec est que le compte de service utilisant la configuration ne dispose pas des autorisations appropriées sur le backend.

Solution(s) possible(s)

Mettez à jour les permissions du compte de service.