Catégories :

Utilisateur et sécurité DDL (Intégrations de services tiers)

CREATE STORAGE INTEGRATION

Crée une nouvelle intégration de stockage dans le compte ou remplace une intégration existante.

Une intégration de stockage est un objet Snowflake qui stocke une entité de gestion des identités et des accès générée (IAM) pour votre stockage Cloud externe, ainsi qu’un ensemble facultatif d’emplacements de stockage autorisés ou bloqués (Amazon S3, Google Cloud Storage ou Microsoft Azure). Les administrateurs de fournisseur de Cloud de votre entreprise accordent des autorisations sur les emplacements de stockage à l’entité générée. Cette option permet aux utilisateurs d’éviter de fournir des informations d’identification lors de la création de zones de préparation ou du chargement/déchargement de données.

Une intégration de stockage peut prendre en charge plusieurs zones de préparation externes. L’URL dans la définition de zone de préparation doit correspondre à l’emplacement de stockage spécifié pour le paramètre STORAGE_ALLOWED_LOCATIONS.

Avertissement

La recréation d’une intégration de stockage (à l’aide de CREATE OR REPLACE STORAGE INTEGRATION) annule l’association entre l’intégration de stockage et toute zone de préparation qui y fait référence. En effet, une zone de préparation est liée à une intégration de stockage à l’aide d’un ID caché plutôt que le nom de l’intégration de stockage. En coulisse, la syntaxe CREATE OR REPLACE détruit l’objet et le recrée avec un ID caché différent.

Si vous devez recréer une intégration de stockage après qu’elle a été liée à une ou plusieurs zones de préparation, vous devez rétablir l’association entre chaque zone de préparation et l’intégration de stockage en exécutant ALTER STAGE nom_zone_préparation SET STORAGE_INTEGRATION = nom_intégration_stockage, où :

  • nom_zone_préparation est le nom de la zone de préparation.

  • nom_intégration_stockage est le nom de l’intégration de stockage.

Note

Les intégrations de stockage peuvent être configurées pour prendre en charge Amazon S3, Google Cloud Storage ou le stockage Cloud Microsoft Azure quel que soit le fournisseur de Cloud qui héberge votre compte Snowflake.

Les fournisseurs de Cloud facturent les données transférées à partir de leur propre réseau. Pour se retrouver financièrement, Snowflake facture des frais par octet lorsque vous déchargez des données de Snowflake (hébergées sur Amazon Web Services (AWS), Google Cloud Platform ou Microsoft Azure) dans une zone de préparation externe d’une autre région ou d’un autre fournisseur de Cloud. Snowflake ne facture pas l’alimentation de données (c.-à-d. lors du chargement des données dans Snowflake). Pour plus de détails, consultez la page de tarification (sur le site Web de Snowflake).

Voir aussi :

ALTER STORAGE INTEGRATION , DROP INTEGRATION , SHOW INTEGRATIONS

Dans ce chapitre :

Syntaxe

CREATE [ OR REPLACE ] STORAGE INTEGRATION [IF NOT EXISTS]
  <name>
  TYPE = EXTERNAL_STAGE
  cloudProviderParams
  ENABLED = { TRUE | FALSE }
  STORAGE_ALLOWED_LOCATIONS = ('<cloud>://<bucket>/<path>/', '<cloud>://<bucket>/<path>/')
  [ STORAGE_BLOCKED_LOCATIONS = ('<cloud>://<bucket>/<path>/', '<cloud>://<bucket>/<path>/') ]
  [ COMMENT = '<string_literal>' ]

Où :

cloudProviderParams (for Amazon S3) ::=
  STORAGE_PROVIDER = S3
  STORAGE_AWS_ROLE_ARN = '<iam_role>'
cloudProviderParams (for Google Cloud Storage) ::=
  STORAGE_PROVIDER = GCS
cloudProviderParams (for Microsoft Azure) ::=
  STORAGE_PROVIDER = AZURE
  AZURE_TENANT_ID = '<tenant_id>'

Paramètres requis

nom

Chaîne spécifiant l’identificateur (c’est-à-dire le nom) de l’intégration ; elle doit être unique sur votre compte.

