ALTER EXTERNAL VOLUME

Modifie les propriétés d’un volume externe existant.

Voir aussi :

CREATE EXTERNAL VOLUME , DROP EXTERNAL VOLUME , SHOW EXTERNAL VOLUMES , DESCRIBE EXTERNAL VOLUME

Dans ce chapitre :

Syntaxe

ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> ADD STORAGE_LOCATION =
                                             (
                                             NAME = '<name>'
                                             cloudProviderParams
                                             )

ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> REMOVE STORAGE_LOCATION '<name>'

ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> SET ALLOW_WRITES = TRUE

ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'
Copy

Où :

cloudProviderParams (for Amazon S3) ::=
  STORAGE_PROVIDER = 'S3'
  STORAGE_AWS_ROLE_ARN = '<iam_role>'
  STORAGE_BASE_URL = 's3://<bucket>[/<path>/]'
  [ ENCRYPTION = ( [ TYPE = 'AWS_SSE_S3' ] |
              [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = '<string>' ] ] |
              [ TYPE = 'NONE' ] ) ]
Copy
cloudProviderParams (for Google Cloud Storage) ::=
  STORAGE_PROVIDER = 'GCS'
  STORAGE_BASE_URL = 'gcs://<bucket>[/<path>/]'
  [ ENCRYPTION = ( [ TYPE = 'GCS_SSE_KMS' ] [ KMS_KEY_ID = '<string>' ] |
              [ TYPE = 'NONE' ] ) ]
Copy
cloudProviderParams (for Microsoft Azure) ::=
  STORAGE_PROVIDER = 'AZURE'
  AZURE_TENANT_ID = '<tenant_id>'
  STORAGE_BASE_URL = 'azure://<account>.blob.core.windows.net/<container>[/<path>/]'
Copy

Paramètres

name

Indique l’identificateur du volume externe à modifier.

Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus d’informations, voir Exigences relatives à l’identificateur.

ADD STORAGE_LOCATION

Ajoute l’emplacement de stockage spécifié à la définition du volume externe. Pour ajouter plusieurs emplacements de stockage, exécutez une instruction ALTER EXTERNAL VOLUME pour chaque emplacement de stockage.

Note

Les tables Iceberg écrivent dans le et lisent à partir du premier emplacement de stockage de l’ensemble qui se trouve dans la même région que celle de votre compte Snowflake. Pour afficher la définition du volume externe et les régions d’emplacement de stockage, exécutez DESCRIBE EXTERNAL VOLUME.

REMOVE STORAGE_LOCATION

Supprime l’emplacement de stockage spécifié de la définition du volume externe. Pour supprimer plusieurs emplacements de stockage, exécutez une instruction ALTER EXTERNAL VOLUME pour chaque emplacement de stockage.

Note

L’instruction ALTER EXTERNAL VOLUME échoue si vous tentez de supprimer l’emplacement de stockage actif utilisé par les tables Iceberg dans votre compte.

SET ...

Spécifie un(e) ou plusieurs paramètres/propriétés à définir pour le volume externe (séparé(e)s par des espaces, des virgules ou de nouvelles lignes) :

ALLOW_WRITES = TRUE

Spécifie que les opérations d’écriture sont autorisées pour le volume externe ; doit être défini sur TRUE pour les tables Iceberg qui utilisent Snowflake comme catalogue.

COMMENT = 'string_literal'

Chaîne (littéral) qui spécifie un commentaire pour le volume externe.

Paramètres du fournisseur Cloud (cloudProviderParams)

Amazon S3

STORAGE_PROVIDER = 'S3'

Spécifie le fournisseur de stockage dans le Cloud qui stocke vos fichiers de données.

STORAGE_AWS_ROLE_ARN = iam_role

Spécifie le nom de ressource Amazon (ARN) du rôle AWS de gestion des identités et des accès (IAM) qui octroie des privilèges sur le compartiment S3 contenant vos fichiers de données. Pour plus d’informations, voir Configuration de l’accès sécurisé à Amazon S3.

STORAGE_BASE_URL = 's3://bucket[/path/]'

Spécifie l’URL de base de votre emplacement de stockage Cloud, où :

  • bucket est le nom d’un compartiment S3 qui stocke vos fichiers de données.

  • path est un chemin facultatif qui peut être utilisé pour fournir un contrôle granulaire sur les objets du compartiment.

ENCRYPTION = ( [ TYPE = 'AWS_SSE_S3' ] | [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = 'string' ] ] | [ TYPE = 'NONE' ] )

Spécifie les propriétés nécessaires au chiffrement des données sur le volume externe.

TYPE = ...

