Skip to main content
Les Cloudflare Workers exécutent votre code sur le réseau de Cloudflare, et Hyperdrive maintient un pool de connexions entre ce réseau et votre base de données, ce qui évite à chaque requête le coût d’une nouvelle négociation TCP et TLS. Dans ce guide, vous allez créer une configuration Hyperdrive qui vérifie le certificat de votre instance, développer un Worker TypeScript qui crée et lit des lignes avec 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-cloudflare 2.73.1, pg 8.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 par sslmode=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, ajustez max_connections dans 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é en ca-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 » avec create-cloudflare, puis installez pg :
Vous l’ajoutez à une application existante ?Ignorez npm create cloudflare. Dans votre projet Worker, exécutez npm install pg et npm install -D @types/pg, puis passez directement à Créer une configuration Hyperdrive, qui ajoute le binding Hyperdrive, et à Configurer le Worker, qui active nodejs_compat.
Déplacez 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 de sslmode=verify-full, commencez par téléverser le certificat CA dans votre compte Cloudflare :
Utilisez l’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 :
Hyperdrive se connecte à votre base de données lors de la création de la configuration. Avec --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.
Mise en cache des requêtesHyperdrive peut mettre en cache les résultats des requêtes de lecture, pendant 60 secondes par défaut. Ce guide désactive la mise en cache avec --caching-disabled, de sorte qu’une lecture effectuée juste après une écriture renvoie bien la nouvelle ligne. Pour les requêtes majoritairement en lecture qui tolèrent des résultats légèrement obsolètes, vous pouvez créer une seconde configuration avec la mise en cache activée et lier les deux. Consultez Mise en cache des requêtes.

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
Si vous utilisez un fichier 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é :
Si votre projet utilise encore le paquet @cloudflare/workers-types, wrangler types indique comment migrer vers les types générés.

Interroger la base de données

Remplacez src/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 :
Wrangler gère le TLS pour la connexion locale. sslrootcert est résolu par rapport au répertoire depuis lequel vous lancez wrangler dev.
Si vous omettez sslmode, la connexion locale n’est pas chiffrée. Avec sslmode=require, elle est chiffrée, mais le certificat n’est pas vérifié. Utilisez toujours sslmode=verify-full avec sslrootcert. Si le certificat de l’autorité de certification (CA) est absent ou incorrect, les requêtes échouent avec l’erreur Connection terminated unexpectedly.
Dans un second terminal, créez une note :
Affichez la liste des notes :
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 :
S’il s’agit de votre premier Worker, Wrangler vous invite à enregistrer un sous-domaine workers.dev. Créez une note à l’aide du Worker déployé :
Ouvrez 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éveloppez guide_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 :
Si 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