Python AWS Лямбда-модуль не найден - PullRequest
1 голос
/ 04 марта 2020

У меня есть AWS Lambda, реализованная в Python 3.7 и развернутая в пакете, расположенном ниже:

universe-UIFunctionCelestial-XXXX
|--universe-0-0-1-SNAPSHOT
| |--src
| | |--lambdas
| | | |--__init__.py
| | | |--celestial_persist_function.py
| | |--__init__.py

На следующем изображении показан этот пакет, развернутый в консоли AWS: code portion of Lambda console

Лямбда доступна через API-шлюз. Его метод GET успешно вызывает Lambda, однако Lambda возвращает следующую ошибку:

Ср 04 марта 09:49:35 UT C 2020: тело ответа конечной точки перед преобразованиями: {"errorMessage": "Невозможно импортировать модуль" universe-0-0-1-SNAPSHOT / src / lambdas / celestial_persist_function ": нет модуля с именем 'sr c'", "errorType": "Runtime.ImportModuleError"}

Ср. 04 марта, 09:49:35 UT C 2020: не удалось выполнить лямбду со статусом 200 из-за ошибки функции клиента: невозможно импортировать модуль 'universe-0-0-1-SNAPSHOT / src / lambdas / celestial_persist_function': нет модуля названный 'sr c'. Идентификатор лямбда-запроса: 381990d0-f193-4e49-b0fa-2c6d736552bd

Ср 04 мар. 09:49:35 UT C 2020: метод завершен со статусом: 502

Я был под впечатлением, что выполнение Python Lambda импортирует лямбду как модуль, поэтому я добавил __init__.py файлы на каждом уровне. Они могут помочь как в лямбда-импорте, так и в импорте в лямбду, например:

from src.persistence.persistence_service import PersistenceService

Во всяком случае, я пробовал несколько различных устройств и файловых структур. Что я могу делать не так?

Кстати, весь код выполняется локально без проблем.

1 Ответ

0 голосов
/ 04 марта 2020

У меня нет опыта работы с Python, но похоже, что вы должны загрузить свой код в другую папку root. Пожалуйста, попробуйте переместить .... / src / в /

PS И я рекомендую использовать инфраструктуру serverless.com для создания ваших лямбд - это намного проще для запуска

...