次の方法で共有


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 のアクションの一部を示しています。

App Services を対象とした Visual Studio Code コマンド パレットのスクリーンショット。

Visual Studio Code での Dev Container の使用

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

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

たとえば、開発者は 1 つの Dev Container に、PostgreSQL データベース サーバー (プロジェクト用のデータベースとサンプル データを含む)、Redis サーバー、Nginx、フロントエンド コード、クライアント ライブラリ (React など) といった、プロジェクトに必要なものをすべて含めるように構成できます。 また、このコンテナーには、プロジェクト コード、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 2022 も最適な選択肢となります。

  • 一般的に、Visual Studio 2022 での Python の使用に関するすべてのドキュメントについては、「Visual Studio | Python ドキュメント」を参照してください。

  • 設定手順については、Visual Studio 2022 への Python ワークロードのインストール手順が記載された「Visual Studio での Python サポートのインストール」を参照してください。

  • Web 開発で Python を使用するための一般的なワークフローについては、「クイックスタート: Visual Studio を使用して初めての Python Web アプリを作成する」を参照してください。 この記事は、Python Web アプリケーションを 1 から構築する方法を理解するのに役立ちます (ただし、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 がコンピューターにインストールされていてアクセス可能であることが必要です。

Web アプリをデプロイする Azure CLI コマンドが表示された PyCharm IDE のスクリーンショット。

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 リソースを配置するリソース グループを作成する を作成します。
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 docs インストール Python Package Index
Azure Identity pip install azure-identity azure-identity
Azure Storage Blob 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-identity パッケージを使用すると、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フレームワークには、DjangoFlask、またはFastAPIがあります。 Azure では、この 3 つとその他の Web フレームワークを使用できます。

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

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

pip install Django

手順 2: ハローワールド アプリを作成する。

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 でコンテナー化してデプロイできます。

次のステップ