Movatterモバイル変換


[0]ホーム

URL:


Zenn
Yuki YamadaYuki Yamada
🩺

Pythonを使用したAzure FunctionsのVSCodeでのデバッグ方法

に公開

はじめに

Azure Functions を Python で開発していて、VSCode を使ってブレークポイントを仕込むようなデバッグのやり方がまとまっていなかったので記事としてまとめることにしました。

本記事では、debugpy を使って、Python を使用した Azure Functions にブレークポイントを仕込んでデバッグする方法について紹介します。

debugpy とは

debugpyは Microsoft が開発している Python の Debug Adapter Protocol(DAP)の実装です。
Debug Adapter Protocol(DAP)は特定の IDE やエディタに依存せずに各プログラミング言語のデバッグを可能にするプロトコルです。
Debug Adapter を介してプログラムをデバッグ起動することで、VSCode などのクライアントからデバッグ操作が可能です。

事前準備

まず Azure Functions のプロジェクトの依存関係に debugpy を追加します。

# パッケージマネージャーにuvを利用していますがpipやpoetryでも同様ですuvadd--dev debugpy

また VSCode の Python の拡張機能を入れておきます。

https://marketplace.visualstudio.com/items?itemName=ms-python.python

Azure Functions Core Tools 起動時に debugpy を仕込む

Azure Functions Core Tools のfunc startコマンドでは--language-workerオプションで言語ワーカーの Python 起動時に引数を渡すことができます。
これを利用してdebugpyを実行します。

# debugpyを利用してデバッグモードで関数アプリを起動するfunc start\--verbose\--language-worker --'-m debugpy --listen 0.0.0.0:5678'

これで Python を使用した Azure Functions の関数アプリをデバッグモードで起動できます。

VSCode 側の設定とデバッグ実行

続いて VSCode 側の設定をします。

.vscode/tasks.jsonの設定

VSCode では.vscode/tasks.jsonを使ったタスクランナー的な機能があります。
ここに先ほどのデバッグ起動のコマンドをタスクとして定義しておきます。

{"version":"2.0.0","tasks":[{"type":"shell","label":"func: start-debug","command":". .venv/bin/activate && func start --verbose --language-worker -- '-m debugpy --listen 0.0.0.0:5678'","args":[],"isBackground":true,"problemMatcher":"$func-python-watch"}]}

.vscode/launch.jsonの設定

続いて.vscode/launch.jsonを使って VSCode のデバッグの構成を組みます。

{"version":"0.2.0","configurations":[{"name":"関数アプリ - デバッグ実行","type":"debugpy","request":"attach","connect":{"host":"localhost","port":5678},"preLaunchTask":"func: start-debug","justMyCode":false}]}

このデバッグ構成がポイントです。
preLaunchTaskで先ほど.vscode/tasks.jsonに定義したタスクfunc: start-debugを指定しています。
これによって VSCode からデバッグ起動を実行した際に、関数アプリはdebugpyによってデバッグモードで起動します。
その後、VSCode からdebugpyにアタッチします。

justMyCodefalseにしているのは好みですが、私はライブラリ側のコード部分もデバッグ時はチェックしたいので基本的にfalseにしています。

ブレークポイントの設定

実際に関数アプリのコードにブレークポイントを指定してデバッグをしてみます。
今回は HTTP トリガーの関数でクエリパラメータを取り出す部分にブレークポイントを仕込みます。

この状態で、VSCode からデバッグ起動を開始します。
デバッグ起動のやり方は「実行とデバッグ」タブの上部で開始ボタンを押すだけです。

正常に立ち上がれば、VSCode はデバッグ画面になります。

この状態で HTTP トリガーの関数アプリのエンドポイントにアクセスします。

すると、きちんとブレークポイントを仕込んだ箇所で処理が止まります。

これでデバッグコンソールを利用して変数の中身を確認したり、ステップ実行などのデバッグ操作ができます。

おわりに

本記事では debugpy を使って Python を使用した Azure Functions の関数アプリのデバッグ方法を紹介しました。
内容は Python ですが、デバッグ方法を理解すれば他の言語の Azure Functions の関数アプリのデバッグでも応用できますね。

バッジを贈って著者を応援しよう

バッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。


[8]ページ先頭

©2009-2025 Movatter.jp