Utilisation d’un stockage compatible avec Amazon S3

Cette rubrique fournit des informations pour vous aider à accéder au stockage compatible avec Amazon S3 depuis Snowflake.

Une application ou un appareil de stockage est compatible avec Amazon S3 s’il fournit une interface de programmation d’application (API) conforme à la norme industrielle Amazon Simple Storage Service (S3) de l’API REST. L’API REST Amazon S3 permet d’effectuer des opérations CRUD et des actions administratives sur les compartiments et les objets de stockage.

Avec Snowflake, vous pouvez utiliser une zone de préparation externe pour vous connecter à un nombre croissant de solutions de stockage compatibles S3, y compris le stockage on-premises et les périphériques qui existent en dehors du cloud public. La zone de préparation externe stocke un point de terminaison API conforme à S3, le nom et le chemin du compartiment, ainsi que les identifiants de connexion. Pour permettre aux utilisateurs de charger et de décharger des données depuis et vers les emplacements de stockage, vous pouvez accorder des privilèges sur ces zones de préparation à des rôles.

Vous pouvez utiliser la prise en charge par Snowflake du stockage compatible avec Amazon S3 pour effectuer des performances telles que :

Prise en charge de la plate-forme Cloud

Cette fonctionnalité est disponible pour les comptes Snowflake hébergés sur n’importe quelle plate-forme de cloud prise en charge :

  • Amazon Web Services

  • Google Cloud

  • Microsoft Azure

Exigences pour un stockage compatible avec S3

Un point de terminaison d’API compatible avec S3 pour Snowflake doit répondre aux exigences suivantes :

  • Hautement conforme à l’API S3 et capable de passer notre suite de tests publics (dans GitHub). Si le point de terminaison ne se comporte pas comme S3, il ne peut pas fonctionner avec Snowflake.

  • Prise en charge par votre fournisseur de stockage tiers en tant que service testé et conforme à Snowflake S3. Pour obtenir la liste des fournisseurs qui ont testé au moins certains de leurs produits et ont constaté qu’ils fonctionnaient avec Snowflake, voir Prise en charge des fournisseurs pour le stockage compatible avec S3.

  • Accessible depuis le cloud public où est hébergé votre compte Snowflake.

  • Hautement disponible et performant pour répondre aux besoins d’analyse.

  • Configuré pour utiliser des requêtes de type hébergement virtuel. Pour plus d’informations, voir Hébergement virtuel de compartiments dans la documentation d’Amazon S3.

  • Configuré pour utiliser la communication HTTPS avec un certificat TLS valide.

  • Configuré pour utiliser des identifiants de connexion directs.

  • Ne contient pas de numéro de port. Par exemple, le point de terminaison mystorage.com:3000 n’est pas pris en charge.

Important

Les points de terminaison compatibles avec Amazon S3 ne sont pas automatiquement activés pour tous les comptes. Pour en faire la demande, contactez l’équipe chargée des comptes Snowflake ou l’assistance de Snowflake. Assurez-vous d’avoir vérifié les points de terminaison en utilisant notre suite de tests publique (dans GitHub) avant d’envoyer la requête.

Fournissez les informations suivantes avec votre requête :

  • Nom de votre compte Snowflake et déploiement de la région Cloud.

  • L’URL du point de terminaison (c’est-à-dire mon-point-terminaison-s3.entreprise.com).

  • Le vendeur de logiciels ou de matériel qui fournit le point de terminaison.

Création d’une zone de préparation externe pour le stockage compatible avec S3

Pour créer une zone de préparation externe pour le stockage compatible avec S3, créez une zone de préparation externe nommée à l’aide de la commande CREATE STAGE. Un objet de zone de préparation nommé peut être utilisé pour lister des fichiers, charger des données et décharger des fichiers, entre autres actions SQL.

En option, ajoutez une table de répertoire à la zone de préparation externe. Vous pouvez interroger une table de répertoire pour récupérer des URLs de fichiers afin d’accéder aux fichiers du stockage référencé, ainsi qu’à d’autres métadonnées.

Note

Lorsque vous ajoutez une table de répertoire, vous devez attribuer la valeur FALSE au paramètre AUTO_REFRESH. Les métadonnées des zones de préparation externes compatibles S3 ne peuvent pas être actualisées automatiquement.

