Dépannage des fonctions externes pour Azure

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

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

Problèmes spécifiques à Azure

Impossible de modifier les paramètres pendant la création de la fonction Azure

Causes possibles

Lors de la création de votre fonction Azure, il se peut que vous ne puissiez pas modifier les paramètres de la fonction dans le menu Authentication/Authorization.

Ce problème peut survenir si tous les éléments suivants se produisent :

  • Votre fonction Azure fonctionne sous Linux plutôt que sous Microsoft Windows.

  • Vous prévoyez d’utiliser l’authentification/autorisation Azure AD pour votre fonction Azure.

  • Vous utilisez le tarif « consommation » d’Azure plutôt que le tarif « premium ».

L’authentification Azure AD n’est pas disponible sur le plan Consommation Linux pour Azure Functions. Vous devez utiliser un plan App Service ou un plan Premium afin de vous authentifier avec Azure AD.

Solutions possibles
  • Recréer la fonction Azure et préciser qu’elle fonctionnera sous Microsoft Windows plutôt que sous Linux.

  • Ignorez l’authentification/autorisation Azure AD pour la fonction Azure ; effectuez plutôt les tâches suivantes :

    Si vous choisissez cette solution, vous devez créer l’application Azure AD manuellement. Pour plus de détails, consultez la documentation de Microsoft :

    Si vous créez l’application Azure AD manuellement, enregistrez le nom d’inscription de l’application Azure Function AD et l’ID de l’application Azure Function App AD dans la feuille de calcul de suivi.

  • Passez d’une tarification consommation à une tarification premium ou utilisez un plan App Service. Pour plus de détails, voir la documentation Microsoft :

La fonction externe s’arrête

Causes possibles

Il existe de nombreuses causes possibles de dépassement de délais d’expiration. Sur Azure, une des causes possibles est que l’écriture de l’application de fonction Azure n’a pas été faite en tenant compte de la mise à l’échelle.

Solutions possibles

Assurez-vous que vous suivez les directives Azure pour l’écriture de fonctions gérant la mise à l’échelle .

Pour plus d’informations sur le dépannage des problèmes de mise à l’échelle et de performance, voir Dépannage des problèmes de mise à l’échelle et de performance .

Erreur : Failed to obtain Azure Active Directory access token.

Solutions possibles

Essayez les étapes suivantes :

  • Vérifiez que le principal de service Snowflake a accès à votre client Azure AD.

  • Vérifiez que l’ID de client et l’ID d’application Azure AD sont corrects.

    Notez que l’espace, y compris l’espace de début et de fin (par exemple les blancs), est significatif dans les champs ID. Vérifiez s’il y a des espaces de début et de fin incorrects.

Erreur : 401 “{ « statusCode »: 401, « message »: « Access denied due to missing subscription key… » }”

Texte complet du message d’erreur :

Request failed for external function <function_name>. Error: 401 '{ "statusCode": 401, "message":
"Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }'
Causes possibles

L’obligation d’abonnement du service Gestion des API doit être activé.

Solutions possibles

Vous devrez peut-être désactiver l’obligation d’abonnement du service Gestion des API.

Erreur : 401 “{ « statusCode »: 401, « message »: « Access denied due to missing subscription key. » }

Causes possibles

Le service proxy a besoin d’une clé API (c’est-à-dire une clé d’abonnement »), généralement pour l’authentification ou la facturation. Cependant, aucune clé API n’a été fournie dans la clause API_KEY de la commande CREATE API INTEGRATION.

Solutions possibles

Utilisez la commande ALTER API INTEGRATION pour mettre à jour l’intégration API avec une clé API valide.

Erreur : 401 “{ « statusCode »: 401, « message »: « Access denied due to invalid subscription key. » }”

Causes possibles

Le service proxy a besoin d’une clé API (c’est-à-dire une clé d’abonnement »), généralement pour l’authentification ou la facturation. Cependant, la clé API fournie dans la clause API_KEY de la commande CREATE API INTEGRATION était incorrecte.

Solutions possibles

Utilisez la commande ALTER API INTEGRATION pour mettre à jour l’intégration API avec une clé API valide.

Erreur : 401 “{ « statusCode »: 401, « message »: « Invalid JWT. » }”

Texte complet du message d’erreur :

Request failed for external function <function_name>. Error: 401 '{ "statusCode": 401, "message": "Invalid JWT." }'
Causes possibles
  • Vous n’avez peut-être pas terminé de définir la politique de sécurité sur le service Gestion des API. Par exemple, vous pourriez avoir :

    • Created, but not edited, the JWT (JSON Web Token).

    • Oublié une ou plusieurs revendications/valeurs requises. Par exemple, vous avez peut-être spécifié la revendication pour Snowflake, mais pas

    • le service distant (fonction Azure), ou vice versa.

  • Vous avez peut-être utilisé une URL Open ID non valide.

Solutions possibles
  • Terminez de définir la politique de sécurité sur le service Gestion des API Azure. Par exemple, examinez les JWT et vérifiez que vous avez inclus les revendications/valeurs requises, notamment la revendication pour Snowflake et celle pour le service distant (fonction Azure).

  • Vérifiez que vous avez utilisé une URL Open ID valide.

Erreur (Service à distance) : 401 “{ « statusCode »: 401, « message »: « Invalid JWT. » }”

Texte complet du message d’erreur :

Request failed for external function <function_name> with remote service error: 401 '{ "statusCode": 401, "message": "Invalid JWT." }'
Causes possibles

If you used the ARM template, you might not have updated the JWT (JSON Web Token) that the template created for you.

Solutions possibles

Mettre à jour le JWT comme documenté dans Étape 6 : Mettez à jour la politique de sécurité Azure pour le service proxy dans le portail.

Erreur : 500 ..

Causes possibles

Vous avez peut-être choisi la mauvaise option pour votre application AD Azure :

  • Option incorrecte : Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)

  • Option correcte : Accounts in this organizational directory only (Default Directory only - Single tenant)