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