Dépannage de Snowpark Container Services

Cette rubrique traite des problèmes courants et de la manière dont vous pouvez les résoudre.

Registre d’images

  • Erreur « Demande de consentement non valide » reçue lors de l’accès à un point de terminaison de service public.

    Dans la version actuelle, Snowflake authentifie l’utilisateur actuel en utilisant son rôle par défaut. Cette erreur est probablement due au fait que l’utilisateur utilise l’un des rôles privilégiés, tels que ACCOUNTADMIN, SECURITYADMIN, comme rôle par défaut (voir Blocage de rôles spécifiques pour les empêcher d’utiliser l’intégration). Utilisez la commande ALTER USER pour modifier le rôle par défaut de l’utilisateur et réessayez.

  • Échec de l’authentification docker login.

    N’utilisez pas un nom d’hôte en majuscules dans la commande docker login puis un nom d’hôte en minuscules dans la commande docker push, docker pull. La CLI Docker stocke les identifiants de connexion avec des touches qui tiennent compte de la casse. Problème lié à la CLI Docker.

  • Erreur docker push : aucun hôte dans URL de requête.

    Lorsque vous interagissez avec la CLI Docker, remplacez toujours les traits de soulignement de votre nom de compte dans une URL par des traits d’union. La CLI Docker renverra une erreur si les noms d’hôtes contiennent des traits de soulignement (même si cURL fonctionne). Par exemple, le push Docker suivant spécifie « my_acct » comme nom de compte :

    docker push myorg-my_acct.registry.snowflakecomputing.com/tutorial_db/data_schema/tutorial_repository/service_to_service
    
    Copy

    Docker renvoie cette erreur :

    Get "https:/v2/": http: no Host in request URL.
    

    Vous pouvez également utiliser la commande SHOW IMAGE REPOSITORIES pour obtenir une URL de référentiel valide.

Pool de calcul

  • Le pool de calcul suspendu est bloqué dans l’état STOPPING.

    L’exécution des services empêchera l’arrêt du pool de calcul. Suspendez tous les services actifs restants dans le pool de calcul à l’aide de la commande ALTER COMPUTE POOL :

    ALTER COMPUTE POOL <pool_name> STOP ALL
    
    Copy

Service

  • Un service en cours d’exécution ne répond plus aux requêtes (provenant d’une fonction de service ou d’un point de terminaison public). Le statut du service est passé de « en cours d’exécution » à « en attente ».

    Cela peut indiquer une pénurie de ressources sur les nœuds du pool de calcul. Si vos conteneurs sont gourmands en ressources (CPU/mémoire), vous devez spécifier explicitement les demandes de ressources dans la spécification du service afin d’éviter qu’un trop grand nombre de services (y compris des services de tâche) ne soient placés sur un seul nœud.

    Dans la version actuelle, vous ne pouvez spécifier que des demandes de mémoire.

    Par exemple, si un nœud du pool de calcul a 64 GB de RAM, demander plus de 32 GB pour votre service (ou service de tâche) garantirait qu’un seul service ou service de tâche peut être exécuté sur un nœud à la fois. Pour plus d’informations sur les capacités de chaque type d’instance, voir CREATE COMPUTE POOL.

  • Si vous soumettez une requête au point de terminaison public du service, n’utilisez pas de guillemets doubles dans l’en-tête d’authentification HTTP.

Fonctions de service

  • Problèmes de dépassement de délai d’expiration de la fonction de service et d’exécution en double.

    Si l’appel d’une fonction de service unique prend plus de 30 secondes, Snowflake retente la fonction et, après quelques tentatives, la fonction échoue avec une erreur de dépassement de délai d’expiration. Vous pouvez obtenir des résultats inattendus si la mise en œuvre de la fonction dans le conteneur n’est pas idempotente. Envisagez d’utiliser une exécution asynchrone en renvoyant un code HTTP différent (202), ce qui permet un délai plus long. Pour plus d’informations, voir Service à distance asynchrone.

Entrée

  • Si l’authentification échoue, cela peut être dû à la politique réseau associée à l’utilisateur ou au compte.

  • Lorsque vous accédez au point de terminaison public depuis Internet, vous pouvez constater que l’authentification par nom d’utilisateur/mot de passe fonctionne, mais que SSO aboutit à une page blanche ou à l’erreur : « L’intégration du clientOAuth avec l’ID du client donné est introuvable ». Pour obtenir des informations sur la manière de résoudre ce problème, consultez Considérations sur les entrées et SSO.

  • Lorsqu’un client reçoit une erreur 5XX d’un point de terminaison d’entrée (500/503/504), il doit réessayer, avec un délai d’interruption spécifique. Nous recommandons l”interruption exponentielle délimitée.

  • Une requête de pré-vol CORS renvoie le statut 404 - Le point de terminaison n’existe pas :

    Vérifiez si le point de terminaison existe en exécutant la commande SHOW ENDPOINTS.

  • Une requête de pré-vol CORS renvoie le statut 302.

    La requête CORS ne comportait aucune forme d’authentification. En raison de l’incapacité à faire la distinction entre les requêtes CORS et les redirections/balises d’ancrage, nous devons supposer qu’il s’agit d’un cas de redirection/balise d’ancrage et renvoyer un statut 302.

  • Statut de la réponse 403 « Rejet d’une requête CORS car le cookie était présent et la requête n’a pas d’en-tête d’authentification ».

    Cela se produit lorsqu’une requête non-GET non-HEAD inter-origines tente d’utiliser le cookie comme méthode d’authentification. L’en-tête d’authentification est exigé pour ces requêtes inter-origines. Cette erreur se produit lorsque la requête contient des cookies et que l’en-tête d’authentification n’est pas présent.

  • Message d’erreur « Requête inter-origines bloquée : La politique de même origine interdit la lecture de la ressource distante à … ».

    Le navigateur renvoie cette erreur lorsque le service a indiqué qu’il ne prenait pas en charge l’accès inter-origines exigé. Cela se produit généralement car l”Origin fournie par le navigateur ne correspond pas à l’une des origines spécifiées dans Access-Control-Allow-Origin dans la spécification du service pour le point de terminaison. Pour qu’il y ait correspondance, le schéma (HTTP/HTTPS) et le nom d’hôte doivent tous deux correspondre.