AWS Lambda — Как импортировать файлы (python) из основного репозитория проекта

#python #amazon-web-services #amazon-s3 #aws-lambda #python-import

Вопрос:

Примечание: Этот вопрос не касается автоматической установки библиотек/пакетов

У нас есть основное приложение на Python(3) со всеми настройками, всеми функциями, всеми перечислениями, моделями и т. Д.

Затем у нас есть (Amazon) AWS-лямбда, которая обрабатывает внешние запросы на ввод, в которой используются 2 базы данных и некоторые перечисления и модели из основного приложения, поэтому будут применяться те же ограничения, настройки и значения.

Теперь мы, конечно, могли бы сделать то же самое, что и с пакетами, и просто скопировать все файлы/папки в соответствии с основной структурой приложения, чтобы использовать их (вручную).

Однако это, очевидно, очень неудобно, так как основное приложение связано между собой по более крупному дереву каталогов. Мы искали в Интернете, и все, что мы могли найти, всегда было связано с автоматическими включениями пакетов/библиотек или чтением файлов из S3.

A.

Is есть способ либо: автоматически добавить все дерево импорта (рекурсивно, конечно) в систему бессерверной упаковки? (или, по крайней мере, создайте его с помощью какого-нибудь надежного инструмента отдельно, чтобы его можно было добавить позже?)
B. Свяжите каким-то образом какой-нибудь репозиторий (?S3? ?EC2?), содержащий основные файлы приложений, с лямбдой, чтобы, когда кто-то это сделает, например from modules.database import init_db , в lambda_function.py , он был фактически импортирован, даже если modules он находится где-то еще?

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

1. Может быть, попробовать развернуть библиотеку как слой с собственным конвейером развертывания?

2. @HimanshuPant Какая библиотека? О. О., не могли бы вы поподробнее рассказать о слое? Спасибо

3. извините за поздний ответ, Из того, что я вижу, у вас есть локальная библиотека или своего рода модуль, и вы хотите развернуть его отдельно, в этом случае вам следует развернуть lib/модуль в качестве уровня aws lambda. Это почти все, что я могу сказать из того, что я понимаю до сих пор. Может быть, мы сможем обсудить это подробно или я могу помочь на GitHub, чтобы лучше понять

4. @HimanshuPant Ну и лямбда-трах. py должен быть развернут отдельно как AWS Lambda, но в нем используется много материалов со всей базы кода, пока мы просто копируем почти всю базу кода, но нам было интересно, не имеет ли бессерверный какой-то автоматический выбор, основанный на импорте. (у нас есть сценарий, который это делает). Ты это имеешь в виду? docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html

5. Да, это то, о чем я говорю, вы можете автоматизировать весь процесс, у нас аналогичная ситуация, но мы используем webpack, поэтому он заботится о комплектации для нас, я думаю, вы могли бы поместить остальную часть вашей кодовой базы в слой и просто импортировать из него