Лямбда-функция AWS не может получить доступ к node_modules на уровне - PullRequest
0 голосов
/ 17 апреля 2019

Я создал лямбда-функцию, которая опирается на некоторые зависимости в папке node_modules.

Я изначально создал лямбду с папкой node_modules внутри, и она отлично работала при тестировании.

Затем я создал слой, загрузил в него папку node_modules и установил для среды выполнения Node.js 8.10.

Затем я добавил слой к лямбде, создал политику со следующим JSON и добавил политику к роли, связанной с лямбда:

{
  "Version": "2012-10-17",
  "Statement": [
    {
        "Effect": "Allow",
        "Action": "lambda:GetLayerVersion",
        "Resource": "*"
    }
  ]
}

Когда я тестирую лямбду, то зависимости, которые я пытаюсь включить из папки node_modules, расположенной в связанном слое, не обнаруживаются.

Обновление:

Я также выполнил следующую команду:

aws лямбда-версия-разрешения-уровня-слоя -layer-name node_modules - версия-номера 2 \ --statement-id publish - Действие лямбда: GetLayerVersion --principal "*"

Но проблема не решена.

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Вы также можете установить переменную среды NODE_PATH для своей лямбды равной

NODE_PATH: './:/opt/node_modules'

Таким образом, вам не нужно иметь opt/node_modules в вашем коде при импорте чего-либо.

0 голосов
/ 17 апреля 2019

Слой работал после того, как мне потребовались зависимости с путем "/ opt / node_modules" следующим образом:

const mongoose = require("/opt/node_modules/mongoose");
const mongo = require("/opt/node_modules/mongodb");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...