Skip to content

Instantly share code, notes, and snippets.

@nk-gears
Forked from LaureRC/index.js
Created June 6, 2020 13:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nk-gears/6fe85df1b86a38bb8e421eb6a8c2a29a to your computer and use it in GitHub Desktop.
Save nk-gears/6fe85df1b86a38bb8e421eb6a8c2a29a to your computer and use it in GitHub Desktop.
Backup cloud function
const { google } = require("googleapis");
const { auth } = require("google-auth-library");
var sqladmin = google.sqladmin("v1beta4");
// Based on https://medium.com/@kennethteh90/how-to-schedule-daily-cloud-sql-export-to-google-cloud-storage-4c1bd360af06
exports.backup = async (_req, res) => {
const authRes = await auth.getApplicationDefault();
let authClient = authRes.credential;
var request = {
project: process.env.PROJECT_ID,
instance: process.env.DB_INSTANCE_NAME,
resource: {
exportContext: {
kind: "sql#exportContext",
fileType: "SQL",
uri: `gs://${process.env.BUCKET_NAME}/${(new Date()).toISOString()}-backup.gz`,
databases: [process.env.DB_NAME_TO_EXPORT]
}
},
auth: authClient
};
try {
const result = await sqladmin.instances.export(request);
console.log(result);
res.status(200).send("Command completed", null, result);
} catch(err) {
console.log(err);
res.status(500).send("Error", err);
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment