SnowCD (Connectivity Diagnostic Tool)¶
SnowCD (c.-à-d. Snowflake Connectivity Diagnostic Tool) aide les utilisateurs à diagnostiquer et à dépanner leur connexion réseau à Snowflake.
Dans ce chapitre :
Vue d’ensemble¶
SnowCD exploite les adresses IP et les ports du nom d’hôte Snowflake affichés par les fonctions SYSTEM$ALLOWLIST()
ou SYSTEM$ALLOWLIST_PRIVATELINK()
pour exécuter une série de vérifications de connexion, afin d’évaluer et de résoudre les problèmes de connexion réseau à Snowflake.
Important
Si votre compte Snowflake utilise une connectivité privée au service Snowflake, exécutez la fonction SYSTEM$ALLOWLIST_PRIVATELINK pour obtenir l’adresse IP et les ports du nom d’hôte Snowflake afin d’évaluer et de résoudre les problèmes de connexion réseau à Snowflake.
Pour plus d’informations, voir :
SnowCD renvoie l’un des résultats suivants :
All checks passed
pour indiquer une connexion réseau saine.Un message indiquant qu’une ou plusieurs vérifications ont échoué avec une suggestion de dépannage.
Les utilisateurs peuvent utiliser SnowCD afin d’évaluer la connexion réseau à Snowflake à tout moment pour vérifier que les paramètres de configuration requis sont corrects. Par exemple, les utilisateurs peuvent intégrer SnowCD à ces cas d’utilisation :
Scripts de déploiement automatisés.
Vérification des conditions préalables avant de déployer un service qui se connecte à Snowflake.
Contrôles d’environnement lors du démarrage d’une nouvelle machine.
Contrôles périodiques sur les machines en marche.
SnowCD fonctionne avec des connexions directes ou via des serveurs proxy.
SnowCD vérifie l’accès à la base de données Snowflake et aux zones de préparation utilisées pour stocker temporairement les données (par exemple, pour le chargement).
SnowCD vérifie qu’une réponse HTTP a été renvoyée par l’hôte HTTP. Cela peut détecter des problèmes tels que les suivants :
Aucun serveur HTTP n’est en cours d’exécution à l’adresse et au port IP spécifiés.
Échec de la recherche DNS (système de noms de domaine).
Une attaque Man-In-The-Middle s’est produite et a utilisé un certificat non valide pour emprunter l’identité du service souhaité.
Certains types d’autres pannes de réseau inférieures au niveau HTTP.
SnowCD ne détecte pas tous les problèmes possibles. Les limitations connues incluent :
Les zones de préparation nécessitent des informations d’authentification supplémentaires que SnowCD ne possède pas. Bien que SnowCD vérifie l’accès de base à une zone de préparation, SnowCD n’effectue pas une vérification stricte du code de réponse HTTP depuis la zone de préparation. Par conséquent, SnowCD ne détecte pas les problèmes tels que :
Refus de stratégie d’accès pour le compartiment Amazon S3, le stockage Azure Blob ou Google Cloud Storage pour les zones de préparation.
Il y a un problème de connexion au serveur proxy du client, par exemple le serveur proxy renvoie une erreur HTTP 403.
Parce que SnowCD ne détecte pas tous les problèmes possibles, Snowflake recommande qu’après avoir vérifié avec succès l’accès à une zone de préparation via SnowCD, vous effectuez un suivi en exécutant une commande PUT pour charger un fichier sur la zone de préparation. La manière la plus simple d’exécuter une commande PUT est généralement via SnowSQL.
Attention
La résolution des problèmes de connexion réseau est compliquée. Selon l’environnement, il peut être nécessaire d’utiliser SnowCD avec d’autres méthodes de dépannage. Par exemple, si SnowCD renvoie des informations sur un problème OCSP, consultez les sections OCSP de cette page.
Utilisation de SnowCD¶
Étape 1 : exécution de la fonction SYSTEM$ALLOWLIST ou SYSTEM$ALLOWLIST_PRIVATELINK¶
Cette étape est une condition préalable et doit être effectuée, sauf si les noms d’hôte ou les ports sont modifiés.
Connectez-vous à Snowflake par le biais de l’interface Web.
Exécutez
SELECT SYSTEM$ALLOWLIST();
ouSELECT SYSTEM$ALLOWLIST_PRIVATELINK();
.Enregistrez le résultat de la requête dans un fichier (c.-à-d.
allowlist.json
).
Pour plus d’informations sur ces fonctions, voir SYSTEM$ALLOWLIST ou SYSTEM$ALLOWLIST_PRIVATELINK.
Les exemples ci-dessous utilisent JSON comme format de sortie de la fonction SQL correspondante. SnowCD accepte le format JSON, CSV ou TSV comme entrée pour l’étape 3 : exécution de SnowCD.
Pour enregistrer le résultat de la requête au format CSV ou TSV, dans l’interface Web, cliquez sur l’icône Download or View Results, sélectionnez CSV ou TSV, puis cliquez sur Export.
Exemple de fichier (non mis en retrait et édité)
Exécutez SYSTEM$ALLOWLIST et enregistrez la sortie dans un fichier (par exemple allowlist.json
).
Où :
<emplacement_stockage>
est l’emplacement de stockage (Amazon S3, Google Cloud Storage ou Microsoft Azure) qui stocke le fichier auquel le client Snowflake peut accéder en lecture et en écriture.
<id_région>
est la région AWS où se trouvent vos comptes VPCs et Snowflake.[{"type":"STAGE","host":"<storage_location>.s3.<region_id>.amazonaws.com","port":443}, {"type":"STAGE","host":"<storage_location>.s3-<region_id>.amazonaws.com","port":443}, {"type":"STAGE","host":"<storage_location>.s3.amazonaws.com","port":443}, {"type":"SNOWSQL_REPO","host":"<repository_name_1>.s3.<region_id>.amazonaws.com","port":443}, {"type":"SNOWSQL_REPO","host":"<repository_name_2>.snowflakecomputing.com","port":443}, {"type":"OUT_OF_BAND_TELEMETRY","host":"<telemetry_subdomain>.snowflakecomputing.com","port":443}, {"type":"OCSP_CACHE","host":"ocsp.snowflakecomputing.com","port":80}, {"type":"OCSP_RESPONDER","host":"ocsp.digicert.com","port":80}]
Exemple de fichier (non mis en retrait et édité)
Exécutez SYSTEM$ALLOWLIST et enregistrez la sortie dans un fichier (par exemple allowlist.json
).
Où :
<emplacement_stockage>
est l’emplacement de stockage (Amazon S3, Google Cloud Storage ou Microsoft Azure) qui stocke le fichier auquel le client Snowflake peut accéder en lecture et en écriture.
<id_région>
est la région AWS où se trouvent vos comptes VPCs et Snowflake.[{ "type": "STAGE", "host": "<storage_location>.s3.<region_id>.amazonaws.com", "port": 443 }, { "type": "STAGE", "host": "<storage_location>.s3-<region_id>.amazonaws.com", "port": 443 }, { "type": "STAGE", "host": "<storage_location>.s3.amazonaws.com", "port": 443 }, { "type": "SNOWSQL_REPO", "host": "<repository_name_1>.s3.<region_id>.amazonaws.com", "port": 443 }, { "type": "SNOWSQL_REPO", "host": "<repository_name_2>.snowflakecomputing.com", "port": 443 }, { "type": "OUT_OF_BAND_TELEMETRY", "host": "<telemetry_subdomain>.snowflakecomputing.com", "port": 443 }, { "type": "OCSP_CACHE", "host": "ocsp.snowflakecomputing.com", "port": 80 }, { "type": "OCSP_RESPONDER", "host": "ocsp.digicert.com", "port": 80 }]
Exemple de fichier (non mis en retrait et édité)
Exécutez SYSTEM$ALLOWLIST_PRIVATELINK et enregistrez la sortie dans un fichier (par exemple allowlist.json
).
Où :
<emplacement_stockage>
est l’emplacement de stockage (Amazon S3, Google Cloud Storage ou Microsoft Azure) qui stocke le fichier auquel le client Snowflake peut accéder en lecture et en écriture.
<id_région>
est la région AWS où se trouvent vos comptes VPCs et Snowflake.[{"type":"SNOWFLAKE_DEPLOYMENT","host":"<storage_location>.<region>.privatelink.snowflakecomputing.com","port":443}, {"type":"STAGE","host":"<storage_location>.<region>.amazonaws.com","port":443}, {"type":"STAGE","host":"<storage_location>-<region>.amazonaws.com","port":443}, {"type":"STAGE","host":"<storage_location>.amazonaws.com","port":443}, {"type":"SNOWSQL_REPO","host":"<repository_name_1>.s3.<region>.amazonaws.com","port":443}, {"type":"SNOWSQL_REPO","host":"<repository_name_2>.snowflakecomputing.com","port":443}, {"type":"OUT_OF_BAND_TELEMETRY","host":"<telemetry_subdomain>.snowflakecomputing.com","port":443}, {"type":"OCSP_CACHE","host":"ocsp.<storage_location>.<region>.privatelink.snowflakecomputing.com","port":80}]
Exemple de fichier (non mis en retrait et édité)
Exécutez SYSTEM$ALLOWLIST_PRIVATELINK et enregistrez la sortie dans un fichier (par exemple allowlist.json
).
Où :
<emplacement_stockage>
est l’emplacement de stockage (Amazon S3, Google Cloud Storage ou Microsoft Azure) qui stocke le fichier auquel le client Snowflake peut accéder en lecture et en écriture.
<id_région>
est la région AWS où se trouvent vos comptes VPCs et Snowflake.[{ "type": "SNOWFLAKE_DEPLOYMENT", "host": "<storage_location>.<region>.privatelink.snowflakecomputing.com", "port": 443 }, { "type": "STAGE", "host": "<storage_location>.<region>.amazonaws.com", "port": 443 }, { "type": "STAGE", "host": "<storage_location>-<region>.amazonaws.com", "port": 443 }, { "type": "STAGE", "host": "<storage_location>.amazonaws.com", "port": 443 }, { "type": "SNOWSQL_REPO", "host": "<repository_name_1>.s3.<region>.amazonaws.com", "port": 443 }, { "type": "SNOWSQL_REPO", "host": "<repository_name_2>.snowflakecomputing.com", "port": 443 }, { "type": "OUT_OF_BAND_TELEMETRY", "host": "<telemetry_subdomain>.snowflakecomputing.com", "port": 443 }, { "type": "OCSP_CACHE", "host": "ocsp.<storage_location>.<region>.privatelink.snowflakecomputing.com", "port": 80 }]
Attention
Enregistrez le fichier allowlist.json
à l’emplacement où d’autres noms d’hôte et ports externes autorisés sont définis pour votre environnement.
Astuce
Si vous ne souhaitez pas que la sortie soit au format JSON et préférez plutôt le format de table, exécutez la procédure suivante :
use warehouse my_warehouse;
select value:type as type,
value:host as host,
value:port as port
from table(flatten(input => parse_json(system$allowlist())));
Étape 2 : téléchargement et installation de SnowCD¶
Linux¶
Pour télécharger et installer SnowCD sous Linux, procédez comme suit :
Téléchargez la dernière version de SnowCD à partir de la page Télécharger SnowCD.
Ouvrez le terminal Linux et naviguez jusqu’au répertoire où vous avez téléchargé le fichier.
Vérifiez que la somme de contrôle SHA256 correspond.
$ sha256sum <filename>
Extrayez le fichier.
$ gunzip <filename>
Rendez le fichier exécutable.
$ chmod +x <filename>
Renommez l’exécutable en
snowcd
.$ mv <filename> snowcd
Note
Les utilisateurs Linux exécutant RHEL ou CentOS peuvent installer SnowCD à l’aide de yum alors que les utilisateurs de Debian peuvent l’installer à l’aide d’apt.
macOS¶
Pour télécharger et installer SnowCD sous macOS, procédez comme suit :
Téléchargez la dernière version du fichier
pkg
SnowCD notarié à partir de la page Télécharger SnowCD.Les fichiers pkg utilisent la convention d’appellation suivante :
snowcd-<numéro_version>-darwin_x86_64.pkg
Par exemple :
snowcd-1.0.5-darwin_x86_64.pkg
Ouvrez le terminal et naviguez jusqu’au répertoire où vous avez téléchargé le fichier.
Vérifiez que la somme de contrôle SHA256 correspond.
Pour obtenir la somme de contrôle du fichier, exécutez la commande suivante :
$ shasum -a 256 <filename>
Comparez la somme de contrôle du fichier à la somme de contrôle indiquée sur le site de téléchargement.
Ouvrez le Finder et naviguez jusqu’au répertoire où vous avez téléchargé le fichier pkg.
Extrayez et installez SnowCD en double-cliquant sur le fichier pkg.
Les fichiers, y compris l’exécutable snowcd, sont installés dans le répertoire /opt/snowflake/snowcd.
Windows¶
Pour télécharger et installer SnowCD sous Windows, procédez comme suit :
Téléchargez la dernière version de SnowCD à partir de la page Télécharger SnowCD.
Exécutez le fichier MSI à l’aide de Windows Installer.
Étape 3 : exécution de SnowCD¶
Avant d’exécuter SnowCD dans des environnements macOS et Linux, vous pouvez ajouter son répertoire à votre $PATH
. Dans les environnements Windows, vous pouvez ajouter SnowCD à vos variables d’environnement.
Dans les environnements macOS ou Linux, vous pouvez lancer l’exécutable snowcd à partir de la ligne de commande en exécutant
snowcd <path_to_allowlist.json> [flags]
.Dans les environnements Windows, exécutez
snowcd.exe <path_to_allowlist.json> [flags]
.
Astuce
Pour une description complète des indicateurs pris en charge par snowcd
, exécutez snowcd -h
.
Si toutes les vérifications sont valides, SnowCD renvoie le nombre de vérifications sur le nombre d’hôtes avec le message All checks passed
comme suit.
Performing 30 checks on 12 hosts
All checks passed
Si vous essayez d’exécuter SnowCD sans transmettre les informations de la liste autorisée JSON depuis SELECT SYSTEM$ALLOWLIST(), le message d’erreur suivant s’affiche pour rappeler d’inclure le fichier, avec la liste des indicateurs actuellement pris en charge, leur type de données, le cas échéant, et une brève description de l’indicateur.
Error: please provide whitelist generated by SYSTEM$ALLOWLIST()
Usage:
./snowcd <path to input json file> [flags]
Examples:
./snowcd test.json
Flags:
-h, --help help for ./snowcd
--logLevel string log level (panic, fatal[default], error, warning, info, debug, trace) (default "fatal")
--logPath string Output directory for log. When not specified, no log is generated
--proxyHost string host for http proxy. (When not specified, does not use proxy at all)
--proxyIsHTTPS Is connection to proxy secure, i.e. https. (default false)
--proxyPassword string password for http proxy.(default empty)
--proxyPort int port for http proxy.(default 8080) (default 8080)
--proxyUser string user name for http proxy.(default empty)
-t, --timeout int timeout for each hostname's checks in seconds (default 5) (default 5)
--version version for ./snowcd
Si SnowCD détecte un paramètre incorrect ou une configuration incorrecte, des informations sur les vérifications ayant échoué s’affichent avec une suggestion de dépannage. Par exemple, la réponse ci-dessous indique un nom d’hôte non valide.
Check for 1 hosts failed, display as follow:
==============================================
Host: www.google1.com
Port: 443
Type: SNOWFLAKE_DEPLOYMENT
Failed Check: DNS Check
Error: lookup www.google1.com: no such host
Suggestion: Check your configuration on DNS server
Utilisation de SnowCD avec un proxy HTTP¶
SnowCD peut être exécuté sur un proxy HTTP pour déterminer son statut de connectivité.
Important
Actuellement, Snowflake ne prend pas en charge les serveurs proxy avec terminaison SSL.
Lors de la configuration de votre liste d’autorisation de pare-feu et de proxy, utilisez le relais SSL (c.-à-d. le contournement du déchiffrement SSL).
En utilisant Linux comme exemple représentatif, exécutez la commande suivante pour exécuter SnowCD sur un proxy, en remplaçant les valeurs d’indicateur si nécessaire.
snowcd allowlist.json \
--proxyHost <hostname> \
--proxyPort <port_number> \
--proxyUser <username> \
--proxyPassword <password>
La journalisation est facultative et vous pouvez ajouter les deux indicateurs de journalisation à la commande proxy. Il est important d’inclure un chemin d’accès au fichier journal pour vous assurer que la journalisation a lieu lors de l’exécution de la commande.
snowcd allowlist.json \
--proxyHost <hostname> \
--proxyPort <port_number> \
--proxyUser <username> \
--proxyPassword <password> \
--logLevel trace \
--logPath test.log
Après avoir exécuté cette commande, vous pouvez afficher la trace dans le fichier test.log
.