Tout ce que Lampion met à votre disposition, avec des exemples concrets.
Votre compute se suspend automatiquement après 5 minutes sans connexion. Au prochain psql, il se réveille en moins d'une seconde. Vous ne payez que le temps actif.
$ psql "postgresql://[email protected]/ep-abc.postgres" SSL connection (TLSv1.3) -- compute was suspended, resumed in 0.8s mydb=> SELECT now(); 2026-04-22 10:42:01.234+00
Créez une copie de votre base en moins d'une seconde. Copy-on-write : la branche ne consomme que le delta. Testez vos migrations, puis supprimez.
$ curl -X POST .../branches \ -d '{"name":"staging","parent_id":"main"}' {"id":"br-new","name":"staging", "compute_id":"ep-staging", "created_in":"0.4s"} # La branche a sa propre base, isolée # Supprimez-la quand vous avez fini
Chaque connexion est authentifiée et chiffrée. Mots de passe générés par projet, jamais réutilisés. API publique avec Bearer tokens scopés par organisation.
# Connexion chiffrée + authentifiée $ psql "postgresql://cloud_admin:YaQY... @db.lampion.cloud:5432/ep-abc.postgres ?sslmode=require" psql (17.5) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384) # API avec Bearer token $ curl -H "Authorization: Bearer lmp_live_xxx" \ .../v1/projects
Un éditeur SQL complet dans la console. Multi-onglets, historique, requêtes sauvegardées, Explain Analyze, export CSV. Éditez vos données directement dans les tables.
mydb=> EXPLAIN ANALYZE SELECT * FROM users WHERE email ILIKE '%@corp.com'; Seq Scan on users (cost=0.00..1.52 rows=1) Filter: (email ~~* '%@corp.com'::text) Rows Removed by Filter: 42 Planning Time: 0.08 ms Execution Time: 0.03 ms
Tableau de bord temps réel avec historique 24h. CPU, mémoire, I/O, connexions, cache ratio, taille par base. Alertes email automatiques sur les quotas.
GET /v1/projects/{id}/metrics {"connections_total": 12, "connections_active": 3, "cache_hit_ratio": 98.5, "storage_logical_mb": 42.3, "compute_cpu_seconds": 1234.5, "compute_memory_mb": 256, "databases": [ {"name":"myapp","size_mb":38.1} ]}
PgBouncer intégré en mode transaction pooling. Le proxy TCP route les connexions, gère le multiplexage et réveille les computes suspendus au premier paquet.
# Connexion directe (sans pooling) $ psql "postgresql://[email protected]/ep-abc.postgres" # Via pooling (parametre options) $ psql "postgresql://[email protected]/postgres ?options=endpoint%3Dep-abc" -- PgBouncer: transaction mode active -- 200 clients → 5 PG connections
Capturez l'état exact de votre base à un instant T. Restaurez vers une nouvelle branche sans toucher à la production. Export pg_dump via l'API.
$ curl -X POST .../backups \ -d '{"name":"before-migration","branch_id":"main"}' {"id":"bk-42","lsn":"0/15A2C08","created_at":"..."} # Restaurer vers une nouvelle branche $ curl -X POST .../backups/bk-42/restore {"branch":"restored-bk-42","compute_id":"ep-new"} # Export SQL $ curl .../endpoints/ep-abc/dump?table=users -o users.sql
Recevez des notifications HTTP en temps réel sur 10+ types d'événements. Chaque payload est signé HMAC-SHA256 pour vérification côté serveur.
$ curl -X POST .../webhooks \ -d '{"url":"https://hook.me/lampion", "events":["project.created","endpoint.suspended"]}' {"id":"wh-7f","secret":"a1b2c3..."} # Payload recu : {"event":"endpoint.suspended", "project_id":"abc123", "endpoint_id":"ep-abc", "timestamp":"2026-04-01T12:00:00Z"} # Header: X-Lampion-Signature: sha256=...
Invitez vos collègues par email, attribuez des rôles granulaires. Chaque utilisateur peut appartenir à plusieurs organisations avec switch instantané.
$ curl -X POST .../invitations \ -d '{"email":"[email protected]","role":"developer"}' {"id":"inv-9a","email":"[email protected]", "role":"developer","status":"pending"} # Audit log $ curl .../audit-log?limit=3 [{"action":"invitation.created","actor":"bob"}, {"action":"project.created","actor":"bob"}, {"action":"api_key.created","actor":"alice"}]
Attachez jusqu'à 10 scripts SQL ordonnés à votre projet. Ils s'exécutent automatiquement sur chaque nouvelle branche — données de test, fixtures, extensions.
$ curl -X POST .../seeds \ -d '{"name":"fixtures","sql":" CREATE TABLE users ( id SERIAL PRIMARY KEY, name TEXT, email TEXT UNIQUE ); INSERT INTO users (name, email) VALUES (\u0027Alice\u0027, \[email protected]\u0027), (\u0027Bob\u0027, \[email protected]\u0027);"}' {"id":"seed-1","name":"fixtures","position":1} # Chaque branche creee execute ce script
Capturez les top requêtes d'une branche via pg_stat_statements, rejouez-les sur une autre. Détectez les régressions de performance avant de merger.
$ curl -X POST .../replay -d '{ "source_endpoint_id":"ep-main", "target_endpoint_id":"ep-staging", "limit":20}' {"queries": [ {"query":"SELECT * FROM orders WHERE...", "source_mean_ms": 1.2, "target_mean_ms": 3.8, "ratio": 3.17, "status": "regression"} ], "summary": {"regressions":2, "improvements":5,"stable":13}}
Installez pgvector, PostGIS, pg_cron et d'autres extensions en un clic. Listez les extensions disponibles, activez ou désactivez-les par base.
$ curl .../extensions [{"name":"plpgsql","installed":true}, {"name":"pgvector","installed":false}, {"name":"postgis","installed":false}] $ curl -X POST .../extensions \ -d '{"name":"pgvector"}' {"name":"pgvector","installed":true} mydb=> CREATE TABLE docs ( id SERIAL, embedding vector(1536) );
Explorez la structure de vos bases via l'API ou la console. Navigation hiérarchique en 3 niveaux : databases, schemas, tables avec colonnes et types.
$ curl ".../schema?database=myapp&schema=public" {"type":"tables","items":[ {"name":"users","columns":[ {"name":"id","type":"integer", "nullable":false,"default":"nextval()"}, {"name":"email","type":"text", "nullable":false,"default":null}, {"name":"created_at","type":"timestamptz", "nullable":true,"default":"now()"} ]}, {"name":"orders","columns":[...]} ]}
Audit visuel prouvant où résident vos données. Région, datacenter physique, provider, certifications par couche. Preuve de conformité exportable.
$ curl .../residency {"region_id":"fr-par-1", "region":{ "city":"Paris", "provider":"Scaleway", "datacenter":"DC2 — Vitry-sur-Seine", "certifications":["ISO 27001","HDS"]}, "data_layers":[ {"layer":"compute","location":"fr-par-1"}, {"layer":"pageserver","location":"fr-par-1"}, {"layer":"s3_storage","location":"fr-par"} ], "compliance":{"data_in_country":"France"}}
3 plans clairs avec simulation de coûts en temps réel. Metering précis du compute, stockage et transfert. Aucun coût caché.
$ curl .../usage {"plan":{"name":"dev"}, "quotas":{"projects":{"used":4,"max":100}}, "total":{ "compute_hours": 25.3, "storage_gb": 1.2, "transfer_gb": 0.4}, "estimated_cost":{ "compute_usd": 2.28, "storage_usd": 0.42, "transfer_usd": 0.04, "total_usd": 2.74}, "period":"2026-04"}
Masquez dynamiquement les colonnes sensibles (email, nom, IBAN, SIRET) sur une branche. Idéal pour partager une copie de production avec dev/staging sans exposer les données réelles. Basé sur postgresql_anonymizer avec dynamic masking. Les membres avec le role analyst ne voient que les branches anonymisées et se connectent via un role PostgreSQL dédié (lampion_analyst) qui ne voit que les données masquées.
# 1. Activer le masking sur la branche staging $ curl -X POST .../branches/staging/anonymization/enable {"enabled":true} # 2. Ajouter des règles de masquage $ curl -X POST .../anonymization/rules -d '{ "table_name":"users", "column_name":"email", "masking_function":"anon.fake_email()" }' {"id":"r-1","column_name":"email", "masking_function":"anon.fake_email()"} staging=> SELECT email FROM users LIMIT 2; email ------------------------- [email protected] [email protected] -- Toutes les valeurs sont fake
Ajoutez des replicas en lecture seule sur n'importe quelle branche. Chaque replica a son propre connection string et peut être suspendu indépendamment.
$ curl -X POST .../branches/main/replicas {"id":"rep-1", "connection_string":"postgresql://... @db.lampion.cloud/rep-1.postgres ?sslmode=require", "status":"running", "read_only":true} # Suspend quand plus necessaire $ curl -X POST .../replicas/rep-1/suspend {"id":"rep-1","status":"suspended"}
Vos données sont chiffrées au repos et en transit sur chaque couche. Les plans Enterprise peuvent apporter leur propre clé de chiffrement (CMEK) via un KMS externe.
# Connexion — TLS 1.3 obligatoire $ psql "postgresql://[email protected]/...?sslmode=require" SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384) # Vérifier le chiffrement des données $ curl .../residency {"data_layers":[ {"layer":"compute","encryption":"AES-256 (volume)"}, {"layer":"s3_storage","encryption":"SSE-S3 AES-256"}, {"layer":"console_db","encryption":"Managed (encrypted)"} ], "cmek":{"enabled":false, "available_on":"enterprise"}} # Enterprise : CMEK via KMS $ curl -X PATCH .../encryption \ -d '{"kms_provider":"aws_kms", "key_arn":"arn:aws:kms:eu-west-1:..."}'
Choisissez votre cloud provider à la création du projet : Paris (Scaleway) ou Gravelines (OVH Cloud). Vos données restent en France, sur le provider de votre choix. La console reste unique, le data plane (K8s + S3) est déployé sur le cloud sélectionné.
# Creer un projet sur Scaleway Paris $ curl -X POST .../projects \ -d '{"name":"my-app","region":"scw-fr-par-1"}' {"id":"abc","region":"scw-fr-par-1", "provider":"scaleway"} # Ou sur OVH Cloud Gravelines $ curl -X POST .../projects \ -d '{"name":"my-app","region":"ovh-gra-1"}' {"id":"def","region":"ovh-gra-1", "provider":"ovhcloud"} # Verifier la sante des data planes (admin) $ curl .../admin/data-planes [{"id":"scw-fr-par-1","healthy":true}, {"id":"ovh-gra-1","healthy":true}]
40+ endpoints documentés. Créez un projet et recevez le connection string en une seule requête. Intégrable dans vos pipelines CI/CD.
# Creer un projet en une requete $ curl -X POST \ -H "Authorization: Bearer lmp_live_xxx" \ -d '{"name":"my-app","region":"fr-par-1"}' \ api.lampion.cloud/v1/projects {"id":"abc123", "endpoint_id":"ep-abc", "connection_string":"postgresql:// cloud_admin:[email protected] :5432/ep-abc.postgres?sslmode=require", "pg_password":"YaQYfbg..."} # Pret a utiliser immediatement
Déplacez un projet d'un provider à un autre, d'une région à une autre, en une seule commande. Lampion réplique les données, bascule le trafic via le proxy TCP et supprime la source. Zéro downtime applicatif.
# Migrer de Scaleway Paris vers OVHcloud Gravelines $ curl -X POST .../projects/abc123/migrate \ -d '{"target_region":"ovh-gra-1"}' {"id":"mig-7f", "source":"scw-fr-par-1", "target":"ovh-gra-1", "status":"replicating", "eta_seconds":120} # Suivre l'avancement $ curl .../projects/abc123/migrate/mig-7f {"status":"completed", "duration_seconds":98, "data_transferred_mb":1420, "downtime_ms":0} # Le connection string n'a pas changé # Le proxy reroute automatiquement