Я одновременно изучаю 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, поэтому открытый вопрос может быть неактуальным.