#python #visual-studio-code #aws-lambda #aws-toolkit
Вопрос:
Я успешно использую инструментарий AWS для отладки node.js лямбда функционирует уже пару лет. Для моего последнего проекта я хотел написать свои лямбда — функции на python. Я следовал инструкциям в приведенном ниже руководстве.
Этот учебник действительно кажется идентичным тому, что я делал для отладки node.js. Однако, когда я нажимаю «выполнить и отладить», я получаю эту ошибку.
2021-10-08 17:04:00 [ИНФОРМАЦИЯ]: Запущен PythonPipBuilder:Разрешенные зависимости
2021-10-08 17:04:03 [ИНФОРМАЦИЯ]: Сбой сборки
2021-10-08 17:04:04 [ИНФОРМАЦИЯ]: Ошибка: PythonPipBuilder:Разрешенные зависимости — {debugpy==1.5.0(колесо)}
2021-10-08 17:04:04 [ПРЕДУПРЕЖДЕНИЕ]: «сборка сэма» не удалась: C:/path_to_user/AppData/Local/Temp/aws-toolkit-vscode/vsctkYP3zOS/app___vsctk___template.yaml
Очевидно, это говорит о том, что он не может разрешить debugpy, но я только начинаю использовать python, и я не уверен, что это такое или как это решить. Поиск в Google не выявил ничего, что решило бы проблему. Если бы кто-нибудь мог просветить меня, я был бы очень признателен
Ответ №1:
Одним из самых больших преимуществ Python является то, что функции lambda_handler-это просто еще одна функция в файле python. Вы можете использовать Pytest и тому подобное для модульного тестирования фактического обработчика, как и любой другой функции, не беспокоясь о настройке Docker/SAM для лямбды.
Так вот, это не идеально. Издеваться над объектом контекста может быть сложно, если вы вообще полагаетесь на него (если это не так, передача пустого диктатора {}
второму параметру просто прекрасна), и, очевидно, это не совсем та же среда. Импорт может быть разным, а также ведение журнала может быть странным.
Если у вас уже есть СЭМ и Докер, библиотека насмешек moto может помочь в этом, хотя она также не идеальна (и, честно говоря, больше подходит для насмешливых лямбда-вызовов из других функций, чем для насмешек над фактической лямбдой).
Что касается вашей фактической ошибки и вопроса...
Попробуйте удалить ==X. X. X из вашего requirements.txt и пусть pip попытается получить последнюю версию — я знаю, что это не замечательно, но это даст вам знать, если у этой потенциальной библиотеки по какой-то причине возникнут проблемы с установкой pip в контейнер docker.
Если это сработает, то, скорее всего, проблема с подключением между вашей настройкой docker и pypy — возможно, вам придется изменить данные подключения pip, чтобы знать, где искать или искать где-то конкретно.