usomaru技術ぶろぐ

学んだことをちょこちょこメモ( ..)φ

python経験ほぼゼロの人がFastAPIをAzureにあげるまで

はじめに

最近LangChainを使っている関係でpythonを使うことが増えました。
今回pythonでWebAPIの作成とAzure App Serviceにあげるまでを見様見真似でやってみたので、備忘録を残します。

追記
構成のスタートアップコマンドを修正しました。

環境

python v3.11

pythonでWebAPIを作る

今回私はこちらのFastAPIを使って作ることにしました。
Swagger UIも備わっていて便利です。

fastapi.tiangolo.com

こちらに沿って必要なもののインストールとFastAPIを作ります。 (ソースコードまるコピなので省略します。)

Azure App Serviceにあげる

requirements.txtを追加します。
以下のサイトを参考に生成しました。

qiita.com

requirements.txtにはgunicornも追加します。
Azureで動かす際に、uvicornのワーカークラスでgunicornを動かす事が推奨されているそうなので。

続いて、Azure PortalからApp Serviceを追加します。
Pythonのバージョンを合わせるのを忘れずに。(あってないとエラーで死にました)

ソースコードはさくっと試したかったので、Visual Studio CodeのAzure拡張機能を使ってデプロイしました。

qiita.com

デプロイできたら、構成のスタートアップコマンドに以下のように追加します。

gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app

note.com

あげて見た結果

環境変数と接続文字列

ソースコードに以下のようにかけば、Azure側で追加した環境変数と接続文字列の情報を見てくれます。

app_client_id = os.environ['APP_CLIENT_ID']

今回はまったところとエラー解消のために見ればいいところ

今回は省略していますが、Azure SQL Databaseとの接続がうまくいかず(ファイアウォールIPアドレス接続忘れ)、1日ぐらいハマりました。

このエラー画面を何十回も見た…

これまでC#で作っていたときは、F12でコンソールを見ればだいたい解決していた印象だったので、あまり見なかったのですが、ログストリームにすべての答えが書いてありました。。。

結論:ログストリームを見よう