我正在创建一个用于访问 RDS 数据库的 AWS Lambda 函数。我在 aws 控制台中内联编写了代码。我没有压缩和上传任何东西。我点击部署并测试。我的代码在第一行失败:
import mysql from 'mysql2/promise';
我收到的错误消息是 “errorMessage”:“找不到从/var/task/index.mjs导入的包‘mysql2’”,
本地,我安装了mysql2。
如何确保 mysql2 可用于部署 lambda 函数?
如何确保 mysql2 可用于部署 lambda 函数?
您需要将
node_modules
放入包含 lambda 代码的 zip 文件中,或者放入 layer 中。如果您有很多 lambda 共享相同的依赖项,则后者很有用。
要将其放入 zip 文件中,只需将
node_modules
文件夹与处理程序代码一起打包即可。 node_modules
必须位于 zip 文件中虚拟目录的根目录。
要将其放入图层中,请将其放在
nodejs/node_modules
下,调整图层的 zip 文件大小。在您的 Lambda 容器内,它将安装在 /opt/nodejs/node_modules
下。 Lambda 运行时已设置为查找此路径下的依赖项。
如果您的任何模块使用本机绑定,您还应该注意二进制兼容性(确保本机绑定针对正确的架构进行编译,并与 Lambda 运行时提供的库链接)。但是,mysql2 不使用本机绑定。