Использование VS Code debugger для безсерверных приложений lambda flask - PullRequest
0 голосов
/ 14 марта 2020

Я создавал некоторые лямбда-функции на AWS, используя безсерверный фреймворк, Flask и SLS WSGI. Некоторые таблицы DynamodB, но это не должно иметь значения в этом случае.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу отладить весь процесс до конца, я могу запустить sls wsgi serve и запустить локальный экземпляр из моих лямбда-функций, счастливых дней. Тем не менее, я немного избалован другими инструментами разработки, языками и IDE (даже просто Flask), которые позволяют мне устанавливать точки останова и видеть область действия, шаг за шагом и так далее c. Так что мне бы очень хотелось, чтобы и здесь это было сделано.

Я попытался запустить упомянутую выше команду sls в конфигурации запуска внутри кода, не повезло. Затем я попытался запустить стандартную конфигурацию запуска flask, но она явно не включала всю конфигурацию, хранящуюся в файле sls.yml, который необходим для доступа к локальному экземпляру dynamicodb.

Последнее Я пытался прикрепить к ptvsd в конце моего файла app.py. Поэтому я хотел бы выполнить действие wait из ptvsd, подключить отладчик в коде vs к указанному порту, который кажется успешным и возвращает выполнение кода. Однако, похоже, что sls wsgi запускает файл дважды, так что присоединение происходит для первого экземпляра, а не для второго, что затем не вызывает точку останова, когда я пытаюсь выполнить вызов API через Postman.

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

I искал ответы в Интернете и читал документы и не мог больше ничего найти.

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

Один метод, который я нашел полезным, хотя и в среде узлов, но должен применяться здесь, состоит в том, чтобы использовать модульное тестирование как способ локально выполнять код с возможностью t ie в отладчике, а также использовать насмешек, чтобы заглушить внешние зависимости, такие как AWS сервисы (S3, DynamoDB, et c). Я написал сообщение в блоге о настройке этого для узла, но вы можете найти его полезным и для того, чтобы рассмотреть возможность настройки с помощью Pythoin: https://serverless.com/blog/serverless-local-development/

Однако в мире Что касается разработки без серверов, то, в конечном счете, не имеет значения, насколько сложна ваша локальная среда разработки, вам придется тестировать и в облачной среде. Методика модульного тестирования, которую я описал, хороша для выявления базовых синтаксических и логических ошибок, но вам все равно потребуется выполнить развертывание в облаке и протестировать в этой среде. Это одна из причин того, что в Serverless мы очень усердно работаем над тем, чтобы улучшить способность и время, необходимое для развертывания в облаке, чтобы тестирование в AWS заменяло локальное тестирование.

0 голосов
/ 14 марта 2020

Я понял, что могу использовать Attach using Process Id Однако это немного сложно, потому что в списке всегда работают 2 процесса (разные pid). Это не здорово, но это делает трюк

...