AWS-SDK в функции nodejs Lambda не удается найти модуль endpoint-cache

#amazon-web-services #aws-lambda #aws-sdk

#amazon-web-services #aws-lambda #aws-sdk

Вопрос:

Я провел рефакторинг некоторых наших функций AWS lambda, и с этой последней версией я получаю следующую ошибку:

 "Payload": "{"errorMessage":"Cannot find module '../vendor/endpoint-cache'","errorType":"Error","stackTrace":["Function.Module._load (module.js:474:25)","Module.require (module.js:596:17)","require (internal/module.js:11:18)","Object.<anonymous> (/var/task/node_modules/aws-sdk/lib/core.js:76:18)","Module._compile (module.js:652:30)","Object.Module._extensions..js (module.js:663:10)","Module.load (module.js:565:32)","tryModuleLoad (module.js:505:12)","Function.Module._load (module.js:497:3)"]}"
  

Этот модуль находится в папке поставщика модуля узла aws-sdk.
Я проверил артефакты развертывания, чтобы убедиться, что папка существует, и я попытался перейти на более старую версию aws-sdk, которая использовалась ранее.

Зависимости в package.json:

 "dependencies": {
    "aws-sdk": "^2.59.0",
    "moment": "^2.22.2",
    "underscore": "^1.8.3"
  },
  

Сервер сборки запускает npm-install, а затем

 $path = Get-Location
$thisProject = "$($path)pathToProject*"

Compress-Archive -Path $thisProject -DestinationPath thisProject.zip
  

Некоторое время зависал на этом, поэтому любая помощь приветствуется.

Комментарии:

1. Временное исправление: используйте версию более раннюю, чем v2.352.0. Я в той же лодке. Я сузил проблему до aws-sdk ссылки на новую функцию, endpoint-cache представленную в выпуске github.com/aws/aws-sdk-js/releases/tag/v2.352.0 найдено при изменении в этой строке github.com/aws/aws-sdk-js/blob /… . Похоже, что узел AWS lambda 8.10 не может его найти.

Ответ №1:

Я столкнулся с этой проблемой несколько месяцев назад. Оказывается, мне нужно было убедиться, что файл блокировки пакета включен в проект и установлена версия aws-sdk

Комментарии:

1. Также необходимо убедиться, что его обновление с правильной версией 🙂

Ответ №2:

Вчера у меня была эта проблема, я решил ее, удалив aws-sdk в package.json amp; удаление переустановка моей node_modules папки. Надеюсь, это решит вашу проблему.

Я думаю, что aws-sdk уже включен по умолчанию.

Ответ №3:

Я действительно столкнулся с той же проблемой. И в моем случае причина заключалась в Compress-Archive функции, запущенной в Windows. Если я добавлю lambda с Compress-Archive , то вызов Lambda завершится ошибкой, о которой шла речь выше. Но если я распакую .zip и упакую с помощью обычной Windows «отправить в сжатый каталог» — все работает нормально. Я обнаружил подобную проблему в PowerShell github space, что заставило меня подумать, что это обычная проблема.

Проблема была исправлена в одном из последних выпусков PowerShell Core (не уверен в классическом PowerShell). Я не уверен в точной версии, которая устраняет эту проблему, но она была в версии 6.1, а в версии6.2.2 она исчезла.

Комментарии:

1. Ваш герой…. Я использовал несколько версий powershell. Убедившись, что я использую ядро 7.0, проблема устранена. Спасибо.

Ответ №4:

Рекомендуемый подход к указанию SDK, который вы хотите использовать в лямбда-функции, заключается в создании лямбда-слоя с желаемой версией. Смотрите здесь:https://aws.amazon.com/blogs/compute/working-with-aws-lambda-and-lambda-layers-in-aws-sam /