Indique le type de chiffrement utilisé. Les valeurs possibles sont les suivantes :

KMS_KEY_ID = 'string' (s’applique uniquement au chiffrement AWS_SSE_KMS)

Spécifie éventuellement l’ID de la clé gérée par AWS KMS qui est utilisée pour chiffrer les fichiers écrits dans le compartiment. Si aucune valeur n’est fournie, votre clé KMS par défaut est utilisée pour chiffrer les fichiers pour écrire les données.

Notez que cette valeur est ignorée lors de la lecture des données.

Google Cloud Storage

STORAGE_PROVIDER = 'GCS'

Spécifie le fournisseur de stockage dans le Cloud qui stocke vos fichiers de données.

STORAGE_BASE_URL = 'gcs://bucket[/path/]'

Spécifie l’URL de base de votre emplacement de stockage Cloud, où :

  • bucket est le nom d’un compartiment Cloud Storage qui stocke vos fichiers de données.

  • path est un chemin facultatif qui peut être utilisé pour fournir un contrôle granulaire sur les objets du compartiment.

ENCRYPTION = ( [ TYPE = 'GCS_SSE_KMS' ] [ KMS_KEY_ID = 'string' ] | [ TYPE = 'NONE' ] )

Spécifie les propriétés nécessaires au chiffrement des données sur le volume externe.

TYPE = ...

Indique le type de chiffrement utilisé. Les valeurs possibles sont les suivantes :

KMS_KEY_ID = 'string' (s’applique uniquement au chiffrement GCS_SSE_KMS)

Spécifie l’ID de la clé gérée par Cloud KMS qui est utilisée pour chiffrer les fichiers écrits dans le compartiment.

Cette valeur est ignorée lors de la lecture des données. L’opération de lecture devrait réussir si le compte de service dispose d’autorisations suffisantes pour les données et des clés KMS spécifiées.

Microsoft Azure

STORAGE_PROVIDER = 'AZURE'

Spécifie le fournisseur de stockage dans le Cloud qui stocke vos fichiers de données.

AZURE_TENANT_ID = 'tenant_id'

Spécifie l” ID de votre client Office 365 auquel appartiennent les comptes de stockage autorisés et bloqués. Un volume externe peut s’authentifier auprès d’un seul client, de sorte que les emplacements de stockage autorisés et bloqués doivent donc faire référence aux comptes de stockage qui appartiennent tous à ce client.

Pour trouver votre ID de client, connectez-vous au portail Azure et cliquez sur Azure Active Directory » Properties. L” ID de client s’affiche dans le champ Tenant ID.

STORAGE_BASE_URL = 'azure://account.blob.core.windows.net/container[/path/]'

Spécifie l’URL de base de votre emplacement de stockage Cloud, où :

  • account est le nom de votre compte Azure ; par exemple, myaccount.

  • container est le nom d’un conteneur Azure qui stocke vos fichiers de données.

  • path est un chemin facultatif qui peut être utilisé pour fournir un contrôle granulaire sur les répertoires logiques du conteneur.

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :

Privilège

Objet

Remarques

OWNERSHIP

Volume externe

OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege).

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

Concernant les métadonnées :

Attention

Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

Exemples

L’exemple suivant supprime l’emplacement de stockage nommé my-us-east-1 du volume externe exvol1 :

ALTER EXTERNAL VOLUME exvol1 REMOVE STORAGE_LOCATION 'my-us-east-1';
Copy

Les exemples suivants ajoutent un emplacement de stockage à un volume externe :

Amazon S3

ALTER EXTERNAL VOLUME exvol1
  ADD STORAGE_LOCATION =
    (
      NAME = 'my-s3-us-central-2'
      STORAGE_PROVIDER = 'S3'
      STORAGE_BASE_URL = 's3://my_bucket_us_central-1/'
      STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::123456789012:role/myrole'
    );
Copy

Google Cloud Storage

ALTER EXTERNAL VOLUME exvol2
  ADD STORAGE_LOCATION =
    (
      NAME = 'my-gcs-europe-west4'
      STORAGE_PROVIDER = 'GCS'
      STORAGE_BASE_URL = 'gcs://my_bucket_europe-west4/'
    );
Copy

Microsoft Azure

ALTER EXTERNAL VOLUME exvol3
  ADD STORAGE_LOCATION =
    (
      NAME = 'my-azure-japaneast'
      STORAGE_PROVIDER = 'AZURE'
      STORAGE_BASE_URL = 'azure://sfcdev1.blob.core.windows.net/my_container_japaneast/'
      AZURE_TENANT_ID = 'a9876545-4321-987b-b23c-2kz436789d0'
    );
Copy