De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (p. ex. "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus de détails, voir Exigences relatives à l’identificateur.

TYPE = EXTERNAL_STAGE

Spécifiez le type d’intégration :

  • EXTERNAL_STAGE : crée une interface entre Snowflake et un emplacement de stockage dans le Cloud externe.

ENABLED = TRUE | FALSE

Spécifie si cette intégration de stockage est disponible pour une utilisation dans des zones de préparation.

  • TRUE permet aux utilisateurs de créer de nouvelles zones de préparation faisant référence à cette intégration. Les zones de préparation existantes qui font référence à cette intégration fonctionnent normalement.

  • FALSE empêche les utilisateurs de créer de nouvelles zones de préparation faisant référence à cette intégration. Les zones de préparation existantes faisant référence à cette intégration ne peuvent pas accéder à l’emplacement de stockage dans la définition de zone de préparation.

STORAGE_ALLOWED_LOCATIONS = ('url_cloud_spécifique')

Limite explicitement les zones de préparation externes qui utilisent l’intégration pour faire référence à un ou plusieurs emplacements de stockage (compartiment S3, compartiment GCS ou conteneur Azure, par exemple). Prend en charge une liste d’URLs séparée par des virgules pour les compartiments existants et, éventuellement, les chemins utilisés pour stocker les fichiers de données à des fins de chargement/déchargement. Prend également en charge le caractère générique *, ce qui signifie « autoriser l’accès à tous les compartiments et/ou chemins ».

Amazon S3

STORAGE_ALLOWED_LOCATIONS = ('s3://compartiment/chemin/', 's3://compartiment/chemin/')

  • compartiment est le nom d’un compartiment S3 qui stocke vos fichiers de données (par exemple, mybucket).

  • chemin est un chemin facultatif sensible à la casse pour les fichiers de l’emplacement de stockage Cloud (c’est-à-dire que les fichiers ont des noms qui commencent par une chaîne commune) qui limite l’accès à un ensemble de fichiers. Les chemins sont appelés préfixes ou dossiers selon les services de stockage Cloud.

Google Cloud Storage

STORAGE_ALLOWED_LOCATIONS = ('gcs://compartiment/chemin/', 'gcs://compartiment/chemin/')

  • compartiment est le nom d’un compartiment GCS qui stocke vos fichiers de données (par exemple, mybucket).

  • chemin est un chemin facultatif sensible à la casse pour les fichiers de l’emplacement de stockage Cloud (c’est-à-dire que les fichiers ont des noms qui commencent par une chaîne commune) qui limite l’accès à un ensemble de fichiers. Les chemins sont appelés préfixes ou dossiers selon les services de stockage Cloud.

Microsoft Azure

STORAGE_ALLOWED_LOCATIONS = ('azure://compte.blob.core.windows.net/conteneur/chemin/', 'azure://compte.blob.core.windows.net/conteneur/chemin/')

  • compte est le nom du compte Azure (par exemple, myaccount). Utilisez le point de terminaison blob.core.windows.net pour tous les types de comptes de stockage Azure Blob pris en charge, dont Data Lake Storage Gen2.

  • conteneur est le nom d’un conteneur de stockage Azure Blob qui stocke vos fichiers de données (par exemple mycontainer).

  • chemin est un chemin facultatif sensible à la casse pour les fichiers de l’emplacement de stockage Cloud (c’est-à-dire que les fichiers ont des noms qui commencent par une chaîne commune) qui limite l’accès à un ensemble de fichiers. Les chemins sont appelés préfixes ou dossiers selon les services de stockage Cloud.

Paramètres facultatifs

STORAGE_BLOCKED_LOCATIONS = ('url_cloud_spécifique')

Empêche explicitement les zones de préparation externes qui utilisent l’intégration de référencer un ou plusieurs emplacements de stockage (c.-à-d. compartiments S3 ou GCS). Prend en charge une liste d’URLs séparée par des virgules pour les emplacements de stockage existants et, éventuellement, les chemins utilisés pour stocker les fichiers de données à des fins de chargement/déchargement. Couramment utilisé lorsque STORAGE_ALLOWED_LOCATIONS est défini sur le caractère générique *, ce qui permet d’accéder à tous les compartiments de votre compte à l’exception des emplacements de stockage bloqués et, éventuellement, des chemins d’accès.

Amazon S3

STORAGE_BLOCKED_LOCATIONS = ('s3://compartiment/chemin/', 's3://compartiment/chemin/')

  • compartiment est le nom d’un compartiment S3 qui stocke vos fichiers de données (par exemple, mybucket).

  • chemin est un chemin facultatif (ou répertoire) dans le compartiment qui limite encore plus l’accès aux fichiers de données.

Google Cloud Storage

STORAGE_BLOCKED_LOCATIONS = ('gcs://compartiment/chemin/', 'gcs://compartiment/chemin/')

  • compartiment est le nom d’un compartiment GCS qui stocke vos fichiers de données (par exemple, mybucket).

  • chemin est un chemin facultatif (ou répertoire) dans le compartiment qui limite encore plus l’accès aux fichiers de données.

Microsoft Azure

STORAGE_BLOCKED_LOCATIONS = ('azure://compte.blob.core.windows.net/conteneur/chemin/', 'azure://compte.blob.core.windows.net/conteneur/chemin/')

  • compte est le nom du compte Azure (par exemple, myaccount).

  • conteneur est le nom d’un conteneur de stockage Azure Blob qui stocke vos fichiers de données (par exemple mycontainer).

  • chemin est un chemin facultatif (ou répertoire) dans le compartiment qui limite encore plus l’accès aux fichiers de données.

COMMENT = 'litéral_chaine'

Chaîne (littéral) qui spécifie un commentaire pour l’intégration.

Par défaut : aucune valeur

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 = rôle_iam

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.

Google Cloud Storage

STORAGE_PROVIDER = GCS

Spécifie le fournisseur de stockage dans le Cloud qui stocke vos fichiers de donné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 = 'id_client'

Spécifie l” ID de votre client Office 365 auquel appartiennent les comptes de stockage autorisés et bloqués. Une intégration de stockage peut s’authentifier auprès d’un seul client. 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 Directory ID.

Notes sur l’utilisation

  • Seuls les administrateurs de compte (utilisateurs dotés du rôle ACCOUNTADMIN) ou un rôle disposant du privilège global CREATE INTEGRATION peuvent exécuter cette commande SQL.

Exemples

L’exemple suivant crée une intégration qui limite explicitement les zones de préparation externes utilisant l’intégration pour faire référence à l’un des deux compartiments et chemins :

Amazon S3

CREATE STORAGE INTEGRATION s3_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = S3
  STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::001234567890:role/myrole'
  ENABLED = TRUE
  STORAGE_ALLOWED_LOCATIONS = ('s3://mybucket1/path1/', 's3://mybucket2/path2/');

Google Cloud Storage

CREATE STORAGE INTEGRATION gcs_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = GCS
  ENABLED = TRUE
  STORAGE_ALLOWED_LOCATIONS = ('gcs://mybucket1/path1/', 'gcs://mybucket2/path2/');

Microsoft Azure

CREATE STORAGE INTEGRATION azure_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = AZURE
  ENABLED = TRUE
  AZURE_TENANT_ID = '<tenant_id>'
  STORAGE_ALLOWED_LOCATIONS = ('azure://myaccount.blob.core.windows.net/mycontainer/path1/', 'azure://myaccount.blob.core.windows.net/mycontainer/path2/');

L’exemple suivant crée une intégration qui permet aux zones de préparation externes utilisant l’intégration de référencer tout compartiment et chemin de votre compte , à l’exception de ceux explicitement bloqués :

Amazon S3

CREATE STORAGE INTEGRATION s3_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = S3
  STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::001234567890:role/myrole'
  ENABLED = TRUE
  STORAGE_ALLOWED_LOCATIONS = ('*')
  STORAGE_BLOCKED_LOCATIONS = ('s3://mybucket3/path3/', 's3://mybucket4/path4/');

Google Cloud Storage

CREATE STORAGE INTEGRATION gcs_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = GCS
  ENABLED = TRUE
  STORAGE_ALLOWED_LOCATIONS = ('*')
  STORAGE_BLOCKED_LOCATIONS = ('gcs://mybucket3/path3/', 'gcs://mybucket4/path4/');

Microsoft Azure

CREATE STORAGE INTEGRATION azure_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = AZURE
  ENABLED = TRUE
  AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9'
  STORAGE_ALLOWED_LOCATIONS = ('*')
  STORAGE_BLOCKED_LOCATIONS = ('azure://myaccount.blob.core.windows.net/mycontainer/path3/', 'azure://myaccount.blob.core.windows.net/mycontainer/path4/');