本文将介绍 Serverless 平台下如何新建 Lambda 函数,在文章过程中详细阐述了 Serverless的概念和组成部分,以及如何使用 Serverless CLI 在本地开发和测试 Lambda 函数,以及部署 Lambda 函数到云端。
什么是 Serverless
Serverless 最初被认为是一种基于 Function-as-a-Service(FaaS)的云计算模型,随着时间的推移,逐渐演变为一种更为广义的概念:不再需要管理和维护服务器或虚拟机等底层基础设施,而是专注于开发业务逻辑和功能,以事件驱动、自动缩放、微服务化的方式,实现真正的无服务器架构。
Serverless 架构的核心是事件-响应模式(Event-driven) ,它基于事件的产生调用对应的函数(Function) ,分布式的运行在云端,能够根据实际负载自动伸缩,从而具备高可用、弹性伸缩、低成本的优势,完成云服务中最后的一公里。
在 Serverless 架构中,AWS Lambda 是最具代表性的一个服务,但除了 AWS Lambda 之外,还有 Google Cloud Functions、Azure Functions、Alibaba Cloud Function Compute 等。Serverless 架构不仅仅限于 Amazon Web Services(AWS)。
Serverless 组成部分
在 Serverless 架构中,有以下几个核心部分:
- Functions:函数和事件处理逻辑
- Triggers:触发函数的事件来源
- Services:函数的容器和配置
- APIs:定义 API 的 HTTP 端点
- Auth:定义访问 API 的权限
- Add-ons:扩展实现其它功能
它们的关系如下图所示:
在使用 Serverless 进行开发时,不用再考虑底层基础设施(例如云服务器),而是专注于编写 Lambda 函数,配置函数的触发器、运行环境、内存大小等,服务器的运营和维护由云服务提供商来处理。
Serverless CLI
Serverless CLI 是 Serverless Framework 的命令行工具,可以让开发者本地开发和调试 Lambda 函数,并将 Lambda 函数部署到云端。
安装 Serverless CLI
- 安装 Node.js
- 在终端输入以下命令安装 Serverless CLI:
npm install -g serverless
- 安装完毕后,可以通过以下命令检验 CLI 是否安装成功:
sls -v
创建 Serverless 项目
- 在命令行终端中输入以下命令:
serverless create --template aws-nodejs --path lambda-demo
这将使用 'aws-nodejs' 模板创建一个新的 Serverless 项目,并将其保存到名称为 'lambda-demo' 的目录中。
- 进入项目目录:
cd lambda-demo
- 使用以下命令部署 Lambda 函数到云端:
serverless deploy
本地开发和测试
- 在项目目录中打开
handler.js
文件,编辑该文件以创建 Lambda 函数。
module.exports.hello = async (event) => { const response = { statusCode: 200, body: JSON.stringify('Hello, World!'), }; return response; };
- 使用以下命令在本地启动 Lambda 函数:
serverless invoke local -f hello
- 该命令调用本地函数并返回输出。输出应如下所示:
{ "statusCode": 200, "body": "\"Hello, World!\"" }
部署 Lambda 函数到云端
使用以下命令部署 Lambda 函数到云端:
serverless deploy
将在 AWS Lambda 上创建一个新的函数,并将其代码部署到 Lambda 函数。如果 Lambda 函数已经创建,可以使用以下命令进行更新:
serverless deploy
示例代码
下面是一个使用 Serverless 构建的 Lambda 函数示例代码:
module.exports.hello = async (event) => { const response = { statusCode: 200, body: JSON.stringify('Hello, World!'), }; return response; };
在本示例中,hello
Lambda 函数将返回一个 HTTP 200 响应和 "Hello, World!"。这是一个非常基础的 Lambda 函数,但实际项目中,可能会涉及查询数据库、处理文件上传和下载、发送邮件等功能,完全取决于业务需求。
总结
本文介绍了 Serverless 技术的组成部分、如何使用 Serverless CLI 进行本地开发和测试 Lambda 函数,以及如何部署 Lambda 函数到云端。开发者可以通过 Serverless 构建高可用、弹性伸缩、低成本的云应用系统。
本文仅作为入门指南,更深入的 Serverless 技术介绍将在后续的文章中更新。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6454a62c968c7c53b0875f07