写点什么

AWS Lambda 现可支持 Node.js 18 运行时

  • 2022-12-25
    北京
  • 本文字数:1528 字

    阅读完需:约 5 分钟

AWS Lambda现可支持Node.js 18运行时

近期,亚马逊云科技宣布Node.js版本18支持其函数即服务(FaaS)AWS Lambda,并处于活跃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 data = await res.json(); 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 状态,并将在一年后迎来生命周期的终结。



来源:https://github.com/nodejs/release#release-schedule


Lambda 的 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 计算的博文中解释道:


与第二版相比,第三版的 SDK 为 JavaScript 带来了不少优势。更重要的是,它是模块化的,也就是说代码只需加载需要的模块。如果你选择将 SDK 与函数代码一同部署,而非是使用 Lambda 运行时的内置版本,那么模块化还将缩减你的函数大小。


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


AWS Lambda 先已支持 Node 18!

其中包括 AWS JavaScript SDK 的 v3 版本,如果你有用到它的话那这可是个大好消息,部署中少了一样需要捆绑的东西。


开发者在使用 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发推表示:


恭喜 @AWS lambda 团队推出 #NodeJS 18,比其他版本都要快。我还以为得再等上几个月。


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


点赞!

推出速度比 Node 16 要快!


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


@jbesw 什么时候才能看到对 Python 11 的支持?

Node 似乎抢了所有风头。


最后,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

2022-12-25 08:005054

评论

发布
暂无评论
发现更多内容

再见 Typora!这个开源的 Markdown 编辑器爱了!

JackTian

程序员 写作 Typora 编辑器 markdown编辑器

.NET6新东西---TryGetNonEnumeratedCount

喵叔

28天写作 12月日更

写博客的感想

为自己带盐

28天写作 12月日更

全链路压测系列(二):方案调研和项目立项

老张

性能测试 全链路压测

学生管理系统详细架构设计

swallowluo

架构实战营 「架构实战营」

代码实验01:main 方法可以继承吗?

Seven的代码实验室

阿里二面 main方法

学习方法

Tiger

28天写作

全链路压测系列(一):认识全链路压测

老张

性能测试 全链路压测

全链路压测系列(三):技术改造和测试验证

老张

性能测试 全链路压测

Reactor模式和Java NIO

Java·课代表

Java reactor 设计模式 网络编程 nio

设计千万级学生管理系统的考试试卷存储方案

ren

#架构实战营

架构训练营 -- 模块四

LJK

#架构训练营

Linux之whereis命令

入门小站

Linux

区块链在电动车产业中的角色

CECBC

发射、加速与着陆:一群科学家的奥林帕斯探索之旅

脑极体

Springboot国际化消息和源码解读

DoneSpeak

Java spring springboot

HarmonyOS(鸿蒙)——滑动事件

李子捌

28天写作 21天挑战 12月日更

Trino应用Iceberg Catalog写入数据原理分析

漫长的白日梦

数据湖 iceberg trino

DataPipeline正式加入中国信通院数据库应用创新实验室!

DataPipeline数见科技

数据库 中间件 数据融合 数据管理 信通院

微服务划分的思考

无心水

微服务 微服务架构 SpringCloud 注册中心 微服务划分

关于分布式系统共识的思考

yuexin_tech

分布式

在线JSON转Go Struct工具

入门小站

工具

给弟弟的信第24封|盲目的努力没有用

大菠萝

28天写作

什么是 DID 身份,为什么需要 DID

Rayjun

区块链 did

56 K8S之Kubernetes监控

穿过生命散发芬芳

k8s 28天写作 12月日更

语音信号的时域分析

轻口味

28天写作 12月日更

Golang中的runtime包

liuzhen007

28天写作 12月日更

Tinder系统架构

俞凡

架构 大厂实践 Tinder

[架构实战营]模块4作业

Vincent

「架构实战营」

MySQL的死锁系列- 锁的类型以及加锁原理

程序员历小冰

MySQL 死锁 28天写作 12月日更

重载(overload) 和重写(override) 的区别?重载的方法能否根据返回类型进行区分?

海拥(haiyong.site)

28天写作 12月日更

AWS Lambda现可支持Node.js 18运行时_语言 & 开发_Steef-Jan Wiggers_InfoQ精选文章