Dépannage des fonctions externes pour AWS¶
Cette rubrique fournit des informations sur le dépannage des fonctions externes pour AWS.
Dans ce chapitre :
Problèmes relatifs à l’exécution indépendamment de la plate-forme¶
Les valeurs de retour du 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.
Erreur : les numéros de ligne ne sont pas dans l’ordre¶
- Causes possibles:
Les numéros de ligne que vous renvoyez dans chaque lot doivent être des entiers ascendants monotones à partir de 0. Les numéros des lignes d’entrée doivent également suivre cette règle, et chaque ligne de sortie doit correspondre à la ligne d’entrée correspondante. Par exemple, la sortie de la ligne de sortie 0 doit correspondre à l’entrée de la ligne d’entrée 0.
- Solutions possibles:
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. Si cela ne fonctionne pas, il se peut que les numéros des lignes saisies ne soient pas corrects ou que vous n’ayez pas renvoyé les lignes dans le bon ordre.
Assurez-vous ensuite 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.
Erreur : « Error parsing JSON: Invalid response »¶
- Causes possibles:
La cause la plus probable est que le JSON renvoyé par le service distant (par exemple fonction AWS Lambda) n’est pas construit correctement.
- Solutions possibles:
Assurez-vous que la fonction externe renvoie 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.
Erreur : Le format de la valeur retournée n’est pas JSON¶
- Causes possibles:
Votre valeur de retour inclut des guillemets doubles à l’intérieur de la valeur.
- Solutions possibles:
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.
Erreur : la fonction a reçu le mauvais nombre de lignes¶
- Causes possibles:
Le service distant a tenté de renvoyer plus ou moins de lignes qu’il en a reçues. Même si la fonction est nominalement scalaire, elle peut recevoir plusieurs lignes dans le champ
body
du paramètreevent
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.
Problèmes spécifiques à AWS¶
Une API Gateway renvoie une erreur 502 lorsque le point de terminaison utilise l’intégration du proxy Lambda¶
- Cause possible:
La fonction Lambda peut avoir :
Expiré.
Renvoyé une exception.
Echoué d’une autre manière.
- Solution possible:
Si les journaux Lambda ou API Gateway sont à votre disposition, examinez-les.
Si le code source de la fonction Lambda est à votre disposition, analysez et déboguez le code dans la fonction Lambda. Dans certains cas, vous pourrez peut-être exécuter une copie de ce code dans un contexte plus simple (en dehors de AWS) pour faciliter le débogage.
Vérifiez que les données envoyées à la fonction Lambda sont au format attendu par la fonction Lambda. Vous voudrez peut-être essayer d’envoyer un ensemble de données plus petit et plus simple pour voir si cela réussit.
Vérifiez que vous n’envoyez pas trop de données à la fois.
Dans certains cas, l’augmentation du délai d’attente peut résoudre le problème, en particulier si la fonction Lambda nécessite beaucoup de ressources CPU, ou si la fonction Lambda elle-même appelle d’autres services distants et nécessite donc plus de temps.
Impossible de lire le corps des requêtes au sein de la méthode HTTP POST dans la fonction Amazon AWS Lambda¶
- Cause possible:
Vous n’avez peut-être pas activé l’intégration du proxy Lambda.
- Solution possible:
Activation de l’intégration des proxy Lambda.
Pour plus de détails, voir les étapes correspondantes dans Créer le point de terminaison API Gateway.
Erreur en supposant AWS_ROLE¶
Le texte intégral du message est le suivant :
SQL execution error: Error assuming AWS_ROLE. Please verify the role and externalId are configured correctly in your AWS policy.
- Cause possible:
Dans la stratégie de relation de confiance AWS pour votre rôle, l’ARN AWS est incorrect. Les causes possibles de cela comprennent :
Vous ne l’avez pas défini.
Vous l’avez défini, mais vous avez utilisé l’ARN du rôle AWS (incorrect) au lieu de l’ARN utilisateur, que vous pouvez voir à partir de la commande DESCRIBE INTEGRATION dans Snowflake. Veillez à utiliser la valeur du champ
API_AWS_IAM_USER_ARN
de la feuille de calcul plutôt que la valeur du champ « API_AWS_ROLE_ARN ».
Dans votre stratégie de relation de confiance AWS, le std:ExternalId est incorrect. Les causes possibles de cela comprennent :
Vous ne l’avez pas défini.
Vous avez recréé l’objet d’intégration API. La recréation de l’objet API modifie son ID externe.
Error parsing JSON response … Error: top-level JSON object must contain « data » JSON array element¶
Le texte intégral du message est le suivant :
Error parsing JSON response for external function ... Error: top-level JSON object must contain "data" JSON array element
- Cause possible:
Vous n’avez peut-être pas spécifié l’intégration par proxy Lambda pour la commande API dans votre ressource POST Gateway.
- Solution possible:
Spécifiez l’intégration du proxy Lambda pour votre ressource API Gateway.
Pour plus de détails sur l’intégration du proxy Lambda, voir les étapes dans Créer le point de terminaison API Gateway.
La demande a échoué pour la fonction externe EXT_FUNC avec une erreur de service à distance : 403 “{« message »: »Forbidden »}”;¶
- Cause possible:
Le service proxy a besoin d’une clé API, généralement pour l’authentification ou la facturation. La clé API est manquante ou incorrecte.
- Solution possible:
Utilisez la commande ALTER API INTEGRATION pour spécifier la bonne clé API.
La création de la pile CloudFormation a échoué¶
Cette erreur peut se produire si vous utilisez un modèle AWS CloudFormation pour créer une fonction externe.
- Cause possible:
Vous n’avez pas les autorisations requises pour créer les ressources spécifiées dans le modèle CloudFormation .
- Solution possible:
Vérifiez l’onglet Events de la pile pour voir les détails de l’erreur.
Consultez également la page AWS de dépannage des fonctions externes pour des conseils supplémentaires de dépannage.