AWS PrivateLink est disponible avec les offres Scale et Enterprise. Pour passer à une offre supérieure, consultez la page des offres dans la console Cloud.
Vous pouvez utiliser AWS PrivateLink pour établir une connectivité sécurisée entre des VPC, des services AWS, vos systèmes sur site et ClickHouse Cloud, sans exposer le trafic à l’Internet public. Ce document présente les étapes à suivre pour vous connecter à ClickHouse Cloud à l’aide d’AWS PrivateLink.
Pour restreindre l’accès à vos services ClickHouse Cloud exclusivement aux adresses AWS PrivateLink, suivez les instructions de ClickHouse Cloud relatives aux listes d’accès IP.
ClickHouse Cloud prend en charge le PrivateLink inter-région pour les services hébergés dans les régions AWS suivantes :
Le tableau couvre uniquement les régions d’hébergement des services. Les régions des endpoints VPC d’interface côté consommateur utilisent une liste d’autorisation distincte ; par exemple, mx-central-1 est une région consommateur autorisée, même si les services qui y sont hébergés ne peuvent pas activer l’accès inter-région.
| Code de région | Nom de région |
|---|---|
af-south-1 |
Afrique (Le Cap) |
ap-east-1 |
Asie-Pacifique (Hong Kong) |
ap-northeast-1 |
Asie-Pacifique (Tokyo) |
ap-northeast-2 |
Asie-Pacifique (Séoul) |
ap-south-1 |
Asie-Pacifique (Mumbai) |
ap-southeast-1 |
Asie-Pacifique (Singapour) |
ap-southeast-2 |
Asie-Pacifique (Sydney) |
ap-southeast-3 |
Asie-Pacifique (Jakarta) |
ap-southeast-5 |
Asie-Pacifique (Malaisie) |
ca-central-1 |
Canada (Centre) |
eu-central-1 |
Europe (Francfort) |
eu-north-1 |
Europe (Stockholm) |
eu-west-1 |
Europe (Irlande) |
eu-west-2 |
Europe (Londres) |
il-central-1 |
Israël (Tel Aviv) |
me-central-1 |
Moyen-Orient (EAU) |
sa-east-1 |
Amérique du Sud (São Paulo) |
us-east-1 |
Est des États-Unis (Virginie du Nord) |
us-east-2 |
Est des États-Unis (Ohio) |
us-west-2 |
Ouest des États-Unis (Oregon) |
Veuillez effectuer les opérations suivantes pour activer AWS PrivateLink :
- Récupérez le "Service name" de l’endpoint.
- Créez l’endpoint AWS.
- Ajoutez l’"Endpoint ID" à l’organisation ClickHouse Cloud.
- Ajoutez l’"Endpoint ID" à la liste d’autorisation du service ClickHouse.
Vous trouverez des exemples Terraform ici.
Considérations importantes
ClickHouse essaie de regrouper vos services pour réutiliser le même endpoint de service publié au sein de la région AWS. Cependant, ce regroupement n'est pas garanti, surtout si vos services sont répartis entre plusieurs organisations ClickHouse. Si PrivateLink est déjà configuré pour d'autres services de votre organisation ClickHouse, vous pouvez souvent ignorer la plupart des étapes grâce à ce regroupement et passer directement à l'étape finale : ajouter l'« Endpoint ID » ClickHouse à la liste d'autorisation du service ClickHouse.
Prérequis pour cette procédure
Avant de commencer, vous aurez besoin de :
- Votre compte AWS.
- clé API ClickHouse avec les permissions nécessaires pour créer et gérer des endpoints privés côté ClickHouse.
Étapes
Suivez ces étapes pour connecter vos services ClickHouse Cloud à l’aide d’AWS PrivateLink.
Obtenir le « Service name » de l’endpoint
Option 1 : console ClickHouse Cloud
Dans la console ClickHouse Cloud, ouvrez le service auquel vous souhaitez vous connecter via PrivateLink, puis accédez au menu Settings.

