我想使用无服务器GCP-云功能来备份所有区域的VM磁盘,
基本上-我想备份带有快照快照名称的所有VM磁盘,例如snapshot-vm_name-timestamp
任何早于14天的备份,请将其删除。这样就是自助功能。
文档很烂,没有太大帮助。这就是我能得到的
exports.run_process = (req, res) => {
let message = req.query.message || req.body.message || 'Hello World!';
console.log(message);
const Compute = require(`@google-cloud/compute`);
const compute = new Compute();
const zone = compute.zone('us-east1-b');
zone.getDisks(function(err, disks) {
// `disks` is an array of `Disk` objects.
disks.map(disk => {
console.log(disk);
});
});
res.status(200).send(message);
};
任何帮助或建议,我们深表感谢。
参考链接:https://cloud.google.com/nodejs/docs/reference/compute/0.10.x/Zone
答案 0 :(得分:1)
您的代码中有错误。使用const Compute = require(@google-cloud/compute);
语句的位置。代替“ `”,您必须使用“ ” 。另外,请记住使用需要添加依赖项的库。您的package.json
应该如下所示:
{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"google-cloud": "^0.58.2",
"@google-cloud/compute": "^0.10.0"
}
}
继续,接下来的步骤应类似于以下内容:
使用Snapshot Documentation中的代码加载所有可用的快照。使用与获取磁盘相同的逻辑
获取快照的creationTimeStamp
并计算天数差异
创建一个变量,该变量将以“ DD-MM-YYYY” 格式var datetime = new Date().toLocaleDateString();
获取当前日期,以将其用作新快照的后缀
使用此方法new_snapshot_name = new_snapshot_name.replace(/\//g, '-');
将所有/
替换为-
,以匹配正则表达式'(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?)'
使用getDisk(...)
方法列出所有磁盘并创建它们的快照
我做了一些编码,对我有用。该函数完成您在问题中描述的所有操作。您可以找到我的code example in GitHub