AWS Lambda函数无法访问层中的node_modules

问题描述 投票:0回答:2

我创建了一个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“*”

但问题尚未解决。

amazon-web-services aws-lambda
2个回答
0
投票

在我需要与“/ opt / node_modules”路径的依赖关系后,该层工作如下:

const mongoose = require("/opt/node_modules/mongoose");
const mongo = require("/opt/node_modules/mongodb");

0
投票

您还可以为lambda设置NODE_PATH环境变量

NODE_PATH: './:/opt/node_modules'

这样,在导入内容时,您不需要在代码中使用opt/node_modules

© www.soinside.com 2019 - 2024. All rights reserved.