[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