Сам локальный вызов лямбда с ошибкой локального уровня "невозможно импортировать пакет" - PullRequest
0 голосов
/ 08 октября 2019

При использовании «Sam local invoke» для локального вызова лямбды, которая также опирается на локально созданный слой, функция не может найти модуль, который является частью слоя.

Я получаю ошибкуОшибка «невозможно импортировать пакет» при локальном вызове моей лямбды с помощью «sam local invoke FUNCTIONNAME». Эти пакеты уже присутствуют в слое (zip-папка). Является ли это каким-либо способом локально протестировать эти lamdas, имеющие зависимость от python, заархивированную в слой.

START RequestId: 083247f2-3011-428c-a529-50eba6d668f2 Версия: $ LATEST Невозможно импортировать модуль 'getnext': нет модуляnamed 'apiconfig' END RequestId: 083247f2-3011-428c-a529-50eba6d668f2 REPORT RequestId: 083247f2-3011-428c-a529-50eba6d668f2 Длительность: 12 мс Продолжительность счета: 100 мс Размер памяти: 128 МБ Макс. объем используемой памяти: 19 МБ

модуль 'apiconfig' уже присутствует в layer.zip

Ожидается, что все модули слоя должны быть загружены в какое-то временное местоположение при выполнении 'локального вызова sam', чтобы он мог принимать все пакеты изапустить lamda, и, следовательно, я попытался использовать флаг DIRECTORY --layer-cache-basedir, но все еще получал ту же ошибку, хотя файл docker генерируется по пути DIRECTORY. Кроме того, несмотря на то, что я не предоставил флаг --skip-pull-image, он все еще показывает запрошенный пропуск изображений. Добавлен флаг --force-image-build тоже ошибка

1 Ответ

0 голосов
/ 08 октября 2019
  • Для поддержки лямбда-слоев SAM CLI локально реплицирует процесс уровня AWS, загружая все связанные слои и кэшируя их на компьютере разработчика. Это происходит при первом запуске sam local invoke или при первом запуске ваших функций Lambda с использованием sam local start-lambda или sam local start-api
  • Два конкретных флага в SAM CLI полезны, когда вы работаетес локальными лямбда-слоями –layer-cache-basedir и –force-image-build aws docs
...