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).

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 :

  1. Connectez-vous à la console de gestion AWS.

  2. Dans le tableau de bord d’accueil, sélectionnez Identity & Access Management (IAM) :

    Gestion des identités et de l'accès dans la console de gestion AWS
  3. Dans le volet de navigation de gauche, sélectionnez Account settings.

  4. 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.

  5. Dans le volet de navigation de gauche, sélectionnez Policies.

  6. Sélectionnez Create Policy :

    Bouton Créer une politique de la page Politiques
  7. Sélectionnez l’onglet JSON.

  8. 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 le prefix 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>/*"
                         ]
                   }
                }
             }
       ]
    }
    
    Copy
  9. Sélectionnez Review policy.

  10. Saisissez une politique Name (par exemple, snowflake_access) et une Description facultative.

    Bouton Créer une politique de la page Examiner les politiques
  11. 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.

  1. Connectez-vous à la console de gestion AWS.

  2. Dans le tableau de bord d’accueil, sélectionnez Identity & Access Management (IAM) :

    Gestion des identités et de l'accès dans la console de gestion AWS
  3. Dans le volet de navigation de gauche, sélectionnez Roles.

  4. Sélectionnez Create role.

    Sélection de la page Entités de confiance de la console de gestion AWS
  5. Comme type d’entité de confiance, sélectionnez Another AWS account.

  6. 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.

  7. 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.

  8. Sélectionnez Next.

  9. 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.

  10. Sélectionnez Next.

    Page d'examen de la console de gestion AWS
  11. 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.

  12. 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.

    Rôle IAM

É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.

  1. 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.

  2. Créez un type de clé symétrique. Pour l’utilisation de la clé, sélectionnez Encrypt and decrypt. Sélectionnez Next.

  3. Dans la case Alias, créez un nom pour la clé et sélectionnez Next.

  4. Si nécessaire, indiquez un administrateur pour la clé et sélectionnez Next.

  5. À 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.

  6. Sélectionnez Finish pour créer la clé.

  7. 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')
         )
      );
Copy

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

  1. 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;
    
    Copy
  2. 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.

  1. Connectez-vous à la console de gestion AWS.

  2. Sélectionnez Identity & Access Management (IAM) :

    Gestion des identités et de l'accès dans la console de gestion AWS
  3. Dans le volet de navigation de gauche, sélectionnez Roles.

  4. Sélectionnez le rôle que vous avez créé dans Étape 2 : Créer un rôle IAM dans AWS.

  5. Sélectionnez l’onglet Trust relationships.

  6. Sélectionnez Edit trust relationship.

  7. 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>"
            }
          }
        }
      ]
    }
    
    Copy

    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.

  8. 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.

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')
      )
    );
Copy

É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;
Copy

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.

  1. Connectez-vous à la console Google Cloud Platform en tant qu’éditeur de projet.

  2. Dans le tableau de bord d’accueil, sélectionnez IAM & admin » Roles.

  3. Sélectionnez Create Role.

  4. Saisissez un nom et une description pour le rôle personnalisé.

  5. Sélectionnez Add Permissions.

  6. 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

  7. Sélectionnez Create.

Affectation du rôle personnalisé au compte de service Cloud Storage

  1. Connectez-vous à la console Google Cloud Platform en tant qu’éditeur de projet.

  2. Dans le tableau de bord d’accueil, sélectionnez Storage » Browser :

    Liste de compartiments de la console Google Cloud Platform
  3. Sélectionnez un compartiment à configurer pour l’accès.

  4. Dans le coin supérieur droit, sélectionnez SHOW INFO PANEL. Le panneau d’information du compartiment apparaît.

  5. 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.

    Panneau d'information sur les compartiments de la console Google Cloud Platform
  6. 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é.

  7. 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.

    Liste de rôles de visionneur d'objets de stockage de la console Google Cloud Platform

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).

  1. Connectez-vous à la console Google Cloud Platform en tant qu’éditeur de projet.

  2. Dans le tableau de bord d’accueil, sélectionnez Security » Cryptographic keys.

  3. Sélectionnez le porte-clés affecté à votre compartiment GCS.

  4. Dans le coin supérieur droit, sélectionnez SHOW INFO PANEL. Le panneau d’information du porte-clés apparaît.

  5. 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.

  6. Dans la liste déroulante Select a role, sélectionnez le rôle Cloud KMS CryptoKey Encrypter/Decrypter.

  7. 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.

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'
      )
    );
Copy

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

  1. 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;
    
    Copy

    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.

  2. Dans un navigateur web, accédez à la page de demande d’autorisations Microsoft (l”AZURE_CONSENT_URL).

  3. 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).

  4. Connectez-vous au portail Microsoft Azure.

  5. 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.

  6. Sélectionnez Access Control (IAM) » Add role assignment.

  7. 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ètre ALLOW_WRITES du volume externe doit être défini sur TRUE (la valeur par défaut).

  8. 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.

    Ajout d'une affectation de rôle dans la console de stockage Azure
  9. 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.

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.

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';
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