node-postgres (pg), l’exécuter localement avec wrangler dev, puis le déployer sur workers.dev.
Prérequis
- Un compte Cloudflare. Hyperdrive est disponible avec les offres Workers Free et Paid.
- Node.js 20 ou une version ultérieure. Ce guide a été testé avec Node.js 24.21.0, Wrangler 4.145.0,
create-cloudflare2.73.1,pg8.23.1 et Postgres 18. - Un compte ClickHouse Cloud.
psql, pour créer la base de données et la table. Vous pouvez également exécuter les instructions SQL dans la console SQL.
Créer un service ClickHouse Managed Postgres
Dans la console ClickHouse Cloud, cliquez sur New service et sélectionnez Postgres. L’instance est prête en quelques minutes. Pour une présentation pas à pas, consultez le guide de démarrage rapide.Obtenir vos informations de connexion
Cliquez sur Connect dans la barre latérale gauche de votre service. Laissez Directly sélectionné et activez Use SSL. L’URL se termine alors parsslmode=verify-full&sslrootcert=<service-name>-ca-certificate.pem. Cliquez sur Download CA certificate pour télécharger le certificat CA de votre instance. Vous pouvez également le télécharger depuis Settings → CA Certificate.
Ce guide fait pointer Hyperdrive vers la connexion directe sur le port 5432, et non vers le PgBouncer intégré sur le port 6432 :
- Hyperdrive est lui-même un pooler de connexions fonctionnant en mode transaction. Il maintient un petit pool de connexions persistantes vers votre base de données et les partage entre toutes les requêtes des Workers, un rôle qui reviendrait sinon à PgBouncer. Cloudflare recommande de fournir à Hyperdrive une chaîne de connexion directe plutôt qu’une chaîne passant par un pool.
- Il est également possible de faire pointer Hyperdrive vers le port
6432, mais enchaîner deux poolers en mode transaction ajoute un saut réseau et un second niveau de réglage de la taille des pools, sans apporter de capacité supplémentaire. - Hyperdrive ouvre au maximum environ 20 connexions par configuration avec l’offre Workers Free, et environ 100 avec l’offre Paid, ce qui reste en deçà de la valeur par défaut de
max_connections, fixée à 500. Si vous avez plusieurs configurations Hyperdrive ou d’autres clients sur la même instance, additionnez leurs connexions et, si nécessaire, ajustezmax_connectionsdans Settings ou la limite de connexions à l’origine dans Hyperdrive.
Si vous utilisez une liste d’accès IP, Hyperdrive se connecte depuis les plages d’adresses IP de Cloudflare, qui doivent donc être autorisées.
Créer la base de données
Renommez le certificat téléchargé enca-certificate.pem. Créez ensuite une base de données et une table notes. Remplacez <PASSWORD> et l’hôte par les valeurs affichées dans la fenêtre modale Connect :
Créer le projet Worker
Créez un Worker TypeScript à partir du modèle « Hello World » aveccreate-cloudflare, puis installez pg :
ca-certificate.pem dans le répertoire de votre projet. Si vous n’avez jamais utilisé Wrangler, exécutez npx wrangler login pour l’autoriser à accéder à votre compte Cloudflare.
Créer une configuration Hyperdrive
Hyperdrive chiffre toujours la connexion à votre base de données, mais par défaut, il ne vérifie pas le certificat auprès de l’autorité de certification (CA) de votre instance. Pour obtenir l’équivalent desslmode=verify-full, commencez par téléverser le certificat CA dans votre compte Cloudflare :
ID indiqué dans la sortie pour créer la configuration Hyperdrive. La chaîne de connexion utilise le port 5432 et la base de données guide_cloudflare, sans aucun paramètre SSL ; ce sont les options --sslmode et --ca-certificate-id qui configurent TLS :
--sslmode verify-full, il vérifie que le certificat du serveur est signé par l’autorité de certification (CA) que vous avez téléversée et qu’il correspond au nom d’hôte. Si l’une de ces vérifications échoue, la commande échoue avec une erreur telle que cert verification failed - unable to get local issuer certificate et aucune configuration n’est créée. Le mot de passe est stocké dans la configuration Hyperdrive de votre compte Cloudflare, et non dans votre projet.
--binding HYPERDRIVE --update-config ajoute la configuration à wrangler.jsonc, ce qui permet à votre Worker d’y accéder via env.HYPERDRIVE. Si votre projet utilise wrangler.toml, Wrangler ne modifie pas le fichier : collez-y vous-même l’extrait [[hyperdrive]] affiché par la commande.
Configurer le Worker
pg nécessite la couche de compatibilité Node.js. Ouvrez wrangler.jsonc et ajoutez l’indicateur nodejs_compat à côté de compatibility_date. La section concernée du fichier se présente alors comme suit :
wrangler.jsonc
wrangler.toml, ajoutez plutôt compatibility_flags = ["nodejs_compat"] sous compatibility_date. Si le fichier contient déjà compatibility_flags, ajoutez nodejs_compat à la liste.
Régénérez les types TypeScript afin que env.HYPERDRIVE soit typé :
@cloudflare/workers-types, wrangler types indique comment migrer vers les types générés.
Interroger la base de données
Remplacezsrc/index.ts par un Worker qui crée une note via POST /notes et renvoie la liste de toutes les notes via GET /notes. Si vous disposez déjà d’un Worker, ajoutez plutôt cette même gestion de /notes à votre handler fetch :
src/index.ts
env.HYPERDRIVE.connectionString pointe vers Hyperdrive, et non vers votre instance. La liaison entre le Worker et Hyperdrive reste interne à Cloudflare ; elle ne nécessite donc aucun paramètre SSL. C’est Hyperdrive qui gère la connexion TLS vérifiée vers Postgres.
Hyperdrive fonctionne en mode transaction, à la manière de PgBouncer : chaque transaction peut utiliser une connexion différente vers Postgres. Les requêtes paramétrées, les transactions et les prepared statements nommés de
pg sont tous pris en charge. Ne comptez pas sur l’état de session, par exemple un SET au niveau de la session, d’une requête à l’autre ; utilisez plutôt SET LOCAL au sein d’une transaction.Exécution en local
wrangler dev exécute le Worker sur votre machine. En local, Hyperdrive ne gère pas de pool de connexions ; le binding se connecte directement à la base de données indiquée dans CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_<BINDING>. Affectez à cette variable la chaîne de connexion directe, avec sslmode=verify-full et le path du certificat CA, puis démarrez le Worker :
sslrootcert est résolu par rapport au répertoire depuis lequel vous lancez wrangler dev.
Dans un second terminal, créez une note :
pg renvoie les colonnes bigint sous forme de chaînes de caractères : id vaut donc "1" et non 1.
Déploiement
Déployez le Worker :workers.dev. Créez une note à l’aide du Worker déployé :
https://hyperdrive-notes.<your-subdomain>.workers.dev/notes dans votre navigateur pour afficher les deux notes. La réponse se présente comme suit :
Vérifier dans la console
Ouvrez la console SQL dans la barre latérale gauche de votre service, développezguide_cloudflare, puis public, et cliquez sur la table notes. Les deux notes s’affichent :
Nettoyage
Pour supprimer les ressources créées dans votre compte Cloudflare, supprimez le Worker, la configuration Hyperdrive et le certificat CA :wrangler cert delete renvoie Certificate cannot be deleted while in use, attendez une minute après avoir supprimé la configuration Hyperdrive, puis relancez la commande.
Étapes suivantes
- Connexion : chaînes de connexion, PgBouncer et TLS
- Paramètres : paramètres Postgres tels que
max_connections - Répliques en lecture : faire évoluer la capacité de lecture
- Documentation Hyperdrive : mise en cache des requêtes, optimisation du pool de connexions et observability