Python Web アプリを Azure にデプロイするためのローカル環境を構成する

この記事では、Python Web アプリを開発して Azure にデプロイするためのローカル環境をセットアップする手順について説明します。 Web アプリは、純粋な Python にすることも、一般的な Python ベースの Web フレームワーク (DjangoFlaskFastAPI など) を使用することもできます。

ローカルで開発した Python Web アプリは、Azure App ServiceAzure Container AppsAzure Static Web Apps などのサービスにデプロイできます。 デプロイには多数のオプションがあります。 たとえば、App Service にデプロイする場合は、コード、Docker コンテナー、または静的 Web アプリからのデプロイを選択できます。 コードからデプロイする場合は、Visual Studio Code、Azure CLI、ローカル Git リポジトリ、または GitHub アクションを使用してデプロイできます。 Docker コンテナーでデプロイする場合は、Azure Container Registry、Docker Hub、またはプライベート レジストリからデプロイできます。

この記事を読み進める前に、開発環境のセットアップに関するページで、Python と Azure 向けに開発環境をセットアップするためのガイダンスを確認することをお勧めします。 以下では、Python Web アプリの開発に限定したセットアップと構成について説明します。

Python Web アプリの開発用にローカル環境をセットアップしたら、次の各記事に進むことができるようになります。

Visual Studio Code を使用する

Visual Studio Code 統合開発環境 (IDE) では、Python Web アプリの開発と Web アプリが使用する Azure リソースの操作を簡単に行うことができます。

ヒント

Python 拡張機能がインストールされていることを確認します。 VS Code での Python の操作の概要については、VS Code での Python の使用方法に関する記事を参照してください。

VS Code では、VS Code 拡張機能を使用して Azure リソースを 操作します。 拡張機能をインストールするには、拡張機能ビューまたは Ctrl + Shift + X キーを使用します。 Python Web アプリの場合は、次の拡張機能の 1 つ以上を使用する可能性があります。

  • Azure App Service 拡張機能は、Visual Studio Code から Azure App Service を操作できるようにします。 App Service では、Web サイトや Web API を含む Web アプリケーション用のフル マネージド ホスティングが提供されます。

  • Azure Static Web Apps 拡張機能は、VS Code から直接 Azure 静的 Web アプリを作成できるようにします。 Static Web Apps はサーバーレスであり、静的コンテンツ ホスティングに適しています。

  • コンテナーを使用する予定がある場合は、以下をインストールします。

    • コンテナーをローカルでビルドして操作するための Docker 拡張機能。 たとえば、Azure App Service で Web App for Containers を使用して、コンテナー化された Python Web アプリを実行できます。

    • Visual Studio Code からコンテナー化されたアプリを直接作成してデプロイするための Azure Container Apps 拡張機能。

  • 他にも、Azure StorageAzure DatabasesAzure Resources などの拡張機能があります。 上記またはその他の拡張機能は、必要に応じて随時追加できます。

Visual Studio Code の拡張機能には、一般的な IDE インターフェイスと同じようにアクセスでき、その際に VS Code コマンド パレットの充実したキーワード サポートを利用できます。 コマンド パレットにアクセスするには、Ctrl + Shift + P キーの組み合わせを使用します。 コマンド パレットは、Azure リソースに対して実行できるすべてのアクションを確認できる優れた手段です。 次のスクリーンショットは、App Service のアクションの一部を示しています。

A screenshot of the Visual Studio Code command palette for App Service.

Visual Studio Code での開発コンテナーの操作

Python 開発者は、多くの場合、特定のプロジェクト用に分離された自己完結型の環境を作成するために、仮想環境に依存しています。 仮想環境を使用すると、開発者はプロジェクトごとに依存関係、パッケージ、Python のバージョンを個別に管理できるため、異なるパッケージ バージョンを必要とする可能性がある異なるプロジェクト間の競合を回避できます。

Python では環境をvirtualenvvenv管理するための一般的なオプションがありますが、Visual Studio Code Dev Container 拡張機能 (オープン開発コンテナー仕様基づく) では、Docker コンテナーをフル機能のコンテナー化された環境として使用できます。 これにより、開発者は、必要なすべてのツール、依存関係、拡張機能を事前に構成して、一貫性があり、簡単に再現できるツールチェーンを定義できます。 つまり、システム要件、シェル構成、または他の言語を完全に使用している場合は、開発コンテナーを使用して、基本的な Python 環境の外部に存在する可能性があるプロジェクトのすべての部分を明示的に構成できます。

たとえば、開発者は、PostgreSQL データベース サーバー、サンプル データ、Redis サーバー、Nginx、フロントエンド コード、React などのクライアント ライブラリなど、プロジェクトで動作するために必要なすべてのものを含むように、1 つの Dev Container を構成できます。 さらに、コンテナーには、プロジェクト コード、Python ランタイム、および適切なバージョンを持つすべての Python プロジェクトの依存関係が含まれます。 最後に、コンテナーでインストールする Visual Studio Code 拡張機能を指定して、チーム全体が同じツールを使用できるようにすることができます。 そのため、新しい開発者がチームに参加すると、ツール、依存関係、データを含む環境全体をローカル コンピューターに複製する準備が整い、すぐに作業を開始できます。

「コンテナー内での開発」を参照してください

Visual Studio 2022 の使用

Visual Studio 2022 は、Python アプリケーション開発と、Azure リソースにアクセスしてデプロイするための多くの組み込みツールと拡張機能をサポートする、完全な機能を備えた統合開発環境 (IDE) です。 Azure で Python Web アプリを構築するためのほとんどのドキュメントでは Visual Studio Code の使用に重点を置いていますが、Visual Studio 2022 は既にインストールされている場合に最適なオプションであり、.NET または C++ プロジェクトでの使用に慣れている場合に適しています。

