logo科技微讯

谷歌 Cloud Functions 入门

作者:科技微讯
日期:2021-01-14
📝 笔记

价格及免费额度

  • Cloud Functions 的价格及免费额度,免费额度包括每月 200 万次调用、40 万 GB 秒和 20 万 GHz 秒的计算时间、5GB 出站流量;
    • 1 GB 秒是指预配了 1 GB 内存的 1 秒钟实际时间;
    • 1 GHz 秒是指预配了 1 GHz CPU 的 1 秒钟实际时间;
  • 谷歌云函数设置定时运行需要用到 Google Cloud Scheduler 服务,价格及免费额度,每个账户每月有 3 个免费额度,超出部分 0.1 刀/个;
    • 谷歌云函数支持的触发器类型
    • 使用 Cloud Scheduler 触发云函数属于事件触发器中的 Pub/Sub 触发器;
  • 函数存储在 Container Registry 或 Artifact Registry 中,其中 Container Registry 没有免费额度,第二代 Cloud Functions 只使用 Artifact Registry,这个有免费额度;

如何部署

安装 sdk

首先在电脑安装 google-cloud-sdk,下载之后,把压缩包解压到 ~ 目录,进入解压的目录,然后 ./install.sh,按照要求执行,执行完成后关闭终端再重新打开。

写云函数

主要有 http 函数、事件函数,如果不希望通过 url 访问这个函数,那就是事件函数,两种函数的格式不一样。事件函数又可以分成 2 类:

//HTTP 函数的一个例子
const functions = require("@google-cloud/functions-framework");
// Register an HTTP function with the Functions Framework
functions.http("myHttpFunction", (req, res) => {
  // Your code here
  // Send an HTTP response
  res.send("OK");
});
//Background Functions 的一个例子
exports.myBackgroundFunction = (eventData, context, callback) => {
  // Your code here
  // The eventData argument represents the event data payload
  // Optionally signal function completion:
  callback();
};
//CloudEvent Functions 的一个例子
const functions = require("@google-cloud/functions-framework");
// Register a CloudEvent function with the Functions Framework
functions.cloudEvent("myCloudEventFunction", (cloudEvent) => {
  // Your code here
  // Access the CloudEvent data payload via cloudEvent.data
});

从上面的例子可看到第一代的 Background Functions 不需要安装 @google-cloud/functions-framework,其他两种写法都要。如果是 pub/sub 函数,还要安装 @google-cloud/pubsub

创建定时触发函数的流程

  • 创建一个 pub/sub 事件函数
  • 因为 pub/sub 函数需要通过 pub/sub 主题触发,所以接着创建一个 pub/sub 主题
  • 创建 Cloud Scheduler,这个定时器用来定时触发 pub/sub 主题,于是就能实现定时触发 pub/sub 函数
  • 运行定时器

部署云函数

node_modules 文件夹之外的文件打包,通过网页后台创建云函数,上传压缩包,注意右上方填写实际导出的函数名称。当然也可以用 sdk 命令行部署。

donation赞赏
thumbsup0
thumbsdown0
暂无评论