Невозможно переключиться с AWS Layer на указание локально редактируемых пакетов pip3 при выполнении функции - PullRequest
2 голосов
/ 12 февраля 2020

Я одновременно изучаю python и пытаюсь построить несколько лямбд, которые будут хранить и обрабатывать историю прослушивания Spotify. Первоначально я написал одну лямбду со всеми зависимостями, упакованными в один и тот же каталог и импортированными с использованием относительных путей.

После создания аналогичных функций, использующих одинаковые зависимости, я отделил зависимости от функции и построил их с помощью pip3 и setup.py. При запуске списка pip3 я вижу пакеты, как и ожидалось. Чтобы выполнить функцию локально с помощью sam build && sam local invoke SpotifyPlayHistoryListener --env-vars env.json --event events/event.json и проверить успешность, я указываю слой, который я построил - это работает!

Чтобы избежать необходимости перестраивать слой и изменять мою функцию, я бы хотел быть в состоянии вернуться к использованию файла require.txt и удалить указанный слой.

Шаги для воспроизведения проблемы:

Build local editable package - pip3 install -e .
Specify in requirements.txt
sam build && sam local invoke SpotifyPlayHistoryListener --env-vars env.json --event events/event.json

Наблюдаемый результат:

Building resource 'SpotifyPlayHistoryListener'
Running PythonPipBuilder:ResolveDependencies
Build Failed
Error: PythonPipBuilder:ResolveDependencies - Could not satisfy the requirement: spotify-client

Ожидаемый результат:

Сборка завершается успешно и функция выполняется успешно.

Дополнительные сведения о среде:

Я могу выполнить функцию локально, используя sam build && sam local invoke SpotifyPlayHistoryListener --env-vars env.json --event events/event.json, когда определяю зависимости с помощью слоя

. Я создал следующую проблему https://github.com/awslabs/aws-lambda-builders/issues/155. Я думаю, что это может быть проблема с моим пониманием python и pip, поэтому открытый вопрос может быть неактуальным.

1 Ответ

0 голосов
/ 13 февраля 2020

Поскольку мои зависимости не были опубликованы в pypi, мне нужно было изменить записи в require.txt, чтобы использовать фактический путь к файлу пакета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...