Relevez le Service name et le nom DNS, puis passez à l’étape suivante.
Option 2 : API
Commencez par définir les variables d’environnement suivantes avant d’exécuter des commandes :
REGION=<Your region code using the AWS format, for example: us-west-2>
PROVIDER=aws
KEY_ID=<Your ClickHouse key ID>
KEY_SECRET=<Your ClickHouse key secret>
ORG_ID=<Your ClickHouse organization ID>
SERVICE_NAME=<Your ClickHouse service name>Obtenez votre INSTANCE_ID ClickHouse en filtrant par région, fournisseur et nom du service :
INSTANCE_ID=$(curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services" | \
jq ".result[] | select (.region==\"${REGION:?}\" and .provider==\"${PROVIDER:?}\" and .name==\"${SERVICE_NAME:?}\") | .id " -r)Récupérez endpointServiceId et privateDnsHostname pour votre configuration PrivateLink :
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | \
jq .resultCette commande devrait renvoyer quelque chose comme :
{
"endpointServiceId": "com.amazonaws.vpce.us-west-2.vpce-svc-xxxxxxxxxxxxxxxxx",
"privateDnsHostname": "xxxxxxxxxx.us-west-2.vpce.aws.clickhouse.cloud"
}Prenez note des valeurs de endpointServiceId et privateDnsHostname passez à l’étape suivante.
Créer un endpoint AWS
Option 1 : console AWS
Ouvrez la console AWS et accédez à VPC → Endpoints → Create endpoints.
Sélectionnez Endpoint services that use NLBs and GWLBs et utilisez Service nameconsole ou endpointServiceIdAPI obtenu à l’étape Obtenir le "Service name" de l’endpoint dans le champ Service Name. Cliquez sur Verify service :

Si vous obtenez l’erreur "Service name couldn't be verified.", veuillez contacter le support client pour demander l’ajout de nouvelles régions à la liste des régions prises en charge.
Ensuite, sélectionnez votre VPC et vos sous-réseaux :

À titre facultatif, attribuez des groupes de sécurité/Tags :
Après avoir créé le VPC Endpoint, notez la valeur de Endpoint ID ; vous en aurez besoin à l’étape suivante.

Option 2 : AWS CloudFormation
Ensuite, vous devez créer un VPC Endpoint à l’aide du Service nameconsole ou de l’endpointServiceIdAPI obtenu à l’étape Obtenir le "Service name" de l’endpoint .
Assurez-vous d’utiliser les bons ID de sous-réseau, groupes de sécurité et ID de VPC.
Resources:
ClickHouseInterfaceEndpoint:
Type: 'AWS::EC2::VPCEndpoint'
Properties:
VpcEndpointType: Interface
PrivateDnsEnabled: false
ServiceName: <Service name(endpointServiceId), pls see above>
VpcId: vpc-vpc_id
SubnetIds:
- subnet-subnet_id1
- subnet-subnet_id2
- subnet-subnet_id3
SecurityGroupIds:
- sg-security_group_id1
- sg-security_group_id2
- sg-security_group_id3Après avoir créé le VPC Endpoint, notez la valeur de l’Endpoint ID ; vous en aurez besoin à l’étape suivante.
Option 3 : Terraform
service_name ci-dessous correspond à Service nameconsole ou à endpointServiceIdAPI que vous avez obtenu à l’étape Obtenir le "Service name" de l’endpoint
resource "aws_vpc_endpoint" "this" {
vpc_id = var.vpc_id
service_name = "<pls see comment above>"
vpc_endpoint_type = "Interface"
security_group_ids = [
Var.security_group_id1,var.security_group_id2, var.security_group_id3,
]
subnet_ids = [var.subnet_id1,var.subnet_id2,var.subnet_id3]
private_dns_enabled = false
service_region = "(Optional) If specified, the VPC endpoint will connect to the service in the provided region. Define it for multi-regional PrivateLink connections."
}Après avoir créé le VPC Endpoint, notez la valeur de Endpoint ID ; vous en aurez besoin à l’étape suivante.
Définir le nom DNS privé de l’endpoint
Vous devez faire pointer le « nom DNS », obtenu à l’étape Obtain Endpoint "Service name" , vers les interfaces réseau de l’AWS Endpoint. Cela garantit que les services et composants de votre VPC/réseau pourront le résoudre correctement.
Ajouter l’« Endpoint ID » à la liste d’autorisation du service ClickHouse
Option 1 : console ClickHouse Cloud
Pour l’ajouter, accédez à la console ClickHouse Cloud, ouvrez le service que vous souhaitez connecter via PrivateLink, puis accédez à Settings. Cliquez sur Set up private endpoint pour ouvrir les paramètres des endpoints privés. Saisissez l’Endpoint ID obtenu à l’étape Create AWS Endpoint. Cliquez sur « Create endpoint ».

Pour le supprimer, accédez à la console ClickHouse Cloud, recherchez le service, puis accédez à ses Settings. Trouvez l’endpoint que vous souhaitez supprimer. Supprimez-le de la liste des endpoints.
Option 2 : API
Vous devez ajouter un Endpoint ID à la liste d’autorisation de chaque instance devant être accessible via PrivateLink.
Définissez la variable d’environnement ENDPOINT_ID à l’aide des données de l’étape Créer un AWS Endpoint.
Définissez les variables d’environnement suivantes avant d’exécuter la moindre commande :
REGION=<Your region code using the AWS format, for example: us-west-2>
PROVIDER=aws
KEY_ID=<Your ClickHouse key ID>
KEY_SECRET=<Your ClickHouse key secret>
ORG_ID=<Your ClickHouse organization ID>
SERVICE_NAME=<Your ClickHouse service name>Pour ajouter un ID d’endpoint à une liste d’autorisation :
cat <<EOF | tee pl_config.json
{
"privateEndpointIds": {
"add": [
"${ENDPOINT_ID:?}"
]
}
}
EOF
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
-X PATCH -H "Content-Type: application/json" \
"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}" \
-d @pl_config.json | jqPour supprimer un Endpoint ID d’une liste d’autorisation :
cat <<EOF | tee pl_config.json
{
"privateEndpointIds": {
"remove": [
"${ENDPOINT_ID:?}"
]
}
}
EOF
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
-X PATCH -H "Content-Type: application/json" \
"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}" \
-d @pl_config.json | jqAccéder à une instance à l’aide de PrivateLink
Chaque service pour lequel Private Link est activé dispose d’un endpoint public et d’un endpoint privé. Pour vous connecter via Private Link, vous devez utiliser un endpoint privé : privateDnsHostnameAPI ou Nom DNSconsole, obtenu à partir de Obtenir le « Service name » de l’endpoint.
Récupération du nom d’hôte DNS privé
Option 1 : ClickHouse Cloud console
Dans la console ClickHouse Cloud, accédez à Settings. Cliquez sur le bouton Set up private endpoint. Dans le flyout qui s’ouvre, copiez le nom DNS.

Option 2 : API
Définissez les variables d’environnement suivantes avant d’exécuter toute commande :
KEY_ID=<Your ClickHouse key ID>
KEY_SECRET=<Your ClickHouse key secret>
ORG_ID=<Your ClickHouse organization ID>
INSTANCE_ID=<Your ClickHouse service name>Vous pouvez récupérer INSTANCE_ID à l’étape.
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | \
jq .resultCela devrait afficher quelque chose comme :
{
"endpointServiceId": "com.amazonaws.vpce.us-west-2.vpce-svc-xxxxxxxxxxxxxxxxx",
"privateDnsHostname": "xxxxxxxxxx.us-west-2.vpce.aws.clickhouse.cloud"
}Dans cet exemple, la connexion via le nom d’hôte correspondant à la valeur de privateDnsHostname sera acheminée vers PrivateLink, tandis que la connexion via le nom d’hôte endpointServiceId passera par Internet.
Résolution des problèmes
Plusieurs PrivateLinks dans une même région
Dans la plupart des cas, il suffit de créer un seul service de point de terminaison par VPC. Ce point de terminaison peut acheminer les requêtes du VPC vers plusieurs services ClickHouse Cloud. Consultez cette section.
Délai d’attente lors de la connexion au endpoint privé
- Associez un groupe de sécurité au VPC Endpoint.
- Vérifiez les règles
inbounddu groupe de sécurité associé au point de terminaison et autorisez les ports ClickHouse. - Vérifiez les règles
outbounddu groupe de sécurité associé à la VM utilisée pour tester la connectivité et autorisez les connexions aux ports ClickHouse.
Nom d’hôte privé : adresse de l’hôte introuvable
- Vérifiez votre configuration DNS.
Connexion réinitialisée par le pair
- L’Endpoint ID n’a probablement pas été ajouté à la liste d’autorisation du service. Consultez l’étape.
Vérification des filtres de point de terminaison
Définissez les variables d’environnement suivantes avant d’exécuter toute commande :
KEY_ID=<Key ID>
KEY_SECRET=<Key secret>
ORG_ID=<please set ClickHouse organization ID>
INSTANCE_ID=<Instance ID>Vous pouvez récupérer INSTANCE_ID à partir de l’étape.
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
-X GET -H "Content-Type: application/json" \
"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}" | \
jq .result.privateEndpointIdsConnexion à une base de données distante
Selon la documentation AWS PrivateLink :
Utilisez AWS PrivateLink dans une configuration client/serveur lorsque vous souhaitez autoriser un ou plusieurs VPC consommateurs à accéder, de manière unidirectionnelle, à un service spécifique ou à un ensemble d’instances dans le VPC du fournisseur de services. Seuls les clients du VPC consommateur peuvent initier une connexion au service dans le VPC du fournisseur de services.
Pour connecter les fonctions de table MySQL ou PostgreSQL de ClickHouse Cloud à une base de données hébergée dans votre VPC AWS, configurez vos groupes de sécurité AWS afin d’autoriser les connexions depuis ClickHouse Cloud. Consultez les adresses IP de sortie par défaut des régions ClickHouse Cloud, ainsi que les adresses IP statiques disponibles.