我该如何处理仅在特定时间需要的云中的虚拟机?

我该如何处理仅在特定时间需要的云中的虚拟机?

我目前正在本地服务器上处理视频,我想将其外包给云。我对 Google Cloud 非常熟悉,这就是我选择 Google 的原因。该过程包括:

  • 将视频文件上传至云存储
  • 在 Compute Engine 实例中处理文件
  • 将处理后的视频存储到云存储

平均而言,我每天需要使用 Compute Engine 实例 1 小时。有没有一种简单的方法可以自动启动实例并根据需要关闭它?我该怎么做?

答案1

有一个更简单的方法可以做到这一点。

GCP 提供的服务称为云功能在其中,您可以放置​​由事件或触发器其中一个是云存储触发器通过 Cloud Storage 事件激活,例如对象创建(上传文件)或对象删除(删除文件)。

云函数可以读取文件(在本例中为视频),执行其中的所有过程并返回结果,或者在您的情况下将结果存储在 GCS 存储桶中(可以与文件上传的位置相同,也可以是另一个)。这里您可以找到与刚刚上传的文件进行交互的代码示例。

要存储已处理的视频,请查看Cloud Storage 客户端库取决于你使用的语言(Cloud Storage 和 Cloud Functions 支持的语言有Node.jsPythonJavaC#)你应该检查代码示例将结果上传到存储桶中。

与 Compute Engine 相比,使用 Cloud Functions 是一种更便宜的选择,因为您只会在需要时使用这些资源。这里唯一的缺点是您受到内存和 CPU该服务支持。

如果资源(内存从 128MB 到 4096MB)不适合您要执行的进程,您也可以按照以下步骤操作:

  1. 使用以下代码创建 Compute Engine 实例机器的种类您的用例所需的。放置一个脚本,其中将完成所有流程。创建并设置好所有内容后,停下来
  2. 使用 GCS 事件触发器创建一个 Cloud Function(使用已提供的文档),每当调用它时,通过代码重新启动 GCE。这可以通过Compute Engine 客户端库或通过API(我可以用你喜欢的语言来思考 HTTPS 请求)。
  3. 将所有信息发送到您的 GCE 并让机器工作(您可能需要在 Cloud Functions 中添加一些代码来等待来自 GCE 的答复)。
  4. 结束后,将文件上传到云存储并让云函数知道一切已完成。
  5. 收到此确认后,告诉 Cloud Functions 再次停止您的 GCE。

请记住,Compute Engine 会向您收取虚拟机运行的时间因此,这种替代方案也可以以合理的价格为您提供所需的解决方案和所需的资源。

使用 Cloud Scheduler 调度 GCE也是一种选择,但您并不知道何时会使用 GCE,因此使用 Cloud Functions 所需的产品更少,您需要付出的努力也更少。

相关内容