我想使用gcp serverless -cloud函数来备份所有区域的VM磁盘,
基本上 - 我想备份所有使用时间stamp的快照名称,例如快照-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
您的代码中存在错误。您使用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"
}
}
继续向前,下一步应与以下几个相似:
使用快照文档中的代码加载所有可用的快照。使用与获取磁盘
的逻辑相同的逻辑获取快照的
creationTimeStamp
并计算几天的差异创建一个变量,该变量将在>" dd-mm-yyyy"中获得当前日期格式
var datetime = new Date().toLocaleDateString();
将其用作新快照的后缀使用此方法
new_snapshot_name = new_snapshot_name.replace(///g, '-');
用-
替换所有/
,以匹配Regex'(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?)'
使用
getDisk(...)
方法列出所有磁盘并创建它们的快照
我做了一些编码,对我有用。该功能可以完成您在问题中描述的所有内容。您可以在GitHub中找到我的代码示例