Python Web アプリを Azure にデプロイするためのローカル環境を構成する
この記事では、Python Web アプリを開発して Azure にデプロイするためのローカル環境をセットアップする手順について説明します。 Web アプリは、純粋な Python にすることも、一般的な Python ベースの Web フレームワーク (Django、Flask、FastAPI など) を使用することもできます。
ローカルで開発した Python Web アプリは、Azure App Service、Azure Container Apps、Azure 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 アプリの開発用にローカル環境をセットアップしたら、次の各記事に進むことができるようになります。
- クイックスタート: Python (Django または Flask) Web アプリを Azure App Service にデプロイする
- チュートリアル: PostgreSQL を使用した Python (Django または Flask) Web アプリを Azure にデプロイする
- Flask Web アプリを作成し、システム割り当てマネージド ID を使用して Azure にデプロイする
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 Storage、Azure Databases、Azure Resources などの拡張機能があります。 上記またはその他の拡張機能は、必要に応じて随時追加できます。
Visual Studio Code の拡張機能には、一般的な IDE インターフェイスと同じようにアクセスでき、その際に VS Code コマンド パレットの充実したキーワード サポートを利用できます。 コマンド パレットにアクセスするには、Ctrl + Shift + P キーの組み合わせを使用します。 コマンド パレットは、Azure リソースに対して実行できるすべてのアクションを確認できる優れた手段です。 次のスクリーンショットは、App Service のアクションの一部を示しています。
Visual Studio Code での開発コンテナーの操作
Python 開発者は、多くの場合、特定のプロジェクト用に分離された自己完結型の環境を作成するために、仮想環境に依存しています。 仮想環境を使用すると、開発者はプロジェクトごとに依存関係、パッケージ、Python のバージョンを個別に管理できるため、異なるパッケージ バージョンを必要とする可能性がある異なるプロジェクト間の競合を回避できます。
Python では環境をvirtualenv
venv
管理するための一般的なオプションがありますが、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++ プロジェクトでの使用に慣れている場合に適しています。
一般に、 Visual Studio |Visual Studio 2022 での Python の使用に関連するすべてのドキュメントの Python ドキュメント 。
セットアップ手順については、Visual Studio での Python サポートのインストールに関するページを参照してください 。Visual Studio 2022 に Python ワークロードをインストールする手順について説明します。
Web 開発に Python を使用する一般的なワークフローについては、「クイック スタート: Visual Studio を使用して初めての Python Web アプリを作成する」を参照してください。 この記事は、Python Web アプリケーションを最初から構築する方法を理解するのに役立ちます (ただし、Azure へのデプロイは含まれません)。
Visual Studio 2022 を使用して Azure リソースを管理し、Azure にデプロイする方法については、Visual Studio を使用した Azure 開発に関するページを参照してください。 このドキュメントの多くは特に .NET メンションですが、Azure リソースを管理して Azure にデプロイするためのツールは、プログラミング言語に関係なく同じように動作します。
特定の Azure 管理またはデプロイ タスクに対して Visual Studio 2022 で使用できる組み込みツールがない場合は、いつでも Azure CLI コマンドを使用できます。
他の IDE を使用する
Azure を明示的にサポートしていない別の IDE で作業する場合は、Azure CLI を使用して Azure リソースを管理できます。 次のスクリーンショットでは、PyCharm IDE でシンプルな Flask Web アプリが開いています。 この Web アプリは、az webapp up
コマンドを使用して Azure App Service にデプロイできます。 スクリーンショットでは、この CLI コマンドが PyCharm の組み込みターミナル エミュレーター内で実行されています。 IDE に組み込みエミュレーターがない場合は、任意のターミナルで同じコマンドを使用できます。 いずれにしても、Azure CLI がコンピューターにインストールされていてアクセス可能であることが必要です。
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 フレームワークとして、Django、Flask、FastAPI があります。 Azure では、この 3 つとその他の Web フレームワークを使用できます。
次の例では、こうしたフレームワークをローカルで簡単に使い始める方法を紹介します。 ここに示すコマンドを実行すると、最終的には Azure にデプロイできる単純なアプリケーションが作成されます。 コマンドは仮想環境内で実行します。
手順 1: pip でフレームワークをダウンロードします。
手順 2: Hello World アプリを作成します。
django-admin startproject コマンドを使用してサンプル プロジェクトを作成します。 このプロジェクトには、アプリを実行するためのエントリ ポイントである manage.py ファイルが含まれています。
django-admin startproject hello_world
手順 3: コードをローカルで実行します。
手順 4: Hello World アプリを参照します。
この時点で、requirements.txt ファイルを追加し、その後に Web アプリを Azure にデプロイするか、Docker でコンテナー化してデプロイできます。