Configurer un volume externe

Un volume externe est un objet Snowflake nommé, de niveau compte, que vous utilisez pour connecter Snowflake à votre stockage cloud externe pour les tables Iceberg. Un volume externe stocke une entité de gestion de l’identité et de l’accès (IAM) pour votre lieu de stockage. Snowflake utilise l’entité IAM pour se connecter en toute sécurité à votre stockage afin d’accéder aux données des tables, aux métadonnées Iceberg et aux fichiers manifestes qui stockent le schéma des tables, les partitions et d’autres métadonnées.

Un seul volume externe peut prendre en charge une ou plusieurs tables Iceberg.

Vous devez créer un volume externe avant de pouvoir créer une table Apache Iceberg™ dans Snowflake.

Créer un volume externe

Les étapes pour créer un volume externe dépendent de votre fournisseur de stockage Cloud.

Pour obtenir des instructions, reportez-vous aux rubriques suivantes :

Chaque volume externe est associé à un Emplacement de stockage actif particulier, et un seul volume externe peut prendre en charge plusieurs tables Iceberg. Cependant, le nombre de volumes externes dont vous avez besoin dépend de la manière dont vous souhaitez stocker, organiser et sécuriser vos données de table.

Vous pouvez utiliser un seul volume externe si vous souhaitez que les données et les métadonnées de toutes vos tables Snowflake-Iceberg se trouvent dans des sous-répertoires sous le même emplacement de stockage (par exemple, dans le même compartiment S3). Pour configurer ces répertoires pour les tables gérées par Snowflake, voir Répertoires de données et de métadonnées.

Vous pouvez également créer plusieurs volumes externes pour sécuriser différemment différents emplacements de stockage. Par exemple, vous pouvez créer les volumes externes suivants :

  • Un volume externe en lecture seule pour les tables Iceberg gérées en externe.

  • Un volume externe configuré avec un accès en lecture et en écriture pour les tables gérées par Snowflake.

Vérification d’un volume externe

Pour vérifier que Snowflake peut s’authentifier avec succès auprès de votre fournisseur de stockage à l’aide d’un volume externe que vous avez configuré, appelez la fonction SYSTEM$VERIFY_EXTERNAL_VOLUME.

Indiquez le nom du volume externe que vous voulez vérifier.

SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_s3_external_volume');
Copy

Définition d’un volume externe par défaut au niveau du compte, de la base de données ou du schéma

Pour définir un volume externe existant comme volume par défaut à utiliser pour les tables Iceberg, vous pouvez définir le paramètre EXTERNAL_VOLUME aux niveaux suivants :

Compte:

Les administrateurs de compte peuvent utiliser la commande ALTER ACCOUNT pour définir le paramètre du compte. Si la valeur est définie pour le compte, toutes les tables Iceberg créées dans le compte lisent et écrivent dans ce volume externe par défaut.

Objet:

Les utilisateurs peuvent exécuter la commande CREATE <objet> ou ALTER <objet> appropriée pour remplacer la valeur du paramètre EXTERNAL_VOLUME au niveau de la base de données ou du schéma. La déclaration la moins étendue est utilisée : schéma > base de données > compte.

Outre les privilèges minimaux requis pour modifier un objet à l’aide de la commande ALTER <type_objet_> appropriée, un rôle doit avoir le privilège USAGE sur le volume externe.

Note

Les modifications apportées au paramètre EXTERNAL_VOLUME ne s’appliquent qu’aux tables créées après la modification. Les tables existantes continuent d’utiliser le volume externe spécifié lors de leur création.

Exemple

L’instruction suivante définit un volume externe (my_s3_vol) pour une base de données nommée my_database_1 :

ALTER DATABASE my_database_1
  SET EXTERNAL_VOLUME = 'my_s3_vol';
Copy

Après avoir défini un volume externe au niveau de la base de données, vous pouvez créer une table Iceberg dans cette base de données sans spécifier de volume externe. L’instruction suivante crée une table Iceberg dans my_database_1 qui utilise Snowflake comme catalogue et le volume externe par défaut (my_s3_vol) défini pour la base de données.

CREATE ICEBERG TABLE iceberg_reviews_table (
  id STRING,
  product_name STRING,
  product_id STRING,
  reviewer_name STRING,
  review_date DATE,
  review STRING
)
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'my/product_reviews/';
Copy