Serverless 是一种全新的计算模式,它以事件驱动的方式响应请求,无需自己购买、配置和维护服务器。Serverless 可以极大地简化开发和部署流程,提升生产力,同时还能帮助开发者节省时间和金钱。
Lambda 是 AWS 提供的 Serverless 计算服务,极其灵活和易用,支持多种语言,如 Node.js、Python、C#、Java 等,并且自带了丰富的 SDK,可以很方便地与其他 AWS 服务和第三方服务进行整合。
本篇文章将介绍 Serverless 计算和 Lambda 的基本原理,以及如何创建和部署一个简单的 Lambda 函数,并整合到 API Gateway 中。
Serverless 计算原理
Serverless 计算是一种按需计算的模式,开发者只需要编写代码,上传到 Serverless 平台,配置事件触发器和资源,然后在事件触发时自动执行相应的代码。Serverless 计算的核心是事件驱动,每个事件都可触发一段逻辑,从而实现自动化的计算、处理和响应。
Serverless 计算的优点:
- 开发者只需关注业务逻辑,无需考虑服务器、负载均衡和可扩展性等问题;
- 云厂商会自动托管和维护底层的基础设施,包括安全、备份、故障恢复等;
- 按照使用量付费,避免闲置资源和浪费资金。
Lambda 基本原理
Lambda 是 AWS 提供的 Serverless 计算服务,通过 Lambda,开发者可以只需使用少量的代码,上传到 AWS 的服务器上,然后在特定的事件触发时,AWS 自己会启动我们的 Lambda 函数进行处理。同时,AWS 处理完事件后会自动销毁容器,这样有助于我们避免额外的服务器成本。
Lambda 提供的特性:
- 自扩展。
- 能够编写使用多种编程语言的 Lambda 函数。
- 能够将 Lambda 函数与其他 AWS 服务集成,如 S3、DynamoDB 等。
如何创建和部署一个 Lambda 函数
创建 Lambda 函数
以下是一个使用 Node.js 编写的示例 Lambda 函数:
exports.handler = async (event, context) => { console.log('Event: ', JSON.stringify(event)); console.log('Context: ', JSON.stringify(context)); return { statusCode: 200, body: 'Hello Serverless!' }; };
该函数只暴露一个 handler,使用了 Node.js 的 async/await,打印了 event 和 context 并返回了一个字符串“Hello Serverless!”
部署 Lambda 函数
- 使用 AWS CLI 命令行工具创建 Lambda 函数
aws lambda create-function \ --function-name hello-serverless \ --runtime nodejs14.x \ --role arn:aws:iam::123456789012:role/lambda-role \ --handler index.handler \ --code S3Bucket=lambda-artifacts,S3Key=hello-serverless.zip
其中:
- function-name:指定函数名称。
- runtime:表示运行环境,Node.js 版本号 14.x。
- role:是针对 IAM 身份的 ARN 角色,服务程序使用 role 执行 AWS API 操作(例如,函数调用其他 AWS 服务)。
- handler:代码中暴露 handler 变量的模块和函数名称,即 “index.handler”。
- code:代码和依赖项的存储位置。
- 使用 AWS Lambda 控制台部署函数
- 首先,左侧导航栏中选择“函数”,单击“创建函数”按钮。
- 然后选择运行时环境,如 Node.js 12.x,创建一个“空白函数”。
- 在基本信息部分指定函数名称、运行时、权限角色和内存大小等。
- 在高级设置中指定 VPC 和网络设置等。
整合 Lambda 函数到 API Gateway
Lambda 函数通过 API Gateway 暴露出去,相当于一个可以被访问的服务。下面是如何把 Lambda 函数整合进 API Gateway 中,使其可以通过 URL 访问:
- 为 API Gateway 配置 Lambda 函数
只需转到 API Gateway 控制台,选择一个现有的 API Gateway,然后单击“整合 - Lambda 函数”部分的“创建资源和方法”。
- 设置 API 集成器
在集成设置窗口中指定集成类型和 Lambda 函数名称,这样就完成了 Lambda 函数和 API Gateway 的整合了。
结论
在本篇文章中,我们从如何使用 Serverless 计算,到如何使用 Lambda 创建和部署函数,再到整合 Lambda 函数到 API Gateway 中进行了详细的解释。
Serverless 计算不仅简化了整个开发和部署流程,而且还有助于提高生产效率,使得开发者能将更多的时间花在业务逻辑的设计上。Lambda 作为 AWS 提供的 Serverless 计算服务,支持多种语言和能够将 Lambda 函数与其他 AWS 服务集成,如 S3、DynamoDB 等,以便构建更加完整的解决方案。希望这篇文章能够有助于初学者了解和使用 Serverless 计算和 AWS Lambda。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67307b3deedcc8a97c920811