【问题标题】:AWS Lambda function is unable to access node_modules in layerAWS Lambda 函数无法访问层中的 node_modules
【发布时间】:2019-04-17 08:03:40
【问题描述】:

我创建了一个 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 发布 --action lambda:GetLayerVersion --principal "*"

但是问题还没有解决。

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

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

    NODE_PATH: './:/opt/node_modules'
    

    这样您在导入某些内容时就不需要在代码中包含opt/node_modules

    【讨论】:

      【解决方案2】:

      在我需要使用“/opt/node_modules”路径的依赖项后,该层工作,如下所示:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-25
        • 1970-01-01
        • 2018-06-25
        • 2021-03-02
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多