他の IDE を使用する

Azure を明示的にサポートしていない別の IDE で作業する場合は、Azure CLI を使用して Azure リソースを管理できます。 次のスクリーンショットでは、PyCharm IDE でシンプルな Flask Web アプリが開いています。 この Web アプリは、az webapp up コマンドを使用して Azure App Service にデプロイできます。 スクリーンショットでは、この CLI コマンドが PyCharm の組み込みターミナル エミュレーター内で実行されています。 IDE に組み込みエミュレーターがない場合は、任意のターミナルで同じコマンドを使用できます。 いずれにしても、Azure CLI がコンピューターにインストールされていてアクセス可能であることが必要です。

A screenshot of the PyCharm IDE with an Azure CLI command deploying a web app.

Azure CLI コマンド

Azure CLI コマンドを使用して Web アプリをローカルで操作する場合は、一般に次のコマンドを使用します。

コマンド 説明
az webapp Web アプリを管理します。 サブコマンドとして、Web アプリを作成するための create と、ローカル ワークスペースから作成してデプロイするための up が含まれています。
az container app Azure Container Apps を管理します。
az staticwebapp Azure Static Web Apps を管理します。
az group リソース グループとテンプレート デプロイを管理します。 Azure リソースを追加するには、リソース グループに対してサブコマンド create を使用します。
az appservice App Service プランを管理します。
az config Azure CLI 構成を管理します。 キーストロークを保存するために、他のコマンドで自動的に使用される既定の場所またはリソース グループを定義できます。

次に示す Azure CLI コマンドの例では、az webapp up を使用して、Web アプリと関連リソースの作成および Azure へのデプロイを 1 つのコマンドで行います。 コマンドは Web アプリのルート ディレクトリで実行します。

az webapp up \
    --runtime PYTHON:3.9 \
    --sku B1 \
    --logs

この例の詳細については、「クイックスタート: Python (Django または Flask) Web アプリを Azure App Service にデプロイする」を参照してください。

一部の Azure ワークフローでは、Azure Cloud Shell から Azure CLI を使用することもできます。 Azure Cloud Shell は、Azure リソースを管理するために認証された、ブラウザーからアクセスできる対話型シェルです。

Azure SDK の主要なパッケージ

Python Web アプリでは、Azure SDK for Python を使用してプログラムで Azure サービスを参照できます。 この SDK については、Python 用 Azure ライブラリ (SDK) の使用に関するページで詳しく説明しています。 このセクションでは、Web 開発で使用するこの SDK の主要なパッケージについて簡単に説明します。 また、コードを Azure リソースで認証するためのベスト プラクティスに関連する例を示します。

次に示すのは、Web アプリ開発で一般に使用されるパッケージの一部です。 パッケージは、pip を使用して仮想環境に直接インストールできます。 または、Python Package Index (Pypi) 名を requirements.txt ファイルに追加します。

SDK ドキュメント インストール Python Package Index
Azure ID pip install azure-identity azure-identity
Azure Storage Blobs pip install azure-storage-blob azure-storage-blob
Azure Cosmos DB pip install azure-cosmos azure-cosmos
Azure Key Vault シークレット pip install azure-keyvault-secrets azure-keyvault-secrets

Azure ID パッケージを使用すると、Web アプリは Microsoft Entra ID で認証できます。 Web アプリ コードでの認証には、azure-identity パッケージの DefaultAzureCredential を使用することをお勧めします。 Azure Storage にアクセスする方法の例を次に示します。 このパターンは他の Azure リソースでも同様です。

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

azure_credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
    account_url=account_url,
    credential=azure_credential)

環境変数 DefaultAzureCredential や Azure CLI サインインなど、アカウント情報の定義済みの場所が表示されます。 DefaultAzureCredential のロジックの詳細については、「Azure SDK for Python を使用して Azure サービスに対して Python アプリを認証する方法」を参照してください。

Python ベースの Web フレームワーク

Python Web アプリの開発では、多くの場合、Python ベースの Web フレームワークを使用します。 これらのフレームワークには、ページ テンプレート、セッション管理、データベース アクセス、HTTP 要求/応答オブジェクトへの容易なアクセスなどの機能があります。 フレームワークを使用することで、共通の機能を手間なく利用できます。

一般的な 3 つの Python Web フレームワークとして、DjangoFlaskFastAPI があります。 Azure では、この 3 つとその他の Web フレームワークを使用できます。

次の例では、こうしたフレームワークをローカルで簡単に使い始める方法を紹介します。 ここに示すコマンドを実行すると、最終的には Azure にデプロイできる単純なアプリケーションが作成されます。 コマンドは仮想環境内で実行します。

手順 1:pip でフレームワークをダウンロードします。

pip install Django

手順 2: Hello World アプリを作成します。

django-admin startproject コマンドを使用してサンプル プロジェクトを作成します。 このプロジェクトには、アプリを実行するためのエントリ ポイントである manage.py ファイルが含まれています。

django-admin startproject hello_world

手順 3: コードをローカルで実行します。

Django では WSGI を使用してアプリが実行されます。

python hello_world\manage.py runserver

手順 4: Hello World アプリを参照します。

http://127.0.0.1:8000/

この時点で、requirements.txt ファイルを追加し、その後に Web アプリを Azure にデプロイするか、Docker でコンテナー化してデプロイできます。

次のステップ