Connectivité privée Azure pour les zones de préparation externe et l’automatisation Snowpipe¶
Cette rubrique fournit des détails de configuration pour définir la connectivité privée sortante pour les fonctions Snowflake suivantes :
Réaliser un chargement en masse depuis Microsoft Azure à l’aide d’une zone de préparation externe.
Automatiser Snowpipe pour le stockage Microsoft Azure Blob.
Les différences entre la configuration du chargement en masse et de l’automatisation Snowpipe pour la connectivité privée et leur configuration pour le trafic du réseau public sont les suivantes :
Définir
USE_PRIVATELINK_ENDPOINT = TRUE
pour l’intégration de stockage, la zone de préparation ou l’intégration de notification requises.Création d’un point de terminaison de connectivité privée pour la zone de préparation externe (chargement en masse et automatisation Snowpipe).
Création d’un point de terminaison de connectivité privée pour l’intégration de notification (automatisation Snowpipe uniquement).
Coûts de la connectivité privée sortante¶
Vous payez pour le point de terminaison de la connectivité privée et pour toutes les données traitées. Pour connaître les prix de ces éléments, consultez le tableau de consommation des services de Snowflake.
Vous pouvez connaître le coût de ces éléments en filtrant sur les types de services suivants lors de la requête des vues de facturation dans les schémas ACCOUNT_USAGE et ORGANIZATION_USAGE :
OUTBOUND_PRIVATELINK_ENDPOINT
OUTBOUND_PRIVATELINK_DATA_PROCESSED
Par exemple, vous pouvez interroger la vue USAGE_IN_CURRENCY_DAILY et filtrer sur ces types de services.
Considérations¶
Vous pouvez configurer la connectivité publique sortante et la connectivité privée sortante pour le même compte de stockage. Pour ce faire, créez une intégration de stockage dédiée à la connectivité publique sortante et spécifiez USE_PRIVATELINK_ENDPOINT = FALSE
.
Propriété de connectivité privée¶
La propriété USE_PRIVATELINK_ENDPOINT
d’une intégration de stockage ou d’une zone de préparation externe détermine si l’on y accède par une connectivité privée ou en traversant le réseau public. Pour utiliser la connectivité privée, définissez USE_PRIVATELINK_ENDPOINT = TRUE
.
Une zone de préparation qui fait référence à une intégration de stockage spécifiant USE_PRIVATELINK_ENDPOINT = TRUE
hérite de la configuration du point de terminaison privé. Par conséquent, si vous utilisez une intégration de stockage configurée pour utiliser une connectivité privée, vous n’avez pas besoin de spécifier la propriété USE_PRIVATELINK_ENDPOINT
dans la zone de préparation et vous ne pouvez pas modifier la zone de préparation pour définir la propriété USE_PRIVATELINK_ENDPOINT
.
Configurer l’accès à la zone de préparation externe¶
Ces étapes sont propres à l’utilisation de la connectivité privée sortante avec une intégration de stockage pour décharger les données vers une zone de préparation externe sur Microsoft Azure. Vous devez modifier le flux si vous utilisez la propriété CREDENTIALS
de la zone de préparation au lieu de faire référence à une intégration de stockage.
Ces exigences s’appliquent aussi bien au chargement en masse qu’à l’automatisation Snowpipe.
Dans Snowflake, appelez la fonction système SYSTEM$PROVISION_PRIVATELINK_ENDPOINT pour provisionner un point de terminaison de connectivité privée dans votre Snowflake VNet afin de permettre à Snowflake de se connecter à votre compte de stockage Blob externe à l’aide d’une connectivité privée :
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( '/subscriptions/cc2909f2-ed22-4c89-8e5d-bdc40e5eac26/resourceGroups/mystorage/providers/Microsoft.Storage/storageAccounts/storagedemo', 'mystorageaccount.blob.core.windows.net', 'blob' );
Cette fonction lie le point de terminaison privé au nom d’hôte, ce qui permet à l’intégration de stockage d’utiliser le point de terminaison privé pour se connecter à l’emplacement de stockage.
Dans le portail Azure et en tant que propriétaire de la ressource de stockage Blob Microsoft Azure, approuvez le point de terminaison privé. Pour plus de détails, consultez le processus d’approbation.
Dans Snowflake, appelez la fonction SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.
Lorsque la sortie de la fonction comprend
"status": "APPROVED
, votre connexion de Snowflake à votre compte de stockage pourra utiliser la connectivité privée (après que les autres objets Snowflake nécessaires ont été activés pour la connectivité privée sortante).Vous pouvez passer aux étapes suivantes en attendant le statut
"APPROVED"
.Créez une intégration de stockage et spécifiez la propriété
USE_PRIVATELINK_ENDPOINT
:CREATE OR REPLACE STORAGE INTEGRATION outbound_private_link_int TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = AZURE AZURE_TENANT_ID = 'cc2909f2-ed22-4c89-8e5d-bdc40e5eac26' STORAGE_ALLOWED_LOCATIONS = ('azure://mystorageaccount.blob.core.windows.net/mycontainer/snowflake_privatelink_external_stage_test/') USE_PRIVATELINK_ENDPOINT = TRUE ENABLED = TRUE;
Créez une zone de préparation externe qui fait référence à l’intégration de stockage :
CREATE OR REPLACE STAGE my_storage_private_stage URL = 'azure://mystorageaccount.blob.core.windows.net/mycontainer/snowflake_privatelink_external_stage_test/' STORAGE_INTEGRATION = outbound_private_link_int;
Une fois que le point de terminaison privé a le statut
"APPROVED"
, testez le déchargement des données Snowflake vers la zone de préparation externe :COPY INTO @my_storage_private_stage FROM mytable FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Observez le résultat dans votre zone de préparation Microsoft Azure.
Mettre à jour la syntaxe pour les intégrations de notification¶
L’automatisation Snowpipe pour le stockage Microsoft Azure Blob exige de créer une intégration de notification. La mise à jour de syntaxe suivante vous permet de configurer l’intégration de notification pour la connectivité privée.
CREATE [ OR REPLACE ] NOTIFICATION INTEGRATION [ IF NOT EXISTS ] <name>
...
USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
Configurer l’automatisation Snowpipe¶
Cette section modifie les procédures décrites dans Automatisation de Snowpipe pour le stockage Microsoft Azure Blob pour mettre en évidence la manière de mettre en œuvre l’automatisation Snowpipe avec une connectivité privée. Les seules différences sont le provisionnement des points de terminaison de connectivité privée et la configuration de la propriété USE_PRIVATELINK_ENDPOINT
de l’intégration de stockage et de l’intégration de notification.
Créez une intégration de stockage et une zone de préparation, ainsi que son point de terminaison de connectivité privée dédié, comme décrit plus haut dans ce document.
Accordez à Snowflake l’accès aux emplacements de stockage, comme décrit dans la rubrique Automatiser Snowpipe pour le stockage Microsoft Azure Blob.
Configurez l’abonnement Event Grid, comme décrit dans la rubrique Automatiser Snowpipe pour le stockage Microsoft Azure Blob.
Dans Snowflake, appelez la fonction système SYSTEM$PROVISION_PRIVATELINK_ENDPOINT pour provisionner un point de terminaison privé dans votre Snowflake VNet afin de permettre à Snowflake de se connecter à votre file d’attente Azure à l’aide d’une connectivité privée :
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( '/subscriptions/cc2909f2-ed22-4c89-8e5d-bdc40e5eac26/resourceGroups/mystorage/providers/Microsoft.Storage/storageAccounts/mystorageaccount', 'mystorageaccount.queue.core.windows.net', 'queue' );
Dans le portail Azure et en tant que propriétaire de la ressource de stockage Microsoft Azure, approuvez le point de terminaison privé. Pour plus d’informations, voir la procédure d’approbation.
Dans Snowflake, appelez la fonction SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.
Lorsque la sortie de la fonction comprend
"status": "APPROVED
, votre connexion de Snowflake à votre compte de stockage pourra utiliser la connectivité privée (après que les autres objets Snowflake nécessaires ont été activés pour la connectivité privée sortante).Important
Vous devez attendre que le statut soit
APPROVED
avant de passer à l’étape suivante.Récupérez l’URL de la file d’attente de stockage et l’ID de locataire, comme décrit dans la rubrique Automatiser Snowpipe pour le stockage Microsoft Azure Blob.
Créez une intégration de notification et spécifiez la propriété
USE_PRIVATELINK_ENDPOINT
:CREATE OR REPLACE NOTIFICATION INTEGRATION ni_pl ENABLED = TRUE TYPE = QUEUE NOTIFICATION_PROVIDER = AZURE_STORAGE_QUEUE AZURE_STORAGE_QUEUE_PRIMARY_URI = "https://storageaccount.queue.core.windows.net/queuename" AZURE_TENANT_ID = '00000000-0000-0000-0000-000000000000' USE_PRIVATELINK_ENDPOINT = TRUE;
Accordez à Snowflake l’accès à la file d’attente de stockage, comme décrit dans la rubrique Automatiser Snowpipe pour le stockage Microsoft Azure Blob.
Créez un canal avec l’auto-ingestion activée, comme décrit dans la rubrique Automatiser Snowpipe pour le stockage Microsoft Azure Blob.
Désactiver la connectivité privée¶
Le processus de désactivation de la connectivité privée varie selon que le point de terminaison a été provisionné pour une intégration de stockage, une zone de préparation externe ou une intégration de notification.
- Intégration de stockage/zone de préparation externe
Si vous n’avez plus besoin du point de terminaison de connectivité privée pour la zone de préparation externe, désactivez la propriété
USE_PRIVATELINK_ENDPOINT
sur la zone de préparation ou l’intégration de stockage, puis appelez la fonction système SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT.- Intégration de notification
Contrairement aux intégrations de stockage et aux zones de préparation externe, vous ne pouvez pas désactiver la propriété
USE_PRIVATELINK_ENDPOINT
d’une intégration de notification. Si vous n’avez plus besoin de connectivité privée, vous devez abandonner l’intégration de notification, puis en créer une nouvelle. Après avoir recréé l’intégration de notification, vous pouvez appeler la fonction système SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT pour déprovisionner le point de terminaison.