发布于 2026-01-06 0 阅读
0

在线编写 Lambda 函数

在线编写 Lambda 函数

AWS CDK对我们Serverless Stack 的读者和我们来说都非常棒。但是,Lambda 的本地开发体验却不尽如人意。为了解决这个问题,我们在SST中创建了一个实时 Lambda 开发环境。SST 允许您在本地开发 Lambda 函数,同时连接到已部署的资源,从而简化了无服务器应用程序的构建过程。

在了解其工作原理之前,让我们先来看看无服务器架构的本地开发环境通常是什么样的。

背景

在本地编写 Lambda 函数可能很麻烦。您必须:

  1. 在本地模拟 Lambda 函数使用的所有服务。

    例如 API Gateway、SNS、SQS 等服务,很难做到这一点。如果您使用的工具模拟的是特定服务(例如 API Gateway),则无法测试由其他服务(例如 SNS)调用的 Lambda 函数。另一方面,像 LocalStack 这样试图模拟一整套服务的工具速度较慢,而且模拟的服务可能已经过时。

  2. 或者,您需要部署更改以进行测试。

    每次部署至少需要一分钟。而反复部署来测试更改会大大减慢反馈循环。

介绍sst start

为了解决这个问题,我们sst start无服务器堆栈工具包 (SST)添加了该命令。SST 是 AWS CDK 的一个扩展,可以更轻松地使用 CDK 构建无服务器应用程序。

这条命令会执行以下两项操作:

  1. 它会将带有 WebSocket API 的调试堆栈部署到与您的应用程序相同的 AWS 账户和区域。
  2. 它会部署您的应用程序,并将 Lambda 函数替换为存根 Lambda 函数。
  3. 启动本地 WebSocket 客户端以连接到调试堆栈。

调试堆栈包含一个无服务器 WebSocket API 和一个 DynamoDB 表。当调用存根 Lambda 函数时,它会向 WebSocket API 发送一条消息,WebSocket API 再将消息发送给与其连接的本地客户端。客户端随后执行本地版本的 Lambda 函数,并将结果发送回 WebSocket API。WebSocket API 再将结果返回给存根 Lambda 函数。最后,存根 Lambda 函数将结果返回给客户端。

一个例子

我们来看一个例子。

sst-start-architecture

在这个示例应用程序中,我们有:

  1. API 网关端点
  2. 社交网络话题
  3. 一个 Lambda 函数 (api.js),用于响应 API 并向 SNS 主题发送消息。
  4. 订阅 SNS 主题的 Lambda 函数 (sns.js)

因此,当向 API 端点发出请求时,会调用 api.js 的存根版本,并向调试堆栈发送消息。该消息随后被流式传输到客户端。客户端调用本地版本的 api.js,并将结果返回到调试堆栈。本地版本还会向 SNS 主题发送消息。同时,存根 api.js 会响应 API 请求并返回结果。现在,由于 sns.js 已订阅 SNS 主题,因此会调用其存根版本。该消息被发送到调试堆栈,调试堆栈随后将消息流式传输到客户端,以执行本地版本的 sns.js。本地版本的执行结果会流式传输回存根 sns.js,并由其返回结果。

您可以在这里尝试这个示例仓库

优势

这种方法有几个优点。

  • 您可以在本地编写 Lambda 函数。
  • 在与整个已部署的 AWS 基础设施交互时
  • 它支持所有 Lambda 触发器,因此无需模拟 API Gateway、SQS、SNS 等。
  • 它支持真正的 Lambda 环境变量
  • 还有 Lambda IAM 权限,因此如果 Lambda 由于缺少 IAM 权限而在 AWS 上失败,则在本地也会失败。
  • 而且速度很快!做出更改时无需部署任何内容!

有几点需要注意。

  • 调试堆栈完全是无服务器的
    • 所以不用的时候就不会收费。
    • 而且每次请求的费用非常低,完全在免费额度之内。
  • 所有数据都保存在您的本地计算机和您的 AWS 账户之间。
    • 未使用任何第三方服务。
    • 即将支持连接到 VPC 内的 AWS 资源

结论

SSTsst start中的命令创建一个实时 Lambda 开发环境。通过扩展 AWS CDK,它允许您在 CDK 中构建无服务器应用程序,同时拥有优质的本地开发环境。

正如我们一位早期用户所说,sst start这就是 Lambda 开发的未来。

如果您喜欢 SST 项目,请考虑给我们的代码仓库点赞——

GitHub 标志 sst / sst

SST v2

海表温度

Discord npm 构建状态


SST 让您轻松在 AWS 上构建现代化的全栈应用程序。观看100 秒 SST 速成视频了解更多信息。

$ npx create-sst@latest
Enter fullscreen mode Exit fullscreen mode

如需查看 v2 版本文档,请访问v2.sst.dev

选择你的前端

将 Next.js、Svelte、Remix、Astro、Solid 或任何静态网站部署到 AWS。

添加任何功能

SST 让您能够充分利用 AWS 的强大功能,轻松地为您的产品添加任何功能。

  • 文件上传— 允许您的用户将文件上传到 S3。
  • 身份验证— 通过任何身份验证提供商验证您的用户身份。
  • 事件— 在应用返回给用户后运行任务。
  • 数据库——使用无服务器 SQL 或 NoSQL 数据库来驱动您的应用程序。
  • 作业— 运行由无服务器函数支持的定时任务或长时间运行的任务。
  • API — 为您的应用程序添加专用的无服务器 REST、GraphQL 或 WebSocket API。

与你的团队协作

最后,你……




文章来源:https://dev.to/aws-builders/work-on-your-lambda-functions-live-51cp