如何在amazonlinux:2023 Docker镜像中安装NodeJS适配AWS Lambda
在Amazon Linux 2023中安装Node.js并部署NodeJS+Express+Sqlite3到AWS Lambda的解决方案
解决Amazon Linux 2023中Node.js安装报错的方法
方法1:手动下载二进制包安装
直接从Node.js官方获取预编译的二进制压缩包,绕过系统包管理器的EL版本检测:
# 以x64架构的Node.js 20.10.0为例,如需其他版本/架构,替换对应URL curl -O https://nodejs.org/dist/v20.10.0/node-v20.10.0-linux-x64.tar.xz tar -xJf node-v20.10.0-linux-x64.tar.xz mv node-v20.10.0-linux-x64 /usr/local/node # 将Node.js添加到系统环境变量 echo 'export PATH=$PATH:/usr/local/node/bin' >> ~/.bashrc source ~/.bashrc # 验证安装 node -v npm -v
安装完成后,直接执行npm install sqlite3即可完成依赖安装。
方法2:使用nvm安装任意Node.js版本
nvm(Node Version Manager)不受系统包管理器限制,可灵活安装、切换Node.js版本:
# 安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 重载shell配置,使nvm生效 source ~/.bashrc # 安装指定版本的Node.js(示例为v20) nvm install 20 # 设置为默认版本 nvm alias default 20
之后正常执行npm install sqlite3即可。
更高效的Lambda部署方案(绕开自定义镜像的麻烦)
方案1:直接使用Lambda官方Node.js运行时
Lambda官方Node.js 18.x/20.x运行时基于Amazon Linux 2,无需自定义镜像,只需安装兼容该环境的sqlite3版本:
# 针对x64架构的Lambda运行时安装sqlite3 npm install --platform=linux --arch=x64 sqlite3 # 如果是arm64架构,替换为: # npm install --platform=linux --arch=arm64 sqlite3
将整个项目打包为zip文件,上传至Lambda即可运行。
方案2:用Lambda层封装sqlite3依赖
把sqlite3编译为Lambda层,可在多个函数中复用:
- 在Amazon Linux 2环境中(与Lambda官方运行时一致),安装对应版本的Node.js并执行
npm install sqlite3 - 将
node_modules/sqlite3目录打包为zip文件 - 上传该zip作为Lambda层,在目标Lambda函数中关联此层,代码中即可正常引用sqlite3
注意事项
- 若使用容器镜像部署,需确保镜像符合Lambda容器规范,正确设置
CMD或ENTRYPOINT指向你的Express启动脚本 - Lambda的本地存储是临时的,若需持久化sqlite数据,需挂载EFS或改用RDS等持久化存储服务
内容的提问来源于stack exchange,提问作者Dycey
相关产品推荐
相关产品推荐

