介绍
wd-serverless-offline 是一个基于 Node.js 的 npm 包,它能够模拟 AWS Lambda 本地开发环境,支持本地离线调试和开发 Lambda 函数的能力。它使用了 serverless framework,可以让你在本地开发阶段模拟 API Gateway,自己的 Lambda 函数甚至其他 AWS 服务。
本篇文章将介绍如何使用 wd-serverless-offline,包括安装、初始化、使用以及相关指令。
安装
首先,我们需要将 wd-serverless-offline 这个 npm 包安装到本地项目中:
npm install --save-dev wd-serverless-offline
由于我们只是需要在本地进行开发和测试,因此可以将其安装到 devDependencies 中。
初始化
接下来,我们需要为我们的项目初始化一个辅助文件夹,其中包含一些配置文件和用于本地模拟 API 的框架。我们可以通过 serverless framework 的 init 指令来完成初始化工作:
npx serverless create --template aws-nodejs --name my-service
其中,my-service 是你想要给你的服务起的名字。
接下来,我们需要添加一个 plugins 配置项到 serverless.yml 文件中:
plugins: - serverless-offline
这将在项目中启用 wd-serverless-offline 插件。
使用
现在,我们可以在本地启动 serverless 应用,以验证程序是否能在本地运行。使用下面的指令:
npx serverless offline
如果一切正常,你应该能看到类似于下面的输出:
Serverless: Starting Offline: dev/us-east-1. Serverless: Routes for home: Serverless: ANY / Serverless: Offline listening on http://localhost:3000
现在,你就可以在本地服务器上测试和开发 Lambda 函数了。
添加 API Gateway
运行 serverless offline 指令后,wd-serverless-offline 会自动生成一个本地 API Gateway,可以通过以下 RESTful API 访问你的 Lambda 函数:
http://localhost:3000/{stage}/{function_name}
- stage: 设置 API Gateway 的阶段。
- function_name: 要启动的 Lambda 函数名字。
离线调试 Lambda 函数
通过添加本地断点来启动 Node.js,wd-serverless-offline 可以让你在本地开始调试 Lambda 函数,这一点与在 AWS 上执行函数非常类似。要离线调试 Lambda,你需要使用 node inspect。指令的执行步骤如下:
打开一个命令行窗口,离线启动应用程序:
npx serverless offline
在另一个窗口打开一个 node 在 debug 模式下运行 Lambda 函数的实例:
node --inspect-brk=0.0.0.0:9229 __serverless_handler__.js
其中,serverless_handler.js 是你的 Lambda 函数的部署文件,它是 serverless framework 自动生成的。
在 node 结束调试会话之前,你可以通过浏览器访问 chrome://inspect 来查看正在运行的 Lambda 函数,并设置断点。
额外的指令
wd-serverless-offline 还提供了一些其他方便的指令,可以帮助你测试和模拟 AWS Lambda。
启动一个带有从命令行参数传递的变量的 Lambda:
npx serverless invoke local --function my-function --data '{"myData": "mock"}'
这会模拟一次请求时传递给 Lambda 函数的事件,并在控制台中返回函数的响应。
启动一个有序的 Lambda 函数链:
npx serverless invoke local --function first-function --path event.json --context context.json
这种设置的环境可以让你在本地执行更多的 AWS Lambda 开发,从而更好地测试和部署你的代码。
结论
wd-serverless-offline 使得在本地开发、测试、调试 AWS Lambda 函数变得更加简单。在使用它时,你可以编写更好、更强大的 Lambda 函数,并通过本地测试来验证你的功能。如果你正在为 AWS 开发 Lambda,在你的开发环境中使用 wd-serverless-offline 来获得更好的体验!
示例代码
以下是一个简单的 Lambda 函数示例,用 wd-serverless-offline 进行本地离线调试和测试。
目录结构:
-- my-serverless-app |-- serverless.yml |-- handler.js
serverless.yml 文件:
-- -------------------- ---- ------- -------- ----------------- ----------------- -------- ------- --------- ----- --- ---------- ------ -------- ------------- -------- - ------------------
handler.js 文件(这是一个 Node.js 文件,以 exports 开头的 Lambda 函数定义):
-- -------------------- ---- ------- ------------- - ----- ------- -- - ----- ------- - ------ - - --------------------------------- ------ - ----------- ---- ----- ---------------- -------- -------- --- -- --
运行状态如下:
$ npx serverless offline Serverless: Starting Offline: dev/us-east-1. Serverless: Routes for hello: Serverless: ANY /hello Serverless: Offline listening on http://localhost:3000
使用 cURL 测试:
$ curl http://localhost:3000/hello?name=Joe { message: 'Hello Joe' }
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600573af81e8991b448e9ab0