Невозможно переключиться с уровня AWS на указание локально созданных редактируемых пакетов pip3 при выполнении функции

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


person MikeMelo91    schedule 12.02.2020    source источник


Ответы (1)


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

person MikeMelo91    schedule 13.02.2020