无服务器与AWS Lambda入门
现代云开发越来越倾向于采用serverless(无服务器)架构。尽管名称如此,服务器并没有消失——你只是不再需要考虑它们。AWS Lambda是亚马逊的一项服务,允许你在无需配置和管理服务器的情况下运行代码。你只需为实际执行时间和请求次数付费。
在本文中,我们将从基础到实际示例,全面讲解JavaScript (Node.js)上的AWS Lambda。你将学习如何创建、配置和部署函数,并了解最佳实践。
适用于Node.js的AWS Lambda基础
什么是Lambda函数?
Lambda函数是一个独立的代码块,用于响应事件(触发器)而执行。函数接收event(事件数据)和context(执行环境信息)作为输入,并返回结果。
最简单的Lambda函数结构
一个基本的Node.js函数如下所示:
exports.handler = async (event, context) => { const name = event.queryStringParameters?.name || '访客'; const response = { statusCode: 200, body: JSON.stringify({ message: `你好,${name}!` }), }; return response;};- exports.handler — 必需的入口点。
- event — 包含触发器传递的数据(例如来自API Gateway的HTTP请求)。
- context — 提供用于管理执行的方法(时间、日志记录器、标识符)。
- 函数必须是async或返回一个Promise。
触发器(调用源)
Lambda并非孤立存在。它可以被以下方式调用:
- API Gateway — HTTP请求(REST/WebSocket)。
- S3 — 文件上传/删除。
- DynamoDB Streams — 数据库变更。
- SQS/SNS — 消息队列。
- CloudWatch Events — 定时任务(cron)。
创建和部署Lambda函数
步骤1:环境配置
你需要:
- AWS账户。
- 已安装AWS CLI并配置好凭据。
- Node.js(版本18或20,AWS推荐)。
步骤2:通过控制台创建函数
这是新手最快的方法:
- 进入AWS Management Console → Lambda。
- 点击“创建函数” → “从头开始”。
- 指定名称,选择运行时Node.js 20.x。
- 点击“创建”。
在代码编辑器中粘贴上面的示例,然后点击“部署”。完成!
步骤3:使用AWS CLI部署
为了实现自动化部署,使用以下命令:
zip -r function.zip index.js node_modulesaws lambda update-function-code \ --function-name my-first-lambda \ --zip-file fileb://function.zip高级场景与最佳实践
使用环境变量
切勿在代码中存储机密信息。使用process.env:
const dbPassword = process.env.DB_PASSWORD;const tableName = process.env.TABLE_NAME;变量在函数设置中配置(Configuration → Environment variables)。
错误处理与日志记录
使用内置日志记录器console.log——它会自动将日志发送到CloudWatch:
exports.handler = async (event) => { console.log('收到事件:', JSON.stringify(event, null, 2)); try { // 你的代码 } catch (error) { console.error('错误:', error.message); throw e