JavaScript 无服务器函数:AWS Lambda 完全指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Serverless 架构与 AWS Lambda 入门



现代 Web 开发正迅速向无服务器(serverless)计算方向发展。这种范式让开发者能够专注于编写业务逻辑,而无需操心基础设施管理。AWS Lambda 是实现 serverless 函数最流行的服务之一,并且它与 JavaScript (Node.js) 配合得天衣无缝。



在本文中,我们将详细解析什么是 AWS Lambda,如何创建并运行你的第一个基于 JavaScript 的 serverless 函数,探讨最佳实践以及真实代码示例。无论你是初学者还是希望掌握 serverless 开发的经验丰富的开发者,本文都将对你有所帮助。



什么是 AWS Lambda 以及它如何与 Node.js 协同工作



AWS Lambda 是一种计算服务,它能响应事件运行你的代码,并自动管理计算资源。你只需为消耗的执行时间(精确到 1 毫秒)和请求次数付费。



面向 JavaScript 开发者的 AWS Lambda 关键特性

  • 支持 Node.js: AWS Lambda 官方支持 Node.js 14、16、18 和 20。
  • 自动扩展: Lambda 会自动创建函数实例来处理每个传入的请求。
  • 触发器: 函数可以通过 HTTP(通过 API Gateway)、按计划(CloudWatch Events)、文件上传到 S3 等多种方式被调用。
  • 限制: 执行时间最长 15 分钟,内存范围从 128 MB 到 10,240 MB,部署包大小限制为 50 MB(压缩后)或 250 MB(解压后)。


使用 JavaScript 开发 Lambda 函数无需任何额外配置——只需编写一个处理器(handler)并将代码上传到 AWS 即可。



创建你的第一个基于 JavaScript 的 Serverless 函数



让我们编写一个简单的 serverless 函数,它接收包含用户名的 JSON,并返回一条问候语。这是一个经典的入门示例,非常适合开始了解 AWS Lambda。



步骤 1:处理器基本结构

每个基于 Node.js 的 Lambda 函数都由一个导出的处理器函数组成,该函数接收三个参数:event(事件)、context(执行上下文)和 callback(用于异步响应)。



// index.jsexports.handler = async (event, context) => {    // 函数逻辑    const name = event.name || 'Guest';    return {        statusCode: 200,        body: JSON.stringify({            message: `Hello, ${name}! This is your first serverless function.`        })    };};


步骤 2:处理不同类型的事件

在实际项目中,事件可能来自不同的源。下面是一个处理来自 API Gateway 请求的示例:



// handler.jsexports.handler = async (event) => {    try {        // 解析请求体(如果存在)        const body = event.body ? JSON.parse(event.body) : {};        const { userId, action } = body;

// 业务逻辑示例 const result = { userId: userId || 'unknown', action: action || 'default', timestamp: new Date().toISOString(), message: 'Action completed successfully' };

return { statusCode: 200, headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }, body: JSON.stringify(result) }; } catch (error) { return { statusCode: 500, body: JSON.stringify({ error: error.message }) }; }};


与外部服务和环境的交互



Serverless 函数很少在隔离状态下运行。它们通常需要与数据库、S3、Dyna

博客

书籍推荐