我创建了一个lambda函数,它依赖于node_modules文件夹中的一些依赖项。
我最初在其中创建了一个带有node_modules文件夹的lambda,它在测试时工作正常。
然后我创建了一个图层,将node_modules文件夹上传到它,并将运行时设置为Node.js 8.10。
然后我将该层添加到lambda,使用以下JSON创建策略,并将策略添加到与lambda关联的角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "lambda:GetLayerVersion",
"Resource": "*"
}
]
}
当我测试Lambda时,找不到我试图包含在关联层中的node_modules文件夹中的依赖项。
更新:
我还运行以下命令:
aws lambda add-layer-version-permission --layer-name node_modules --version-number 2 \ --statement-id publish --action lambda:GetLayerVersion --principal“*”
但问题尚未解决。
在我需要与“/ opt / node_modules”路径的依赖关系后,该层工作如下:
const mongoose = require("/opt/node_modules/mongoose");
const mongo = require("/opt/node_modules/mongodb");
您还可以为lambda设置NODE_PATH环境变量
NODE_PATH: './:/opt/node_modules'
这样,在导入内容时,您不需要在代码中使用opt/node_modules
。