[GCP] 创建高效的 Cloud Functions 开发环境 [JavaScript]
你好。
我是Mandai,负责Wild 开发团队。
您熟悉GCP的云功能吗?
AWS Lambda for GCP 是一个无服务器计算环境,让您只需部署代码即可轻松准备执行环境。
当您想要运行一小段代码而不需要准备服务器时,或者当您想要快速运行一个连接服务的进程而单独使用 Cloud Pub/Sub 是不可能的时,它非常有用。没有它就上传。
再者,如果你负责的是与实际操作相关的重要处理,那么开发环境就更加必要了。
但是,我觉得没有关于实现Cloud Functions的开发环境的信息,所以我想创建一个易于开发的环境。
准备编辑器
我推荐VSCode,它原生支持JavaScript
准备模块
构建一个环境以在本地运行 Cloud Functions 代码。
然而,您所需要的只是 Google 提供的一个模块。
npm install @google-cloud/functions-framework -g
*2021/01/13 缺少全局安装选项,所以我添加了它。
使用这个模块,您可以创建一个行为类似于 Cloud Functions 的 Web 服务器。
准备项目
Cloud Functions 允许您通过 package.json 加载所需的模块。
因此,通过 npm init 使必要的模块可读。
npm init # 输入有关项目的问题的适当答案
创建 git 存储库
就我个人而言,我认为用 git 管理脚本更好,无论多么简单,所以我现在使用 git init 。
Cloud Source Repositories作为存储库非常方便,因为它集成了部署之前的步骤。
截至 2020 年 1 月,每月有 5 个用户、50 GB 容量和 50 GB 传输量的限制,但我认为它会符合免费试用的限制。
写代码
Cloud Functions 脚本需要入口点。
以下是一个以 main 作为入口点的最小脚本。
模板
Exports.main = (req, res) => { res.status(200).send('test'); }
在生产中,您将指定 main 作为“要执行的函数”。
接下来,让我们在本地运行它并检查它是如何工作的。
本地执行
本地运行时,在命令行中运行以下命令启动Web服务器并等待请求。
功能框架--目标=主要
--target 选项是必需的,指定入口点。
如果没有错误,则 Web 服务器正在 localhost:8080 上运行,因此请尝试使用curl 运行它。
卷曲本地主机:8080
如果上面的命令返回“test”,则说明成功!
可以将该命令转换为 npm 脚本并进行如下配置。
"scripts": { "start": "functions-framework --target=main" },
添加以上设置后,就可以使用 npm start 来运行它了。
热重载
使用 npm start 时,每次更改代码时都需要手动重新启动功能框架。
由于这是一项相当耗时的任务,因此我想介绍一下热重载。
我们将介绍一个名为 npm-watch 的模块。
npm 安装 npm-watch
它看起来像是 Nodemon 的包装模块,但由于不需要特殊设置,因此很容易安装。
添加 npm 脚本。
"scripts": { "start": "functions-framework --target=main", "watch": "npm-watch start" }
接下来,添加代码监控设置。
“观看”:{“开始”:“*.js”}
在顶层添加 watch 键(与 main 和 script 相同级别)。
它有点复杂,但是启动它的命令如下。
npm 运行手表
如果这样做,将执行 npm run start,但如果对底层 JS 文件进行任何更改,functions-framework 将自动重新启动。
到目前为止配置的 package.json 如下所示:
{ "name": "test", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"错误: 未指定测试\" && exit 1", "start": "functions-framework --target=main", "watch": "npm-watch start" }, "author": "y.mandai", "license ": "ISC", "依赖项": { "@google-cloud/functions-framework": "^1.3.2", "npm-watch": "^0.6.0" }, "watch": { "开始": "*.js" } }
概括
这次,我们介绍了函数框架,这在实现 GCP Cloud Functions 脚本时非常有用。
使用此模块,我可以轻松地在本地尝试 Cloud Functions 的行为。
在调整或测试脚本时,重新启动functions-framework可能会很麻烦,所以最好使用npm-watch构建热重载环境,让您的工作更有效率!
最后
我开设了我所属的系统开发服务网站“SEKARAKU Lab”。
Beyond是从服务器设计搭建到运营的一站式服务,所以如果您在服务器端开发方面遇到任何问题,请随时联系我们。
SEKARAKU 实验室: [https://sekarakulab.beyondjapan.com/](https://sekarakulab.beyondjapan.com/)
就是这样。