Configurer un volume externe pour des tables Iceberg¶
Cette rubrique fournit des informations pour vous aider à configurer un volume externe pour des tables Iceberg. Avant de pouvoir créer une table Iceberg, vous devez disposer d’un volume externe.
Vous pouvez créer un volume externe pour les services de stockage Cloud suivants :
Configurer un volume externe pour Amazon S3¶
Cette section explique comment accorder à Snowflake un accès restreint à votre propre compartiment Amazon S3 à l’aide d’un volume externe.
Un administrateur de votre organisation accorde à l’utilisateur IAM des autorisations dans votre compte Amazon Web Services (AWS).
Étape 1 : Configurer des autorisations d’accès pour le compartiment S3
Étape 3 : Accorder les privilèges requis pour le chiffrement SSE-KMS au rôle IAM (facultatif)
Étape 5 : Récupérer l’utilisateur IAM AWS de votre compte Snowflake
Note
Snowflake ne peut pas prendre en charge les volumes externes dont les noms de compartiment contiennent des points (par exemple,
my.s3.bucket
). Snowflake utilise des chemins d’accès de style hôte virtuel et HTTPS pour accéder aux données de S3. Cependant, S3 ne prend pas en charge SSL pour les compartiments de style hôte virtuel dont le nom comporte des points.Pour suivre les instructions de cette section, des autorisations sont nécessaires dans AWS pour pouvoir créer et gérer des politiques et des rôles IAM. Si vous n’êtes pas un administrateur AWS, demandez à votre administrateur AWS d’effectuer ces tâches.
Pour faciliter la récupération des données, activez la gestion des versions pour votre emplacement de stockage Cloud externe.
Étape 1 : Configurer des autorisations d’accès pour le compartiment S3¶
Conditions de contrôle d’accès AWS¶
Pour pouvoir accéder aux fichiers du dossier et des sous-dossiers, Snowflake nécessite les autorisations suivante sur un dossier et un compartiment S3 :
s3:DeleteObject
s3:DeleteObjectVersion
s3:GetBucketLocation
s3:GetObject
s3:GetObjectVersion
s3:ListBucket
s3:PutObject
Note
L’autorisation s3:PutObject
permet d’accéder en écriture à l’emplacement du volume externe. Pour une configuration complète de l’accès en écriture, le paramètre ALLOW_WRITES
du volume externe doit être défini sur TRUE
(la valeur par défaut).
Comme meilleure pratique, Snowflake recommande de créer une politique IAM désignée qui accorde à Snowflake l’accès au compartiment S3. Vous pouvez ensuite associer la politique à un rôle et utiliser les identifiants de sécurité générés par AWS pour que le rôle puisse accéder aux fichiers du compartiment.
Créer une politique IAM¶
Pour configurer les autorisations d’accès à Snowflake dans la Console de gestion AWS, procédez comme suit :
Connectez-vous à la console de gestion AWS.
Dans le tableau de bord d’accueil, sélectionnez Identity & Access Management (IAM) :
Dans le volet de navigation de gauche, sélectionnez Account settings.
Dans la liste Security Token Service Regions, recherchez la région Snowflake dans laquelle se trouve votre compte. Si le statut est Inactive, sélectionnez Activate.
Dans le volet de navigation de gauche, sélectionnez Policies.
Sélectionnez Create Policy :
Sélectionnez l’onglet JSON.
Ajoutez une politique qui accorde à Snowflake l’accès au dossier et au compartiment S3.
Les politiques AWS prennent en charge une variété de cas d’utilisation de sécurité différents. La politique suivante (au format JSON) fournit à Snowflake les autorisations requises pour lire et écrire des données à l’aide d’un seul chemin d’accès au dossier et au compartiment.
Copiez et collez le texte dans l’éditeur de politiques :
Note
Remplacez le
bucket
et leprefix
par votre nom de compartiment actuel et le préfixe du chemin d’accès au dossier.Les Amazon Resource Names (ARN) pour les compartiments dans des régions gouvernementales ont un préfixe
arn:aws-us-gov:s3:::
.La définition de la condition
"s3:prefix":
sur["*"]
ou sur["prefix/*"]
donne accès à tous les préfixes du compartiment spécifié ou du chemin d’accès au compartiment, respectivement.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion", "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": "arn:aws:s3:::<bucket>/<prefix>/*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::<bucket>", "Condition": { "StringLike": { "s3:prefix": [ "<prefix>/*" ] } } } ] }
Sélectionnez Review policy.
Saisissez une politique Name (par exemple,
snowflake_access
) et une Description facultative.Sélectionnez Create policy.
Étape 2 : Créer un rôle IAM dans AWS¶
Dans la console de gestion AWS, créez un rôle AWS IAM qui accorde des privilèges sur le compartiment S3 contenant vos fichiers de données.
Connectez-vous à la console de gestion AWS.
Dans le tableau de bord d’accueil, sélectionnez Identity & Access Management (IAM) :
Dans le volet de navigation de gauche, sélectionnez Roles.
Sélectionnez Create role.
Comme type d’entité de confiance, sélectionnez Another AWS account.
Dans le champ Account ID , saisissez votre propre ID de compte AWS. Dans une étape ultérieure, vous modifierez la relation de confiance et accorderez l’accès à Snowflake.
Sélectionnez l’option Require external ID. Un ID externe est utilisé pour accorder l’accès à vos ressources AWS (telles que des compartiments S3) à un tiers comme Snowflake.
Saisissez un ID de type caractère générique tel que
0000
. Dans une étape ultérieure, vous modifierez la relation de confiance de votre rôle IAM et spécifierez l’ID externe de votre volume externe.Sélectionnez Next.
Recherchez la politique que vous avez créée dans Étape 1 : Configurer des autorisations d’accès pour le compartiment S3 et sélectionnez-la.
Sélectionnez Next.
Saisissez un nom et une description pour le rôle, puis sélectionnez Create role. Vous avez maintenant créé une politique IAM pour un compartiment, vous avez créé un rôle IAM et vous avez associé la politique au rôle.
Sur la page de synthèse du rôle, recherchez et enregistrez la valeur Role ARN. Vous utiliserez cette valeur à l’étape suivante pour créer un volume externe Snowflake référençant ce rôle.
Étape 3 : Accorder les privilèges requis pour le chiffrement SSE-KMS au rôle IAM (facultatif)¶
Pour charger un objet chiffré avec une clé KMS AWS sur Amazon S3, le rôle IAM que vous avez créé dans Étape 2 : Créer un rôle IAM dans AWS a besoin d’autorisations kms:GenerateDataKey
sur la clé. Pour télécharger un objet chiffré avec une clé KMS AWS, le rôle IAM a besoin d’autorisations kms:Decrypt
sur la clé.
Si vous souhaitez utiliser une clé KMS pour votre chiffrement côté serveur, procédez comme suit pour créer une clé et la référencer.
Dans la Console de gestion AWS, accédez au service KMS. Dans la navigation de gauche, sélectionnez Customer managed keys, puis Create key. Vous devez créer une clé dans la même région que celle de votre compartiment.
Créez un type de clé symétrique. Pour l’utilisation de la clé, sélectionnez Encrypt and decrypt. Sélectionnez Next.
Dans la case Alias, créez un nom pour la clé et sélectionnez Next.
Si nécessaire, indiquez un administrateur pour la clé et sélectionnez Next.
À l’étape Define key usage permissions, saisissez le nom de votre rôle IAM. Cochez la case en regard du rôle, puis sélectionnez Next.
Sélectionnez Finish pour créer la clé.
Recherchez la clé dans la liste des clés gérées par le client, sélectionnez-la et enregistrez son ARN. Voici un exemple d’ARN d’une clé :
arn:aws:kms:us-west-2:111111122222:key/1a1a11aa-aa1a-aaa1a-a1a1-000000000000
.Lorsque vous créez votre volume externe, définissez la valeur
KMS_KEY_ID
sur l’ARN de votre clé.
Étape 4 : Créer un volume externe dans Snowflake¶
Créez un volume externe via la commande CREATE EXTERNAL VOLUME.
Note
Seuls les administrateurs de compte (utilisateurs dotés du rôle ACCOUNTADMIN) peuvent exécuter cette commande SQL.
L’exemple suivant crée un volume externe qui définit un emplacement de stockage Amazon S3 avec chiffrement :
CREATE OR REPLACE EXTERNAL VOLUME exvol
STORAGE_LOCATIONS =
(
(
NAME = 'my-s3-us-west-2'
STORAGE_PROVIDER = 'S3'
STORAGE_BASE_URL = 's3://MY_EXAMPLE_BUCKET/'
STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::123456789012:role/myrole'
ENCRYPTION=(TYPE='AWS_SSE_KMS' KMS_KEY_ID='arn:aws:kms:us-west-2:111111122222:key/1a1a11aa-aa1a-aaa1a-a1a1-000000000000')
)
);
Note
En option, utilisez le paramètre STORAGE_AWS_EXTERNAL_ID pour spécifier votre propre ID externe. Vous pouvez sélectionner cette option pour utiliser le même ID externe sur plusieurs volumes externes et/ou intégrations de stockage.
Étape 5 : Récupérer l’utilisateur IAM AWS de votre compte Snowflake¶
Pour récupérer l’ARN de l’utilisateur IAM AWS automatiquement créé pour votre compte Snowflake, utilisez la commande DESCRIBE EXTERNAL VOLUME. Indiquez le nom du volume externe que vous avez créé précédemment.
Par exemple :
DESC EXTERNAL VOLUME exvol;
Enregistrez les valeurs des propriétés suivantes :
Propriété
Description
STORAGE_AWS_IAM_USER_ARN
Utilisateur IAM AWS créé pour votre compte Snowflake, par exemple,
arn:aws:iam::123456789001:user/abc1-b-self1234
. Snowflake provisionne un seul utilisateur IAM pour l’intégralité de votre compte Snowflake. Tous les volumes externes S3 de votre compte utilisent cet utilisateur IAM.STORAGE_AWS_EXTERNAL_ID
ID externe que Snowflake utilise pour établir une relation de confiance avec AWS. Si vous n’avez pas spécifié d’ID externe (
STORAGE_AWS_EXTERNAL_ID
) lors de la création du volume externe, Snowflake génère un ID à utiliser.Vous fournirez ces valeurs à l’étape suivante.
Étape 6 : Accorder à l’utilisateur IAM des autorisations lui permettant d’accéder à des objets de compartiment¶
Dans cette étape, vous configurez les autorisations qui permettent à l’utilisateur IAM de votre compte Snowflake d’accéder aux objets de votre compartiment S3.
Connectez-vous à la console de gestion AWS.
Sélectionnez Identity & Access Management (IAM) :
Dans le volet de navigation de gauche, sélectionnez Roles.
Sélectionnez le rôle que vous avez créé dans Étape 2 : Créer un rôle IAM dans AWS.
Sélectionnez l’onglet Trust relationships.
Sélectionnez Edit trust relationship.
Modifiez le document de politique en y ajoutant les valeurs de sortie que vous avez enregistrées dans Étape 5 : Récupérer l’utilisateur IAM AWS de votre compte Snowflake :
Document de politique pour le rôle IAM
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "<snowflake_user_arn>" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<snowflake_external_id>" } } } ] }
Où :
snowflake_user_arn
est la valeur STORAGE_AWS_IAM_USER_ARN que vous avez enregistrée.snowflake_external_id
est la valeur STORAGE_AWS_EXTERNAL_ID que vous avez enregistrée.
Note
Vous devez mettre à jour ce document de politique si vous créez un nouveau volume externe (ou si vous recréez un volume externe existant via la syntaxe CREATE OR REPLACE EXTERNAL VOLUME) et que vous ne fournissez pas votre propre ID externe. Pour des raisons de sécurité, un volume externe nouveau ou recréé a un ID externe différent et ne peut pas résoudre la relation de confiance à moins que vous ne mettiez à jour cette politique de confiance.
Sélectionnez Update Trust Policy. Les modifications sont enregistrées.
Note
Pour vérifier que vos autorisations sont configurées correctement, créez une table Iceberg via ce volume externe. Snowflake ne vérifie pas que vos autorisations sont correctement définies tant que la première table Iceberg qui référence ce volume externe n’est pas créée.
Prochaines étapes¶
Après avoir configuré un volume externe, vous pouvez créer une table Iceberg.
Pour créer une table Iceberg en lecture seule qui utilise une intégration de catalogue, voir Configurer une intégration de catalogue pour des tables Iceberg.
Pour créer une table Iceberg avec une prise en charge complète de la plateforme Snowflake, voir Créer une table Iceberg avec Snowflake comme catalogue.
Configurer un volume externe pour Google Cloud Storage¶
Cette section explique comment accorder à Snowflake un accès restreint à un compartiment Google Cloud Storage (GCS) à l’aide d’un volume externe.
Un administrateur de votre organisation accorde à l’utilisateur IAM des autorisations dans votre compte Google Cloud.
Note
Pour suivre les instructions de cette section, des autorisations sont nécessaires dans Google Cloud pour pouvoir créer et gérer des politiques et des rôles IAM. Si vous n’êtes pas un administrateur Google Cloud, demandez à votre administrateur Google Cloud d’effectuer ces tâches.
Pour faciliter la récupération des données, activez la gestion des versions pour votre emplacement de stockage Cloud externe.
Étape 1 : Créer un volume externe dans Snowflake¶
Créez un volume externe via la commande CREATE EXTERNAL VOLUME.
Note
Seuls les administrateurs de compte (utilisateurs dotés du rôle ACCOUNTADMIN) peuvent exécuter cette commande SQL.
L’exemple suivant crée un volume externe qui définit un emplacement de stockage GCS avec chiffrement :
CREATE EXTERNAL VOLUME exvol
STORAGE_LOCATIONS =
(
(
NAME = 'my-us-east-1'
STORAGE_PROVIDER = 'GCS'
STORAGE_BASE_URL = 'gcs://mybucket1/path1/'
ENCRYPTION=(TYPE='GCS_SSE_KMS' KMS_KEY_ID = '1234abcd-12ab-34cd-56ef-1234567890ab')
)
);
Étape 2 : Récupérer le compte de service Cloud Storage de votre compte Snowflake¶
Pour récupérer l’ID du compte de service Cloud Storage automatiquement créé pour votre compte Snowflake, utilisez la commande DESCRIBE EXTERNAL VOLUME. Indiquez le nom du volume externe que vous avez créé précédemment.
Par exemple :
DESC EXTERNAL VOLUME exvol;
Enregistrez la valeur de la propriété STORAGE_GCP_SERVICE_ACCOUNT
dans la sortie (par exemple, service-account-id@project1-123456.iam.gserviceaccount.com
).
Snowflake provisionne un seul compte de service Cloud Storage pour l’ensemble de votre compte Snowflake. Tous les volumes externes Google Cloud Storage utilisent ce compte de service.
Étape 3 : Accorder au compte de service des autorisations lui permettant d’accéder à des objets du compartiment¶
À cette étape, vous configurez les autorisations d’accès IAM pour Snowflake dans votre console Google Cloud Platform.
Créer un rôle IAM personnalisé¶
Créez un rôle personnalisé disposant des autorisations requises pour accéder au compartiment et obtenir des objets.
Connectez-vous à la console Google Cloud Platform en tant qu’éditeur de projet.
Dans le tableau de bord d’accueil, sélectionnez IAM & admin » Roles.
Sélectionnez Create Role.
Saisissez un nom et une description pour le rôle personnalisé.
Sélectionnez Add Permissions.
Filtrez la liste des autorisations et ajoutez les éléments suivants dans la liste :
storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
Sélectionnez Create.
Affectation du rôle personnalisé au compte de service Cloud Storage¶
Connectez-vous à la console Google Cloud Platform en tant qu’éditeur de projet.
Dans le tableau de bord d’accueil, sélectionnez Storage » Browser :
Sélectionnez un compartiment à configurer pour l’accès.
Dans le coin supérieur droit, sélectionnez SHOW INFO PANEL. Le panneau d’information du compartiment apparaît.
Dans le champ Add members, recherchez le nom du compte de service à partir de la sortie de Étape 2 : Récupérer le compte de service Cloud Storage de votre compte Snowflake.
Dans la liste déroulante Select a role, sélectionnez le
<rôle>
Storage » Custom ». Le<rôle>
est le rôle Cloud Storage personnalisé que vous avez créé dans Créer un rôle IAM personnalisé.Sélectionnez Add. Le nom du compte de service est ajouté à la liste déroulante des rôles Storage Object Viewer dans le panneau d’informations.
Note
Pour vérifier que vos autorisations sont configurées correctement, créez une table Iceberg via ce volume externe. Snowflake ne vérifie pas que vos autorisations sont correctement définies tant que la première table Iceberg qui référence ce volume externe n’est pas créée.
Octroi au compte de service Cloud Storage des autorisations sur les clés de chiffrement Key Management Service (KMS) Cloud¶
Note
Cette étape n’est requise que si votre compartiment GCS est chiffré à l’aide d’une clé stockée dans Google Cloud Key Management Service (Cloud KMS).
Connectez-vous à la console Google Cloud Platform en tant qu’éditeur de projet.
Dans le tableau de bord d’accueil, sélectionnez Security » Cryptographic keys.
Sélectionnez le porte-clés affecté à votre compartiment GCS.
Dans le coin supérieur droit, sélectionnez SHOW INFO PANEL. Le panneau d’information du porte-clés apparaît.
Dans le champ Add members, recherchez le nom du compte de service à partir de la sortie DESCRIBE EXTERNAL VOLUME dans Étape 2 : Récupérer le compte de service Cloud Storage de votre compte Snowflake.
Dans la liste déroulante Select a role, sélectionnez le rôle Cloud KMS CryptoKey Encrypter/Decrypter.
Sélectionnez Add. Le nom du compte de service est ajouté à la liste déroulante des rôles Cloud KMS CryptoKey Encrypter/Decrypter dans le panneau d’informations.
Prochaines étapes¶
Après avoir configuré un volume externe, vous pouvez créer une table Iceberg.
Pour créer une table Iceberg en lecture seule qui utilise une intégration de catalogue, voir Configurer une intégration de catalogue pour des tables Iceberg.
Pour créer une table Iceberg avec une prise en charge complète de la plateforme Snowflake, voir Créer une table Iceberg avec Snowflake comme catalogue.
Configuration d’un volume externe pour Azure Storage¶
Cette section explique comment accorder à Snowflake un accès restreint à votre propre conteneur Microsoft Azure (Azure) à l’aide d’un volume externe. Snowflake prend en charge les services de stockage Cloud Azure suivants pour les volumes externes :
Stockage d’objets blob
Data Lake Storage Gen2
Usage général v1
Usage général v2
Un administrateur de votre organisation accorde des autorisations à l’utilisateur IAM dans votre compte Azure.
Note
Pour suivre les instructions de cette section, des autorisations sont nécessaires dans Azure pour pouvoir créer et gérer des stratégies et des rôles IAM. Si vous n’êtes pas un administrateur Azure, demandez à votre administrateur Azure d’effectuer ces tâches.
Pour faciliter la récupération des données, activez la gestion des versions pour votre emplacement de stockage Cloud externe.
Étape 1 : Créer un volume externe dans Snowflake¶
Créez un volume externe via la commande CREATE EXTERNAL VOLUME.
Note
Seuls les administrateurs de compte (utilisateurs dotés du rôle ACCOUNTADMIN) peuvent exécuter cette commande SQL.
L’exemple suivant crée un volume externe qui définit un emplacement de stockage Azure avec chiffrement :
CREATE EXTERNAL VOLUME exvol
STORAGE_LOCATIONS =
(
(
NAME = 'my-azure-northeurope'
STORAGE_PROVIDER = 'AZURE'
STORAGE_BASE_URL = 'azure://exampleacct.blob.core.windows.net/my_container_northeurope/'
AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9'
)
);
Note
Utilisez le préfixe azure://
et non https://
lorsque vous spécifiez une valeur pour STORAGE_BASE_URL.
Étape 2 : Accorder à Snowflake un accès à l’emplacement de stockage¶
Pour récupérer une URL vers la page de demande d’autorisations Microsoft, utilisez la commande DESCRIBE EXTERNAL VOLUME. Indiquez le nom du volume externe que vous avez créé précédemment.
DESC EXTERNAL VOLUME exvol;
Enregistrez les valeurs des propriétés suivantes :
Propriété
Description
AZURE_CONSENT_URL
URL vers la page de demande d’autorisations de Microsoft.
AZURE_MULTI_TENANT_APP_NAME
Nom de l’application client Snowflake créée pour votre compte. Ultérieurement dans cette section, vous accorderez à cette application l’autorisation nécessaire pour obtenir un jeton d’accès sur votre emplacement de stockage autorisé.
Vous utiliserez ces valeurs dans les étapes suivantes.
Dans un navigateur web, accédez à la page de demande d’autorisations Microsoft (l”
AZURE_CONSENT_URL
).Sélectionnez Accept. Cette action permet au principal du service Azure créé pour votre compte Snowflake d’obtenir un jeton d’accès sur n’importe quelle ressource à l’intérieur de votre client. L’obtention d’un jeton d’accès ne réussit que si vous accordez au principal du service les autorisations appropriées sur le conteneur (voir l’étape suivante).
La page de demande d’autorisations Microsoft redirige vers le site d’entreprise de Snowflake (snowflake.com).
Connectez-vous au portail Microsoft Azure.
Allez à Azure Services » Storage Accounts. Sélectionnez le nom du compte de stockage auquel vous souhaitez accorder l’accès au principal du service Snowflake.
Note
Vous devez définir des autorisations IAM pour un volume externe au niveau du compte de stockage, et non au niveau du conteneur.
Sélectionnez Access Control (IAM) » Add role assignment.
Sélectionnez le rôle
Storage Blob Data Contributor
pour accorder un accès en lecture et en écriture au principal du service Snowflake.Note
Le rôle
Storage Blob Data Contributor
permet d’accéder en écriture à l’emplacement du volume externe. Pour une configuration complète de l’accès en écriture, le paramètreALLOW_WRITES
du volume externe doit être défini surTRUE
(la valeur par défaut).Recherchez le principal du service Snowflake. Il s’agit de l’identité de la propriété AZURE_MULTI_TENANT_APP_NAME dans la sortie DESC EXTERNAL VOLUME (à l’étape 1). Recherchez la chaîne avant le trait de soulignement dans la propriété AZURE_MULTI_TENANT_APP_NAME.
Important
Azure peut prendre une heure ou plus pour créer le principal de service Snowflake demandé via la page de demande Microsoft dans cette section. Si le principal du service n’est pas disponible immédiatement, attendez une heure ou deux, puis relancez la recherche.
Si vous supprimez le principal du service, le volume externe cesse de fonctionner.
Sélectionnez Review + assign.
Note
Lors de l’attribution d’un rôle, il faut compter jusqu’à 10 minutes pour que les modifications soient prises en compte. Pour plus d’informations, voir Symptôme - Les changements d’attribution de rôle ne sont pas détectés dans la documentation Microsoft Azure.
Note
Pour vérifier que vos autorisations sont configurées correctement, créez une table Iceberg via ce volume externe. Snowflake ne vérifie pas que vos autorisations sont correctement définies tant que la première table Iceberg qui référence ce volume externe n’est pas créée.
Prochaines étapes¶
Après avoir configuré un volume externe, vous pouvez créer une table Iceberg.
Pour créer une table Iceberg en lecture seule qui utilise une intégration de catalogue, voir Configurer une intégration de catalogue pour des tables Iceberg.
Pour créer une table Iceberg avec une prise en charge complète de la plateforme Snowflake, voir Créer une table Iceberg avec Snowflake comme catalogue.
Activer la gestion des versions pour votre stockage Cloud externe¶
Les données des tables Iceberg sont stockées dans un stockage Cloud externe que vous gérez. Si les données se trouvent dans un référentiel de données central (ou data lake) exploité par plusieurs outils et services, une suppression accidentelle ou une corruption peut se produire.
Pour prendre en charge la récupération d’objets, vous pouvez activer la gestion des versions pour votre stockage Cloud externe.
Pour activer la gestion des versions pour Amazon S3, voir Activation de la gestion des versions sur les compartiments.
Pour activer la gestion des versions pour Google Cloud Storage, voir Utiliser la gestion des versions des objets.
Pour activer la gestion des versions pour Azure, voir Activation de la gestion des versions blob.
Emplacement de stockage actif¶
Pendant la période d’avant-première, chaque volume externe prend en charge un seul emplacement de stockage actif. L’emplacement actif reste le même pendant toute la durée de vie du volume externe.
Si vous spécifiez plusieurs emplacements de stockage lorsque vous créez un volume externe, Snowflake assigne un emplacement comme emplacement actif pour le volume externe.
L’affectation a lieu lorsque la première table qui utilise le volume externe est créée. Snowflake utilise la logique suivante pour choisir un emplacement actif :
Si la liste
STORAGE_LOCATIONS
contient un ou plusieurs emplacements de stockage local, Snowflake utilise le premier emplacement de stockage local de la liste. Un emplacement de stockage local se trouve chez le même fournisseur Cloud et dans la même région que votre compte Snowflake.Si la liste
STORAGE_LOCATIONS
ne contient aucun emplacement de stockage local, Snowflake sélectionne le premier emplacement de la liste.
Note
Les tables Iceberg inter-cloud/interrégionales ne sont prises en charge que lorsque vous utilisez une intégration de catalogue. Pour plus d’informations, voir Prise en charge inter-Cloud/interrégionale.
Les volumes externes créés avant la version 7.44 de Snowflake peuvent avoir utilisé une logique différente pour sélectionner un emplacement actif.
Définition d’un volume externe au niveau du compte, de la base de données ou du schéma¶
Pour définir le volume externe existant à 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.
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';
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/';