AWS Lambda函数无法访问图层

时间:2019-04-17 08:03:41

标签: amazon-web-services aws-lambda

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

但是问题尚未解决。

2 个答案:

答案 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