首页 > 解决方案 > 如何在谷歌云功能中从快照创建磁盘-node js

问题描述

我一直在努力寻找解决这个特定问题的方法。我已经阅读了几乎所有gcloud/compute nodegoogle cloud functions.

现在我的挑战是disk从现有snapshotgoogle cloud function.

我使用下面的代码来创建磁盘。因为他们没有提供任何disksnapshot. 以下cloud function创建一个新的disk命名disk1,它是全新的磁盘。我不想要那个。我想从现有的磁盘创建一个磁盘,snapshot其中包含一些数据和设置。

exports.tempFunction = (req, res) => {
  // Example input: {"message": "Hello!"}
  const Compute = require(`@google-cloud/compute`);
  const compute = new Compute();
  const zone = compute.zone('us-central1-a');
  const disk = zone.disk('disk1');
  
  const config = {
  	// ...
    //os:'ubuntu'
	};

  disk.create(config, function(err, disk, operation, apiResponse) {
    // `disk` is a Disk object.

    // `operation` is an Operation object that can be used to check the
    // status of the request.
    console.log(err);
    console.log(disk);
    console.log(operation);
    console.log(apiResponse);
    res.status(200).send("success");
  });
 
};

非常感谢这方面的任何帮助。

PS 我也尝试过使用云 API。但是因为我只想使用cloud functions并且我无法弄清楚如何获取访问令牌以gcloud在内部使用cloud functions

标签: javascriptnode.jsgoogle-cloud-platformgoogle-cloud-functions

解决方案


可以通过在配置对象中设置磁盘资源字段[2]来自定义磁盘创建[1] 。在这种情况下,将配置中的字段设置为现有的快照部分或完整 URL。代码应如下所示:sourceSnapshot

exports.tempFunction = (req, res) => {
  // Example input: {"message": "Hello!"}
  const Compute = require(`@google-cloud/compute`);
  const compute = new Compute();
  const zone = compute.zone('us-central1-a');
  const disk = zone.disk('disk1');
  
  const config = {
    sourceSnapshot: "projects/{YOUR-PROJECT}/global/snapshots/{YOUR_SNAPSHOT}"
  };

  disk.create(config, function(err, disk, operation, apiResponse) {
    // `disk` is a Disk object.

    // `operation` is an Operation object that can be used to check the
    // status of the request.
    console.log(err);
    console.log(disk);
    console.log(operation);
    console.log(apiResponse);
    res.status(200).send("success");
  });
 
};


推荐阅读