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¶
Vous pouvez utiliser la fonction système SYSTEM$PROVISION_PRIVATELINK_ENDPOINT pour créer un point de terminaison de connectivité privée en spécifiant le service ou la ressource, ainsi que le nom d’hôte. Vous devez utiliser le rôle ACCOUNTADMIN pour utiliser cette fonction système.
Note
Si vous utilisez la connectivité privée pour une zone de préparation externe ou un volume externe, vous devez utiliser un caractère générique (*
) pour spécifier le nom d’hôte. 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 objet Snowflake activé pour la connectivité privée (c’est-à-dire la zone de préparation externe ou le volume externe) sont accessibles via le point de terminaison VPC.
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 |
---|---|
|
|
|
Si vous utilisez la connectivité privée pour des zones de préparation externe ou des volumes externes, vous devez utiliser la valeur avec un caractère générique. |
Par exemple, pour créer un PrivateLink avec un accès externe à Amazon S3, exécutez l’instruction SQL suivante pour configurer un point de terminaison pour us-west-2
:
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.us-west-2.s3',
'*.s3.us-west-2.amazonaws.com'
);
Si le service cible est un service de point de terminaison VPC, le service de point de terminaison doit permettre à Snowflake de s’y connecter. Avant de créer un point de terminaison, ajoutez la valeur de privatelink-account-principal
à partir de la sortie de SYSTEM$GET_PRIVATELINK_CONFIG en tant que principal autorisé du service de point de terminaison VPC.
L’instruction SQL suivante configure un point de terminaison en un service de point de terminaison VPC. Notez que le service doit se trouver dans la même région que votre compte Snowflake :
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.vpce.us-west-2.vpce-svc-012345678910f1234',
'my.onprem.storage.com'
);
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.com
Serveurs 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-principal
et 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-principal
de 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_name
Point de terminaison AWS Service name, la valeur
endpoint_service_name
, de la section des détails du service de point de terminaison.host_name
DNS 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();
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.