Node.js-GCP-云功能-跨所有区域和VM的VM磁盘快照

时间:2018-12-19 23:31:48

标签: node.js google-cloud-platform google-cloud-functions

我想使用无服务器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

1 个答案:

答案 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"   
    } 
 }

继续,接下来的步骤应类似于以下内容:

  1. 使用Snapshot Documentation中的代码加载所有可用的快照。使用与获取磁盘相同的逻辑

  2. 获取快照的creationTimeStamp并计算天数差异

  3. 创建一个变量,该变量将以“ DD-MM-YYYY” 格式var datetime = new Date().toLocaleDateString();获取当前日期,以将其用作新快照的后缀

    < / li>
  4. 使用此方法new_snapshot_name = new_snapshot_name.replace(/\//g, '-');将所有/替换为-,以匹配正则表达式'(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?)'

  5. 使用getDisk(...)方法列出所有磁盘并创建它们的快照

我做了一些编码,对我有用。该函数完成您在问题中描述的所有操作。您可以找到我的code example in GitHub