Une application Python Flask légère qui tourne sur Cloud Run pour exécuter des dumps PostgreSQL et les transférer vers Google Cloud Storage, déclenchée par Cloud Scheduler. Aucune infrastructure always-on nécessaire.
Vue d'ensemble
Fonctionnalités clés :
- Récupération sécurisée du mot de passe depuis Secret Manager
- Inclusion/exclusion flexible de schémas et tables
- Upload automatique vers Google Cloud Storage
- Déclenchement facile via Cloud Scheduler
Prérequis
Avant le déploiement :
- Un bucket Google Cloud Storage (GCS) pour stocker les dumps
- Un service account avec les permissions :
roles/storage.objectUserpour l'accès au bucket GCSroles/secretmanager.secretAccessorpour récupérer le mot de passe depuis Secret Manager
Fonctionnement
- Cloud Scheduler déclenche le service Cloud Run via HTTP
- Cloud Run récupère le mot de passe depuis Secret Manager
- Connexion à l'instance Cloud SQL via le proxy Cloud SQL Auth
- Exécution de
pg_dumpavec les options configurées - Upload du fichier dump vers le bucket GCS
Mise en place
1. Déployer sur Cloud Run
gcloud run deploy pg-dump-function \
--image=docker.io/damsdgn29/pg-dump-function:latest \
--region=YOUR_REGION \
--service-account=YOUR_SERVICE_ACCOUNT \
--set-env-vars="GOOGLE_CLOUD_PROJECT=YOUR_PROJECT" \
--set-env-vars="REGION=YOUR_REGION" \
--set-env-vars="DB_INSTANCE_NAME=YOUR_INSTANCE" \
--set-env-vars="DB_NAME=YOUR_DB,DB_USER=YOUR_USER" \
--set-env-vars="SECRET_NAME=YOUR_SECRET" \
--set-env-vars="GCS_BUCKET=YOUR_BUCKET"
Variables d'environnement optionnelles pour filtrer les schémas et tables :
--set-env-vars="INCLUDED_SCHEMAS=public,EXCLUDED_TABLES=logs"
Variables disponibles : INCLUDED_SCHEMAS, EXCLUDED_SCHEMAS, INCLUDED_TABLES, EXCLUDED_TABLES, DUMP_BASE_NAME.
2. Configurer Cloud Scheduler
gcloud scheduler jobs create http pg-dump-schedule \
--schedule="0 2 * * *" \
--uri="https://YOUR_CLOUD_RUN_URL" \
--http-method=POST \
--oidc-service-account-email=YOUR_SERVICE_ACCOUNT
Ce job déclenche le service tous les jours à 2h du matin.
Conclusion
Cette solution offre des sauvegardes PostgreSQL automatisées et sécurisées, stockées dans Google Cloud Storage. Cloud Run assure la scalabilité et la fiabilité, Cloud Scheduler garantit une exécution régulière. Vérifiez que votre service account dispose des permissions nécessaires sur le bucket GCS.
Le code source est disponible sur GitHub.