AWS 无服务器速成课程 - 在 Lambda 上运行 Node.js 11

2025-06-08

AWS 无服务器速成课程 - 在 Lambda 上运行 Node.js 11

标题很精彩,不是吗?听说 AWS 即将AWS Lambda添加自定义运行时和层级支持,我兴奋极了。这意味着您现在可以构建自己的自定义构件,从而能够在函数之间共享和管理通用代码。

令人震惊的 gif

我不会说我听到广播的时候晕倒了。但我确实晕倒了。别告诉任何人。

我们会做什么?

本文将向您展示如何将自定义 Node.js 11 运行时连接到 AWS Lambda。我们将创建一个包含示例函数的简单无服务器项目,并添加一个层以运行 Node.js 11 运行时。

工作原理

要使用自定义运行时,您必须在部署函数时指定提供一个运行时。调用该函数时,AWS Lambda 将引导您的运行时代码并通过运行时 API 与其通信以执行函数代码。

关于自定义运行时,就讲到这里。什么是AWS Lambda 层?它们是一种新型的构件,可以包含任意代码和数据。它可以同时被多个函数引用。太棒了!你的函数通常共享一些通用的依赖项,例如 SDK、预构建模块、库和框架。更棒的是,现在你还可以共享运行时了!

通过使用 AWS Lambda Layers,您可以管理跨多个函数使用的组件。从而实现更好的代码重用和更佳的 DRY 代码。

使用起来很简单,只需将通用代码打包成 zip 文件,然后将其作为层上传到 AWS Lambda 即可。您也可以将其作为 CloudFormation 模板上传,然后配置您的函数以使用它。层内容将可供您的函数代码使用。不过,这是另一个教程的主题。

让我们开始使用自定义 Node.js v11 运行时吧!

配置项目

我假设你已经对无服务器框架有了基本的了解。我还希望你已经设置了一个 AWS 账户。如果没有,请查看此处

注意:将无服务器框架更新至 v1.34.0 或更高版本以获得层支持

1.创建服务

与往常一样,我们需要一个新的服务来保存我们所有的代码。

$ sls create -t aws-nodejs -p node11 && cd node11
Enter fullscreen mode Exit fullscreen mode

运行此命令后,您将进入一个node11目录,旁边有一个漂亮的样板,可以开始构建您的函数。下一步是打开serverless.yml并添加我们的层。

2. 将 Node11 层添加到serverless.yml

有很多预建层可供选择。幸运的是,无服务器社区非常棒!我们将继续获取自定义 Node.js 运行时

版本 arns

你可以选择其中一种,但我选择v11。现在打开serverless.yml,删除所有内容,然后粘贴此内容。

service: node11

provider:
  name: aws
  runtime: provided # set to provided

functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: /
          method: get
    layers: # add layer
      - arn:aws:lambda:us-east-1:553035198032:layer:nodejs11:3
Enter fullscreen mode Exit fullscreen mode

只需添加层 ARN,函数就会获取运行时。别忘了runtime: provided也添加字段。

3. 添加代码handler.js

从这里开始,你会感觉很轻松自在。你终于可以在 AWS Lambda 上编写前沿的 Node.js 代码了。我们期待这一刻已经很久了。

打开handler.js并粘贴下面的代码片段。

exports.hello = async (event, context) => {
  console.log(`Hi from Node.js ${process.version} on Lambda!`)
  return {
    statusCode: 200,
    body: JSON.stringify({ message: `Hi from Node.js ${process.version} on Lambda!` })
  }
}
Enter fullscreen mode Exit fullscreen mode

这段代码相当简单,但它证明了一个观点:确保我们正在运行Node.js v11.4.0

部署项目

无服务器框架让部署变得快速而轻松。您只需运行一个命令即可。

$ sls deploy
Enter fullscreen mode Exit fullscreen mode

它将创建一个 CloudFormation 模板,配置资源并部署代码。所有操作只需一个命令即可完成。

sls部署

部署进展顺利。使用 curl 命令检查 URL,确保其正常运行。

$ curl https://<id>.execute-api.us-east-1.amazonaws.com/dev/
Enter fullscreen mode Exit fullscreen mode

你应该会看到{"message":"Hi from Node.js v11.4.0 on Lambda!"}回显。效果很好!

总结

随着 AWS Lambda 的最新改进、新支持的语言、新的运行时和层,它已不再仅仅是虚拟机和容器服务的支持服务。无服务器架构正在成为一股不容小觑的力量。我迫不及待地想看看它将带我们走向何方!

如果您在学习本教程的过程中遇到困难,可以参考这个 repo。如果您想让更多人在 GitHub 上看到它,请点个星。如果您想阅读我之前的一些无服务器思考,请访问我的个人资料订阅我的无服务器新闻通讯!

如果您需要无服务器分析框架,请查看Cube.js。它是开源的,位于 GitHub 上。或者,如果您想了解有关无服务器架构的更多信息,请随时阅读Statsbot 博客上更多与无服务器相关的文章。

希望你们读起来和写起来一样开心。如果你们喜欢,请随时分享。别忘了给 Statsbot 博客点赞哦。


本月的赞助商是 Zeet。

免责声明:Zeet将赞助下个月的这篇博文。前几天我试用了一下。它类似于无服务器架构,但可以运行整个后端。你可以自动托管和扩展应用程序。相当不错。


鏂囩珷鏉ユ簮锛�https://dev.to/adnanrahic/a-crash-course-on-serverless-with-aws---running-nodejs-11-on-lambda-ljf
PREV
AWS 无服务器速成课程 - 使用 SNS 消息触发 Lambda 使用 SNS 触发 AWS Lambda 并进行 DLQ 错误处理
NEXT
Bootstrap 有哪些替代方案?为什么我不喜欢 Bootstrap?我试过 Bootstrap 吗?那我该用什么?“如何赢得朋友并影响他人。”