Sam CLIを使ってPython3.9のアプリを作っているとします。
また、Imageベースで構成します。
まず、コード側の仕込み。
ptvsdをSamのイメージ内にインストールします。
requirements.txt
1 2 |
requests ptvsd |
app.pyのimport文の続きに以下のデバッガを待機する設定を入れます。
1 2 3 4 |
import json import ptvsd ptvsd.enable_attach(address=('0.0.0.0', 5858), redirect_output=True) ptvsd.wait_for_attach() |
これでコード側の準備はOK。
拡張機能のAWSToolKitをインストールします。
左ペインの「実行とデバッグ」の中にある、歯車マークをクリックして、launch.jsonを設定します。
自動的に生成してくれるかもしれないけど、これで行けた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ // 可能性のある属性については、IntelliSense を活用してください。 // 既存の属性の説明を表示するには、ホバーします。 // 詳細については、次の URL を参照してください。https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Debug with SAM CLI (Remote Debug)", "type": "python", "request": "attach", "port": 5858, "host": "localhost", "pathMappings": [ { "localRoot": "${workspaceFolder}/hello_world", "remoteRoot" : "/var/task" } ] } ] } |
これで、準備OK。
では、デバッグしていきます。
コード内に、ブレークポイントを設定します。
ビルドして、5858をリモートデバッグポートに指定して起動します。
そうすると、CLIからはLambda関数の最初の部分でストップしているように見えているはず。
1 2 |
sam build sam local invoke -d 5858 |
VSCodeのデバッグメニューから「▶️」をクリックすると、実行中のLambdaに対してデバッグ実行できるようになります。