Gérer les points de terminaison de la connectivité privée : AWS¶
Cette rubrique fournit des informations sur la gestion des points de terminaison de connectivité privée à utiliser avec la connectivité privée sortante vers AWS.
Fournir des points de terminaison de connectivité privée¶
Note
AWS ne prend pas en charge les points de terminaison d’interface VPC interrégionaux pour le service Amazon S3. Par conséquent, PrivateLink interrégional n’est pas pris en charge pour la connectivité sortante vers des zones de préparation et des volumes externes qui utilisent le service Amazon S3.
La prise en charge interrégionale pour AWS PrivateLink n’est pas disponible dans les régions gouvernementales ni en République populaire de Chine.
You can use the SYSTEM$PROVISION_PRIVATELINK_ENDPOINT system function to create a private connectivity endpoint by specifying the service or resource, and the host name. You must use the ACCOUNTADMIN role when you use this system function.
Note
If you use private connectivity for an external stage or external volume, you must use the wildcard character * when you specify
the host name. Using the wildcard doesn’t mean that all Amazon S3 buckets are accessed over a private connection. Only buckets referenced
by a Snowflake object that is enabled for private connectivity — that is, the external stage or external volume — can be accessed
through the VPC endpoint.
For example, to create a PrivateLink endpoint that connects to Amazon S3, execute the following SQL statement to configure an endpoint for
us-west-2:
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.us-west-2.s3',
'*.s3.us-west-2.amazonaws.com'
);
Note
When you configure an endpoint for Amazon S3 or another platform as a service (PaaS), such as KMS, that service must be in the same region as your Snowflake account.
La fonction SYSTEM$PROVISION_PRIVATELINK_ENDPOINT accepte comme arguments le nom du service du fournisseur et le nom de l’hôte. Vous pouvez obtenir ces valeurs en utilisant la sous-commande describe-vpc-endpoint-services à partir de la ligne de commande AWS. Comme décrit dans la documentation AWS, cette sous-commande AWS renvoie un objet JSON avec un champ ServiceName et un champ PrivateDnsName. Utilisez la table suivante pour déterminer les valeurs à utiliser pour la fonction SYSTEM$PROVISION_PRIVATELINK_ENDPOINT :
Argument SYSTEM$PROVISION_PRIVATELINK_ENDPOINT |
Sortie |
|---|---|
|
|
|
If you use private connectivity for external stages or external volumes, you must use the value with a wildcard. |
Vous pouvez créer un point de terminaison de connectivité privée vers un service de point de terminaison VPC dans un région AWS qui est différente de votre région Snowflake. Si c’est le cas, assurez-vous que le service de point de terminaison VPC prend en charge la région Snowflake.
Important
Avant de spécifier provider_service_name comme argument pour la fonction SYSTEM$PROVISION_PRIVATELINK_ENDPOINT, reportez-vous à la section Tarification de la connectivité interrégionale sur la page AWS PrivateLink Tarification pour déterminer la région appropriée.
If the target service is a VPC endpoint service, the endpoint service must allow Snowflake
to connect to it. Before you create an endpoint, add the value of privatelink-account-principal
from the output of SYSTEM$GET_PRIVATELINK_CONFIG as an allowed principal of the VPC endpoint service.
The following SQL statement configures an endpoint to a VPC endpoint service:
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.vpce.us-west-2.vpce-svc-012345678910f1234',
'my.onprem.storage.com'
);
Note
Dans cet exemple, le service peut se trouver dans une région différente de votre compte Snowflake.
Après la création d’un point de terminaison, il y a un délai avant que vous puissiez l’utiliser. Pour des informations sur la vérification du statut d’un point de terminaison créé, voir SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.
Configurer la connectivité à un point de terminaison inaccessible directement¶
Tous les services ne permettent pas à Snowflake de se connecter directement à des instances spécifiques via un point de terminaison d’interface. Dans ce cas, vous pouvez activer l’accès au service en configurant un proxy et en exposant le service en tant que service de point de terminaison VPC.
Pour une présentation spécifique à Amazon RDS, consultez l’article de blog Connecting To Amazon RDS Using Private Connectivity from Snowflake.
Découvrir si un service est disponible pour un accès direct¶
Snowflake peut généralement accéder à un service AWS directement via la connectivité privée si l’une des conditions suivantes est vraie :
Le nom DNS du service - sa valeur
PrivateDnsNameà partir de la sortie de AWS DescribeVpcEndpointServices— comporte un préfixe composé d’un caractère générique.Si le nom du service DNS commence par un caractère générique
*, il est probable que AWS permette d’accéder directement aux ressources individuelles de ce service. Le nom DNS se présente généralement sous cette forme :*.<service>.<region>.amazonaws.com
Le service est essentiellement un plan de données. AWS Bedrock Runtime est un exemple.
Pour découvrir ces informations sur un service donné, consultez la documentation et les articles de blog concernant AWS.
Accéder à un service lorsque l’accès direct n’est pas disponible¶
Lorsqu’un service n’est pas disponible par accès direct via un point de terminaison d’interface, vous pouvez permettre l’accès au service en configurant un proxy et en exposant le service en tant que service de point de terminaison VPC.
Voici quelques exemples de ces services :
Les instances d’Amazon EC2 à l’adresse suivante
ec2.us-west-2.amazonaws.comServeurs Amazon Relational Database Service (RDS) à l’adresse suivante
rds.us-west-2.amazonaws.com
Configurez AWS pour l’accès via un proxy¶
Pour exposer une instance de service par l’intermédiaire d’un proxy, vous devez configurer un Cloud privé virtuel (VPC) et un équilibreur de charge sur AWS, puis créer un point de terminaison Private Link Snowflake en utilisant le nom du service et le nom DNS de l’équilibreur de charge du service du point terminaison AWS.
Les étapes de base sont décrites ci-dessous :
Sur AWS, créez un Cloud privé virtuel (VPC) avec des sous-réseaux couvrant trois zones de disponibilité différentes.
Choisissez des zones de disponibilité initiales (par exemple, az1 et az2) pour vos ressources ; il se peut que Snowflake ne prenne pas en charge les AZs plus récentes dans certaines régions. Veillez à ce que les points de terminaison et les autres ressources soient créés dans les mêmes zones de disponibilité afin d’éviter le trafic inter-zones.
Dans les paramètres réseau de l’instance de service à laquelle vous souhaitez accéder, assurez-vous que l’instance se trouve dans le VPC que vous avez créé.
Créez un groupe cible qui contient l’instance de service à laquelle vous voulez accéder.
Créez un équilibreur de charge réseau qui achemine le trafic vers le groupe cible que vous avez créé.
Créez un service de point de terminaison avec l’équilibreur de charge réseau que vous avez créé.
Enregistrez le nom du service de point de terminaison,
endpoint_service_name, pour l’utiliser lors de la configuration de Snowflake pour l’accès au service.Dans Snowflake, exécutez la requête suivante pour récupérer le principal de compte Snowflake afin d’autoriser la création de points de terminaison :
SELECT key, value FROM TABLE(FLATTEN(INPUT => PARSE_JSON(SYSTEM$GET_PRIVATELINK_CONFIG())));
À partir des résultats de la requête, localisez la clé
privatelink-account-principalet notez sa valeur.Sur AWS, pour le service du point de terminaison de service que vous avez créé, mettez à jour la section Allow principals pour ajouter un principal dont ARN est la valeur clé
privatelink-account-principalde Snowflake.Dans Snowflake, créez un point de terminaison privé vers le service de point de terminaison AWS que vous avez créé.
Lorsque vous exécutez la fonction SYSTEM$PROVISION_PRIVATELINK_ENDPOINT, utilisez les valeurs suivantes comme arguments :
Argument SYSTEM$PROVISION_PRIVATELINK_ENDPOINT
Valeur de la configuration d’AWS
provider_service_namePoint de terminaison AWS Service name, la valeur
endpoint_service_name, de la section des détails du service de point de terminaison.host_nameDNS Name de l’équilibreur de charge réseau que vous avez créé.
Sur AWS, approuvez la connexion PrivateLink :
Naviguez jusqu’aux connexions de point de terminaison pour le service de point de terminaison que vous avez créé.
Sélectionnez la connexion du point de terminaison pertinent dans un état d’attente.
Cliquez sur Accept Endpoint Connection Request.
Vérifiez le statut du point de terminaison en exécutant la requête suivante.
Assurez-vous que le statut du point de terminaison est passé de
pendingAcceptanceàavailable.SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
Modifier le nom d’hôte d’un point de terminaison de connexion privée¶
Vous pouvez uniquement modifier le nom d’hôte d’un point de terminaison de connexion privée déjà provisionné, sans changer sa ressource réseau. La modification du nom d’hôte d’un point de terminaison indique à Snowflake que ce point de terminaison se connecte désormais au même service en utilisant un nom d’hôte différent. Pour modifier le nom d’hôte, appelez la fonction système SYSTEM$SET_PRIVATELINK_ENDPOINT_HOSTNAME.
Supprimer un point de terminaison de connectivité privée aux services¶
Vous pouvez utiliser la fonction système SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT pour supprimer un point de terminaison de connectivité privée en spécifiant le service ou la ressource.
Une fois le point de terminaison supprimé, il est placé dans une file d’attente pour être supprimé au bout de 7 jours.
Vous devez utiliser le rôle ACCOUNTADMIN pour utiliser cette fonction système.
Par exemple, pour supprimer un site PrivateLink avec un accès externe à Amazon S3, exécutez l’instruction SQL suivante :
SELECT SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT('com.amazonaws.us-west-2.s3');
Rétablir des services d’un point de terminaison de connectivité privée¶
Vous pouvez utiliser la fonction système SYSTEM$RESTORE_PRIVATELINK_ENDPOINT pour rétablir un point de terminaison de connectivité privée supprimé qui se trouve encore dans la file d’attente de suppression en spécifiant le service ou la ressource. Si le point de terminaison n’est pas trouvé dans la file d’attente de suppression, vous ne pouvez pas le rétablir.
Vous devez utiliser le rôle ACCOUNTADMIN pour utiliser cette fonction système.
Par exemple, pour rétablir un site PrivateLink avec un accès externe à Amazon S3, exécutez l’instruction SQL suivante :
SELECT SYSTEM$RESTORE_PRIVATELINK_ENDPOINT('com.amazonaws.us-west-2.s3');
Lister tous les points de terminaison de connectivité privée vers les services¶
Vous pouvez utiliser la fonction système SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO pour dresser la liste de tous les points de terminaison de connectivité privée, ainsi que des informations sur ces points de terminaison, dans votre compte.
Vous devez utiliser le rôle ACCOUNTADMIN pour utiliser cette fonction système.
Par exemple, pour établir la liste de tous les points de terminaison AWS PrivateLink avec les services AWS, exécutez l’instruction SQL suivante :
SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
[
{
"provider_service_name": "com.amazonaws.us-west-2.s3",
"snowflake_endpoint_name": "vpce-123456789012abcdea",
"endpoint_state": "CREATED",
"host": "*.s3.us-west-2.amazonaws.com",
"status": "Available"
},
...
]
Pour une description des champs de l’objet JSON renvoyé par la fonction, voir Renvoie.
Note
Vous pouvez également interroger la vue OUTBOUND_PRIVATELINK_ENDPOINTS du schéma ACCOUNT_USAGE pour obtenir la liste des points de terminaison privés de votre compte.