4
3
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Python(FastAPI)Webアプリを Azure App Service にデプロイするクイックスタート

Last updated at Posted at 2024-06-25

こちらの記事は投稿時点の情報です。
最新情報は公式ドキュメントMicrosoft Learnでご確認お願いいたします。

Microsoft Japan - Azure Developer Platform Team の D̷ELL と申します。
本日は Azure App Service で FastAPI をホスティングする手順の紹介です。

Azure App Service は、Web アプリケーション、REST API、およびモバイル バックエンドをホストするための HTTP ベースのサービスです。様々なプログラムを、Azure の恩恵を受けつつ、手軽にホスティングすることができます。

生成AI関係のアプリを開発していると、Python でアプリを構築することが多いと思います。
今回は、FastAPI で構築したアプリを Azure 上で安定稼働させるためのクイックスタートを試してみます。

0. リファレンス

公式ドキュメント

リポジトリ

1. リポジトリの準備

CI/CDを行うためのリポジトリを作成します。
先ほどの GitHub リポジトリ「msdocs-python-fastapi-webapp-quickstart」を、ご自身の GitHub アカウントにForkしてください。

2. App Serviceの作成

Azure Portal に移動し、App Service のページに遷移します。
Azure Portal の画面上部の検索窓に「App Service」と入力し、App Service を選択してください。
https://portal.azure.com/#home

FireShot Capture 012 - ホーム - Microsoft Azure - portal.azure.com.png

image.png


Webアプリを作成していきましょう。
左上の[作成] -> [Web アプリ] を選択し、各種パラメータを設定していきます。

  • ランタイムスタック:[Python 3.10]
  • 地域:[Japan East]
  • Linuxプラン:(新規)
  • 価格プラン: [Free F1]

他の項目はデフォルトの値で構いません。この設定で、アプリを作成していきます。

image.png

FireShot Capture 003 - Web アプリの作成 - Microsoft Azure - portal.azure.com.png

FireShot Capture 004 - Microsoft.Web-WebApp-Portal-95bea4bb-871a - Microsoft Azure_ - portal.azure.com.png

現在、Windows 上の Python はサポートされていません。Linux プランを選択してください。

言語ラインタイムのサポートポリシー

App Service プラン


App Service の作成が完了しました。この状態で [既定のドメイン]にアクセスすると、サンプルページが表示されていると思います。

FireShot Capture 005 - fastapi-quickstart - Microsoft Azure - portal.azure.com.png

image.png

3. CI/CD の設定

次に、CI/CDの設定を行います。[デプロイメント] ブレードから、[デプロイセンター]を選択します。
以下の通り設定を行い、GitHubリポジトリと連携します。

  • ソース:[GitHub]
  • 組織:[任意の組織]
  • リポジトリ:[msdocs-python-fastapi-webapp-quickstart] ※forkしている場合
  • ブランチ:[main]

その他の項目はデフォルトで構いません。設定が終わったら [保存] してください。

FireShot Capture 008 - fastapi-quickstart - Microsoft Azure - portal.azure.com.png

なお、ページ下部の [ワークフローの作成] - [ファイルのプレビュー] から、自動生成されたワークフローファイルを閲覧することも可能です。

FireShot Capture 009 - fastapi-quickstart - Microsoft Azure - portal.azure.com.png


保存後、[デプロイセンター] を確認すると、デプロイが進捗していることがわかります。
[概要] で、[前回のデプロイ] に ✅ が表示されるまで待ちましょう。これで、CI/CDの設定は完了です。

FireShot Capture 010 - fastapi-quickstart - Microsoft Azure - portal.azure.com.png

image.png

image.png

4. アプリの設定

CI/CDの設定は完了しましたが、この状態で[既定のドメイン]にアクセスしても、まだサンプルページが表示されていると思います。これは、デプロイした FastAPI アプリを起動するように設定がされていないためです。

image.png


デフォルトの待ち受けポートを、FastAPIに合わせて変更します。
[設定] ブレードから [環境変数] にアクセスします。

以下の環境変数を [追加] します。

  • [WEBSITES_PORT]:[8000]

image.png

次に、App Service起動時に実行するファイルを指定します。
今回は、Startup.sh に依存関係の解決とサーバーの起動が設定されているため、該当のシェルを指定します。

[設定] ブレードから [構成] にアクセスし、スタートアップコマンドを指定して [保存] します。

  • スタートアップコマンド:[startup.sh]

FireShot Capture 016 - fastapi-quickstart - Microsoft Azure - portal.azure.com.png

設定後、[概要] ページにアクセスして、 [再起動] を実施してください。

image.png

4. 動作確認

[既定のドメイン]にアクセスすると、[msdocs-python-fastapi-webapp-quickstart] の画面が表示され、FastAPIが動作していることが確認できます。

FireShot Capture 017 - Hello Azure - Python Quickstart_ - fastapi-quickstart-hxc3g7d9ckbtdehp.japaneast-01.azurewebsites.net.png

5. まとめ

このように、Azure App Service では Python アプリを簡単にホストすることが可能です。
FastAPI や Gradio を用いたアプリケーションのホストにも利用できますね。

HuggingFace Spaces でも Gradio アプリは手軽にホスティング可能ですが、パブリックに公開したくない場合は App Service が選択肢に入ってくると思います。ぜひ、ご利用ください。

最後までご覧いただき、ありがとうございました。

最後に

*本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3