Connectivité privée vers des volumes externes pour AWS

Cette rubrique fournit des détails de configuration pour mettre en place une connectivité privée sortante vers un volume externe sur AWS. La principale différence entre la connectivité publique sortante et la connectivité privée sortante réside dans l’ensemble des paramètres de la propriété USE_PRIVATELINK_ENDPOINT pour le volume externe.

Lorsque le volume externe est configuré pour utiliser la connectivité privée, votre connexion au service de stockage Cloud AWS passe par le réseau interne AWS. En configurant votre volume externe pour qu’il utilise une connectivité privée sortante, vous ajoutez une sécurité supplémentaire à vos opérations de déchargement des données en bloquant l’accès public au compte de stockage.

Pour plus d’informations sur l’utilisation de volumes externes pour se connecter à votre stockage Cloud externe pour les tables Iceberg, voir Configurer un volume externe.

Note

Vous pouvez utiliser AWS PrivateLink pour accéder aux tables Iceberg gérées par Snowflake et aux tables Iceberg qui utilisent une intégration de catalogue pour le stockage des objets. Actuellement, vous ne pouvez pas utiliser la connectivité privée pour accéder aux tables Iceberg qui utilisent d’autres intégrations de catalogues.

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 service de stockage Cloud. Pour ce faire, créez un volume externe dédié à la connectivité publique sortante et spécifiez USE_PRIVATELINK_ENDPOINT = FALSE.

Mises à jour de la syntaxe

La propriété USE_PRIVATELINK_ENDPOINT d’un volume externe détermine s’il est accessible par une connectivité privée ou en traversant le réseau public. Pour utiliser la connectivité privée, définissez USE_PRIVATELINK_ENDPOINT = TRUE lors de la création ou de la modification d’un volume externe.

La nouvelle syntaxe pour CREATE EXTERNAL VOLUME et ALTER EXTERNAL VOLUME est la suivante :

CREATE OR REPLACE EXTERNAL VOLUME <ext_volume_name>
  STORAGE_LOCATIONS =
  (
    (
      NAME = 'my-s3-loc'
      STORAGE_PROVIDER = 's3'
      STORAGE_BASE_URL = 's3://<bucket>[/<path>/]'
      STORAGE_AWS_ROLE_ARN = '<iam_role>'
      USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]
    )
  )
  ALLOW_WRITES=true;

ALTER EXTERNAL VOLUME <ext_volume_name>
  UPDATE STORAGE_LOCATION = '<storage_location_name>'
  USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ];
Copy

La commande DESCRIBE EXTERNAL VOLUME inclut la propriété USE_PRIVATELINK_ENDPOINT et sa valeur.

Configurer l’accès aux volumes externes

Procédez comme suit pour utiliser la connectivité privée sortante afin de décharger les données vers un volume externe sur AWS :

  1. 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 au stockage Cloud AWS externe via une connectivité privée.

    Comme le montre l’exemple suivant, vous devez utiliser un caractère générique (*) au lieu de spécifier un compartiment S3 AWS. L’utilisation du caractère générique ne signifie pas que tous les compartiments S3 sont accessibles via une connexion privée. Seuls les compartiments référencés par un volume externe pour lequel le paramètre USE_PRIVATELINK_ENDPOINT est activé sont accessibles via le point de terminaison.

    USE ROLE ACCOUNTADMIN;
    
    SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
        'com.amazonaws.us-west-2.s3',
        '*.s3.us-west-2.amazonaws.com');
    
    Copy

    Cette fonction lie le point de terminaison privé au nom d’hôte, ce qui permet au volume externe d’utiliser le point de terminaison privé pour se connecter à l’emplacement de stockage, tant que AWS PrivateLink est activé sur l’objet.

  2. Appelez la fonction SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.

    Lorsque la sortie de la fonction comprend "status": "APPROVED, votre connexion entre Snowflake et votre compte de stockage pourra utiliser la connectivité privée.

    Vous pouvez passer aux étapes suivantes en attendant le statut "APPROVED".

  3. Créez le volume externe, en veillant à définir la propriété USE_PRIVATELINK_ENDPOINT sur TRUE. Par exemple :

    CREATE EXTERNAL VOLUME external_volume
      STORAGE_LOCATIONS =
        (
          (
            NAME = 'my-s3-loc'
            STORAGE_PROVIDER = 's3'
            STORAGE_BASE_URL = 's3://bucketinuswest2/'
            STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::001234567890:role/myrole'
            USE_PRIVATELINK_ENDPOINT = TRUE
          )
        )
      ALLOW_WRITES=TRUE;
    
    Copy
  4. Utilisez la commande CREATE ICEBERG TABLE pour créer une table Iceberg qui fait référence au volume externe. Par exemple :

    CREATE ICEBERG TABLE rand_table (data string)
      BASE_LOCATION='table'
      EXTERNAL_VOLUME=external_volume
      CATALOG='snowflake';
    
    Copy
  5. Une fois que le point de terminaison privé a un statut "APPROVED", testez le déchargement des données de Snowflake vers le volume externe.

Déprovisionner un point de terminaison

Si vous n’avez plus besoin du point de terminaison de connectivité privée pour le volume externe, désactivez la propriété USE_PRIVATELINK_ENDPOINT sur le volume externe, puis appelez la fonction système SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT.