Lambda现可支持Node.js AWS 18运行时 (lambda函数python)

Lambda现可支持Node.js AWS 18运行时 (lambda函数python)

近期,亚马逊云科技宣布Node.js版本18支持其函数即服务(FaaS),并处于活跃LTS状态(可供一般使用)。

开发者目前可使用 Node.js 18 中的新语言功能编写 AWS Lambda 函数,比如类字段和私有类方法的性能优化、JSON 导入断言,以及包括 Fetch API、Test Runner模块、Web Streams API在内的实验性功能。

全局 Fetch API 在 Node.js 18 中默认可用,这一实验性功能中的 fetch 函数取代了 fetch polyfills 及其他三方 HTTP:

// index.mjs export const handler = async(event) => {const res = await fetch('https://nodejs.org/api/documentation.json');if (res.ok) {const>console.log(data);const response = {statusCode: 200,body: JSON.stringify('Hello from Lambda!'),return response;
复制代码

所有实验性功能都可通过 NODE_OPTIONS 环境变量启用或禁用。

AWS Lambda 支持目前 Node.js 的长期支持版本(LTS),意味着使用新版本的开发者在创建或更新函数时需要指定 nodejs 18.x 的运行时参数值,或者使用有运行时管理的基础镜像。

除此之外,运行在基于Arm AWS Graviton2或基于 x86 的处理器的函数均支持 Node.js 18 的运行时。

AWS Lambda 所支持的上一版本Node.js 16自 2022 年十月中旬起便一直处于维护 LTS 状态,并将在一年后迎来生命周期的终结。

来源:的 Node.js 运行时在 Node.js 16 及之前版本中,使用的都是 JavaScript 版本 2 的 AWS SDK,目前后者已随着对 Node.js 18 的升级更新至 JavaScript 版本 3 的 AWS SDK。因此,公司推荐已升级至 Node.js 18 的开发者将函数代码同步更新至使用 SDK v3,或者也可以通过部署 SDK v2 及其功能代码,以在不更新现有代码的情况下使用 Node.js 18 的运行时。

AppDev 的云计算顾问 Suraj Tripathi 在一篇 AWS 计算的博文中解释道:

此外,bootstrapped 募捐会的 CTO,Steve Sanders发推表示:

开发者在使用 v3 的 SDK 时,可以只导入需要的模块,如 ListBucketsCommand 或是 S3Client 这种服务客户端:

import { S3Client, ListBucketsCommand } from "@aws-sdk/client-s3";
复制代码

Node.js 运行时中零一变动是,通过 NODE_PATH 环境变量增加了对 ES 模块解析的支持。Lambda 的运行时会在加载 ES 模块时,搜索所有 NODE_PATH 目录下的文件夹,让 AWS SDK 作为 ES 模块,或从 Lambda 层加载 ES 模块更加方便。

社区和开发者们纷纷欢迎 AWS Lambda 支持 Node.js 18 的运行时。Allianz 贸易公司的首席软件工程师Jean Burellier发推表示:

同样,红迪评论串中也有人写道:

不过也有声音希望 Lambda 能支持较新版本的 Python。AWS 英雄Efi Merdler-Kravitz发推表示:

最后,AWS Lambda文档中的 Node.js 的编程模型提供了更多关于如何在 Node.js 18 中编写函数的细节。此外,开发者还可以在审查代码兼容性问题后,通过修改运行时配置至 nodejs16.x,将其现有的 Node.js 函数迁移到新的运行时。

原文链接:

AWS Lambda Now Has Support for Node.js 18 Runtime

相关阅读:

2022 re:Invent InfoQ 特别报道

AWS数据库迁移服务:将Oracle数据库迁移到MySQL

声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。