AWS 无服务器速成课程 - 在 Lambda 上运行 Node.js 11
标题很精彩,不是吗?听说 AWS 即将为AWS Lambda添加自定义运行时和层级支持,我兴奋极了。这意味着您现在可以构建自己的自定义构件,从而能够在函数之间共享和管理通用代码。
我不会说我听到广播的时候晕倒了。但我确实晕倒了。别告诉任何人。
我们会做什么?
本文将向您展示如何将自定义 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
运行此命令后,您将进入一个node11
目录,旁边有一个漂亮的样板,可以开始构建您的函数。下一步是打开serverless.yml
并添加我们的层。
2. 将 Node11 层添加到serverless.yml
有很多预建层可供选择。幸运的是,无服务器社区非常棒!我们将继续获取自定义 Node.js 运行时。
你可以选择其中一种,但我选择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
只需添加层 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!` })
}
}
这段代码相当简单,但它证明了一个观点:确保我们正在运行Node.js v11.4.0
。
部署项目
无服务器框架让部署变得快速而轻松。您只需运行一个命令即可。
$ sls deploy
它将创建一个 CloudFormation 模板,配置资源并部署代码。所有操作只需一个命令即可完成。
部署进展顺利。使用 curl 命令检查 URL,确保其正常运行。
$ curl https://<id>.execute-api.us-east-1.amazonaws.com/dev/
你应该会看到{"message":"Hi from Node.js v11.4.0 on Lambda!"}
回显。效果很好!
总结
随着 AWS Lambda 的最新改进、新支持的语言、新的运行时和层,它已不再仅仅是主虚拟机和容器服务的支持服务。无服务器架构正在成为一股不容小觑的力量。我迫不及待地想看看它将带我们走向何方!
如果您在学习本教程的过程中遇到困难,可以参考这个 repo。如果您想让更多人在 GitHub 上看到它,请点个星。如果您想阅读我之前的一些无服务器思考,请访问我的个人资料或订阅我的无服务器新闻通讯!
如果您需要无服务器分析框架,请查看Cube.js。它是开源的,位于 GitHub 上。或者,如果您想了解有关无服务器架构的更多信息,请随时阅读Statsbot 博客上更多与无服务器相关的文章。
- 构建无服务器 Stripe Analytics 仪表板
- 使用 React.js、Next.js 和 AWS Lambda 进行无服务器端渲染的速成课程
- AWS 无服务器速成课程 - 使用 Lambda 和 Aurora 无服务器构建 API
希望你们读起来和写起来一样开心。如果你们喜欢,请随时分享。别忘了给 Statsbot 博客点赞哦。
免责声明:Zeet将赞助下个月的这篇博文。前几天我试用了一下。它类似于无服务器架构,但可以运行整个后端。你可以自动托管和扩展应用程序。相当不错。
鏂囩珷鏉ユ簮锛�https://dev.to/adnanrahic/a-crash-course-on-serverless-with-aws---running-nodejs-11-on-lambda-ljf