[GCP] 创建高效的 Cloud Functions 开发环境 [JavaScript]

你好。
我是Mandai,负责Wild 开发团队。

你听说过GCP的云函数吗?
它是一个无服务器计算环境,只需部署代码即可轻松创建执行环境。它是GCP版本的AWS Lambda。

它对于运行无需服务器配置的简单代码,或者快速连接仅使用 Cloud Pub/Sub 难以实现的服务非常有用。然而,无论代码多么简单,都必须经过测试才能上传。

在处理与实际运营相关的关键流程时,开发环境显得尤为重要。
然而,我感觉目前缺乏关于云函数开发环境的信息,因此我想创建一个易于使用的开发环境。

准备编辑

我推荐VSCode ,它原生支持 JavaScript

 

准备模块

我们将创建一个环境,用于在本地运行云函数代码。
您至少只需要一个由 Google 提供的模块。

npm install @google-cloud/functions-framework -g

 

*2021/01/13 全局安装选项缺失,因此已添加。

 

这个单一模块允许您创建一个行为类似于云函数的 Web 服务器。

 

项目准备工作

Cloud Functions 允许您通过 package.json 加载所需的模块,
因此请确保所需的模块可以通过 npm init 读取。

npm init # 输入有关项目的问题的适当答案

 

创建一个 Git 仓库

我个人认为,即使是最简单的脚本,最好也用 git 来管理,所以目前我只会运行 git init。

Cloud Source Repositories作为存储库非常方便,因为它统一了部署前的各个步骤。
截至 2020 年 1 月,每月最多 5 个用户、50 GB 存储空间和 50 GB 传输量均有限制,但我认为试用版应该符合免费套餐的要求。

 

编写代码

云函数脚本需要一个入口点。
一个以 main 作为入口点的最小脚本如下所示:

 

模板

exports.main = (req, res) => { res.status(200).send('test'); }

 

在生产环境中,您需要将 main 函数指定为“要运行的函数”。
接下来,让我们在本地运行它,并检查它是否正常工作。

 

本地执行

如果您在本地运行,请在命令行中运行以下命令以启动 Web 服务器并等待请求。

functions-framework --target=main

 

必须使用 `--target` 选项来指定入口点。
如果没有出现错误,则说明 Web 服务器正在 localhost:8080 上运行,因此请尝试使用 curl 或类似工具运行它。

curl localhost:8080

 

如果上述命令返回“test”,则表示执行成功!

可以将这条命令编写成 npm 脚本,并按如下方式配置:

  "scripts": { "start": "functions-framework --target=main" },

 

添加上述设置后,您就可以使用 npm start 运行它了。

 

热重装

如果使用 `npm start`,每次修改代码后都需要手动重启函数框架。这
相当耗时,所以我打算引入热重载机制。我会引入
一个名为 `npm-watch` 的模块。

npm install npm-watch

 

它看起来像是 nodemon 的一个包装模块,但由于不需要特殊配置,所以很容易上手。

添加 npm 脚本。

  "scripts": { "start": "functions-framework --target=main", "watch": "npm-watch start" }

 

接下来,添加代码监视设置。

  "watch": { "start": "*.js" }

 

监视键应该添加到顶层(与主目录和脚本目录处于同一层级)。

这有点复杂,但启动它的命令如下:

npm run watch

 

这将执行 npm run start,但如果对其下的 JS 文件进行任何更改,functions-framework 将自动重新启动。

到目前为止,package.json 文件的配置如下所示:

{ "name": "test", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "functions-framework --target=main", "watch": "npm-watch start" }, "author": "y.mandai", "license": "ISC", "dependencies": { "@google-cloud/functions-framework": "^1.3.2", "npm-watch": "^0.6.0" }, "watch": { "start": "*.js" } }

 

 

概括

这次我们介绍了 functions-framework,它在实现 GCP 云函数脚本时非常有用。
使用这个模块,我们可以轻松地在本地测试云函数的行为。
由于在调整或测试脚本时重启 functions-framework 可能比较麻烦,因此使用 npm-watch 设置热重载环境是一个提高效率的好方法!

最后

我开设了我所属的系统开发服务网站“SEKARAKU Lab”。
Beyond是从服务器设计搭建到运营的一站式服务,所以如果您在服务器端开发方面遇到任何问题,请随时联系我们。
SEKARAKU 实验室: [https://sekarakulab.beyondjapan.com/](https://sekarakulab.beyondjapan.com/)

就是这样。

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
9,958
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。