L’exemple suivant crée une zone de préparation externe nommée my_s3_compat_stage qui dirige vers le compartiment et le chemin nommé my_bucket/files/ au point de terminaison mystorage.com. Les valeurs AWS_KEY_ID et AWS_SECRET_KEY utilisées dans cet exemple ne sont données qu’à titre indicatif.

CREATE STAGE my_s3compat_stage
  URL = 's3compat://my_bucket/files/'
  ENDPOINT = 'mystorage.com'
  CREDENTIALS = (AWS_KEY_ID = '1a2b3c...' AWS_SECRET_KEY = '4x5y6z...')
Copy

Chargement et déchargement des données

Vous pouvez charger et décharger des données à l’aide d’une zone de préparation externe configurée pour un stockage compatible avec S3. Les fonctions suivantes fonctionnent avec le stockage compatible avec S3 :

Extension de votre data lake en utilisant des tables externes

Vous pouvez utiliser des tables externes avec un stockage compatible S3 pour effectuer des requêtes sur les données sans les charger au préalable dans Snowflake. Cette section explique brièvement comment créer et interroger une table externe qui fait référence à un emplacement sur une zone de préparation externe configurée pour le stockage compatible avec S3.

Commencez par créer une table externe à l’aide de CREATE EXTERNAL TABLE qui fait référence à une zone de préparation externe compatible avec S3.

Note

Les métadonnées de ces tables externes ne peuvent pas être actualisées automatiquement. Le paramétrage du paramètre AUTO_REFRESH = TRUE n’est pas pris en charge. Vous devez actualiser manuellement les métadonnées en exécutant une commande ALTER EXTERNAL TABLE … REFRESH pour enregistrer les fichiers ajoutés ou supprimés.

L’exemple suivant crée une table externe nommée et qui référence le sous-chemin path1 dans une zone de préparation nommée my_s3compat_stage. Les fichiers du sous-chemin path1 sont au format Apache Parquet.

CREATE EXTERNAL TABLE et
 LOCATION=@my_s3compat_stage/path1/
 AUTO_REFRESH = FALSE
 REFRESH_ON_CREATE = TRUE
 FILE_FORMAT = (TYPE = PARQUET);
Copy

Après avoir créé une table externe pour le stockage compatible avec S3, vous pouvez la soumettre à des requêtes. Par exemple, interrogez la colonne value dans la table externe créée précédemment :

SELECT value FROM et;
Copy

Les performances des requêtes varient en fonction des performances du réseau, des applications ou des périphériques. Si la performance est essentielle, nous vous recommandons de créer une vue matérialisée sur la table externe.

Prise en charge des fournisseurs pour le stockage compatible avec S3

Vous pouvez utiliser des appareils ou des applications qui disposent d’une API conforme à la norme S3 avec Snowflake. Cependant, votre fournisseur de services de stockage est responsable de la mise en conformité.

Les vendeurs suivants ont indiqué à Snowflake qu’ils ont testé au moins certains de leurs produits et qu’ils ont constaté qu’ils fonctionnent avec Snowflake :

  • Backblaze

  • Cloudflare

  • Cloudian

  • Cohesity

  • Dell

  • Plate-forme de contenu Hitachi

  • IDrive e2

  • MinIO

  • NetApp (StorageGRID)

  • Nutanix

  • PureStorage

  • Possibilité d’évolution

  • Wasabi

Cette liste n’est fournie que pour des raisons de commodité. Snowflake ne teste pas les produits externes pour valider leur compatibilité et ne peut pas résoudre les problèmes des produits vendus par des vendeurs tiers. Si vous avez des questions sur le fonctionnement de votre matériel ou logiciel ayant une API S3 avec Snowflake, nous vous recommandons de contacter directement le vendeur.

Test de votre API compatible avec S3

Si vous êtes un développeur de matériel ou de logiciel qui a créé une API compatible avec S3, vous pouvez utiliser notre ensemble de tests public (dans GitHub) pour tester si votre API S3 fonctionne avec Snowflake. Cet ensemble de tests recherche les inadéquations évidentes entre votre implémentation et ce que Snowflake attend de S3. Cependant, notez qu’il peut y avoir des cas où les tests n’identifient pas l’incompatibilité.

Si vous êtes un client et que vous souhaitez tester vos propres appareils, nous vous recommandons de contacter votre fournisseur pour qu’il effectue ces tests. Vous pouvez également effectuer ces tests publics sur vos appareils pour évaluer la compatibilité.