我创建了一个lambda函数,该函数依赖于node_modules文件夹中的某些依赖项。
我最初创建的lambda里面有一个node_modules文件夹,并且在测试时可以正常工作。
然后我创建了一个图层,将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“ *”
但是问题尚未解决。
答案 0 :(得分:0)
在我需要使用“ / opt / node_modules”路径的依赖项后,该层正常工作:
const mongoose = require("/opt/node_modules/mongoose");
const mongo = require("/opt/node_modules/mongodb");
答案 1 :(得分:0)
您还可以将lambda设置为NODE_PATH环境变量
NODE_PATH: './:/opt/node_modules'
这样,您在导入内容时无需在代码中包含opt/node_modules
。