Краткое изложение моей проблемы:
- Я хочу иметь возможность локально запускать AWS SAM lambda (Python) и использовать отладчик для перехода к коду, который существует на уровне lambda.
Конфигурация проекта:
- Репозиторий Git для лямбда-функции
- Репозиторий Git для слоя, на который будет ссылаться функция
Чем я могу заниматься сейчас:
- Использование руководства от здесь, используя AWS SAM local, я могу запустить отладчик только для лямбда, и это работает нормально, но я не могу перейти к методу, определенному в слое
Что происходит, когда я пытаюсь перейти на метод со слоя:
- Используя отладчик vscode, я перенаправляюсь куда-то в лямбда-движок Python (файл: bootstrap.py), и я не могу перейти оттуда на уровень
Используемые мной технологии / библиотеки:
- Python3.8 (лямбда, слой)
- Отладчик: debugpy
- IDE: vscode
- Лямбда-фреймворк: AWS SAM
Команда, которую я запускаю (перед подключением через vscode к сеансу отладки):
sam local generate-event apigateway aws-proxy | sam local invoke MyFunction -d 5890 --event inputs/my_event.json
Шаблон AWS SAM (раздел функций) выглядит так:
MyFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub "${Environment}_${Branch}_my_function"
CodeUri: my_function.zip
Handler: app.handler
Timeout: 180
MemorySize: 512
Layers: # to be substituted with layer arn
- <LAYER_ARN>:<LAYER_VERSION>
Если я прав, когда я запускаю команду сверху, происходит следующее:
- Контейнер Docker создается из образа SAM Docker
- Контейнер Docker содержит слой, загруженный с AWS
- SAM распаковывает содержимое из my_function.zip и монтирует содержимое в контейнер докера.
- В контейнере Docker есть порт отладки 5890, поэтому мы можем подключиться из vscode (например) к сеансу отладки.
Моя теория заключается в том, что, пока уровень загружается с AWS, я не смогу увидеть этот код в сеансе отладки в vscode? Итак, одна вещь, о которой я думаю, но не уверен, возможно ли это, - вместо ссылки на LAYER_ARN я ссылаюсь на конкретную папку на моем локальном компьютере, где существует код слоя.
Вопрос 1: Если моя теория верна, можно ли это сделать и как? Вопрос 2: Если моя теория неверна, есть ли другие способы добиться отладки кода слоя в этой настройке?