探索AWS Lambda上的Node.js 10.x和12.x自定义运行时
在构建基于云的无服务器架构时,AWS Lambda提供了强大的计算服务。为了更灵活地使用Node.js,有一个开源项目专门设计了一个自定义运行时,让你可以在Lambda上执行Node.js 10.x或12.x版本的代码。
简单上手
首先,创建一个名为index.js
的文件,输入以下代码:
exports.handler = async(event, context) => {
console.log(`Hi from Node.js ${process.version} on Lambda!`)
console.log(`There is ${context.getRemainingTimeInMillis()}ms remaining`)
return event
}
然后,将这个文件打包成ZIP文件(如需包括node_modules
,也一同添加):
zip -yr lambda.zip index.js # 如果有node_modules,也要包含
在AWS Lambda控制台创建一个新的函数,选择自定义运行时。上传你的lambda.zip
作为“函数代码”,设置handler为“index.handler”。
接下来,点击“Layers”并添加一层,选择“提供层版本ARN”,输入如下ARN:
arn:aws:lambda:us-east-1:553035198032:layer:nodejs12:41
完成这些步骤后保存并测试你的Lambda函数,你应该能在日志中看到预期的结果。
版本信息与ARN
当前支持的Node.js版本及其对应的ARN可以在项目文档中找到。请注意,ARN可能随版本更新而变化,因此建议直接从项目源码仓库获取最新信息。
项目特点
- 高度定制化:这个自定义运行时不包含任何预装库,这意味着你需要自己管理所有依赖,包括
aws-sdk
。 - 干净的日志:未对
console.log
等进行额外的日志记录装饰,保持了原始数据的整洁,更适合进行日志分析。 - 启动性能:虽然在冷启动时会有约240ms(对于Node.js 10.x)和260ms(对于Node.js 12.x)的延迟,但这是由于Node.js自身的启动时间问题,开发者正在努力优化。
应用场景
此项目适用于需要利用最新Node.js特性,并希望在AWS Lambda中拥有更多灵活性的开发人员。无论是构建实时数据分析应用,还是处理复杂的HTTP请求,或是实现微服务架构,这都是一个值得尝试的选择。
如果你正寻找一种方式来充分利用AWS Lambda,同时享受Node.js的便利性,那么这个项目无疑是一个理想的选择。立即动手尝试,开启你的无服务器之旅吧!