GCP Cloud Function pour Cloud Database

Comment créer une fonction GCP dans le Cloud et établir la communication entre cette fonction et une base de données hébergée dans le Cloud.

 

Créer le script de la fonction Cloud

Pré-requis

  • Connaissance des Nodejs, Python ou Go
  • Besoin de connaissances sur la bibliothèque de connecteurs db

Script pour une base de données SQL
Pour cette démo, nous utiliserons Nodejs avec une base de données PostgreSQL, donc nous utiliserons la bibliothèque sequelize.

const { Sequelize } = require('sequelize')
//All script outside of export functions will be execute during the "cold start", see: https://cloud.google.com/functions/docs/bestpractices/tips
//Check environment variable
if (!process.env.DB_TYPE || !process.env.DB_USER || !process.env.DB_PWD || !process.env.DB_HOST || !process.env.DB_PORT || !process.env.DB_NAME) {
throw new Error(`One or many environment variables are missing`)
}
// We use the sql client like a global parameter, to avoid having to recreate the database connection on each trigger of the same instance. See: https://cloud.google.com/sql/docs/mysql/connect-functions#connection_pools_2
// For more information about sequilize see: https://sequelize.org/master/
const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PWD, {
host: process.env.DB_HOST,
port: process.env.DB_PORT,
dialect: process.env.DB_TYPE,
dialectOptions: {
ssl: true
},
pool: {
// max at 1 see: https://cloud.google.com/sql/docs/mysql/connect-functions#connection_limits_2
max: 1,
min: 0,
idle: 5000,
},
logging: false
})
// This is the method used by the cloud function, we use a http trigger cloud function so we need to handle http request & response
exports.test = (req, res) => {
sequelize.authenticate().then(() => {
res.status(200).send('connection ok')
}).catch((err) => {
res.status(500).send(err)
})
}

 

Paramètres de la base de données

Pré-requis

  • Un environnement de base de données fonctionnel
  • Adapter les rôles en conséquence
  • La fonction Cloud peut être invoquée plusieurs fois pendant un petit délai. Pour garantir les performances, GCP exécutera plusieurs instances de notre fonction « Cloud », et chaque instance sera appelée plusieurs fois.

 

Créer une fonction GCP

Pré-requis

  • Un projet de GCP valable
  • IAM roles pour Cloudfunction
  • IAM rôles pour VPC (facultatif)

Avec l’interface GUI
Créer une nouvelle Cloudfunction

  • Sélectionnez le nom de la fonction Cloud
  • Sélectionnez la mémoire allouée
  • Définissez le déclencheur de la fonction Cloud
  • Importez votre script ou écrivez-le directement
  • Définissez la fonction d’exportation à exécuter
  • Choisissez la région la plus proche de l’endroit où votre base de données est hébergée (dans les paramètres avancés)