次の方法で共有


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

この記事では、Python Web アプリを して Azure にデプロイするようにローカル環境を設定する手順について説明します。 Web アプリは純粋な Python であるか、DjangoFlask、FastAPIなどの一般的な Python ベースの Web フレームワークのいずれかを使用できます。

ローカルで開発された Python Web アプリは、Azure App ServiceAzure 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 アプリ開発用にローカル環境をセットアップしたら、次の記事に取り組む準備が整います。

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 Static Web Apps を作成できます。 静的 Web Apps はサーバーレスであり、静的コンテンツ ホスティングに適しています。

  • コンテナーの使用を計画している場合は、次をインストールします。

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

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

  • Azure StorageAzure DatabasesAzure Resources 拡張機能など、その他の拡張機能があります。 必要に応じて、これらの拡張機能やその他の拡張機能をいつでも追加できます。

Visual Studio Code の拡張機能には、一般的な IDE インターフェイスで期待どおりにアクセスできます。また、VS Code コマンド パレットを使用して豊富なキーワードサポートを使用できます。 コマンド パレットにアクセスするには、Ctrl + Shift + P キーの組み合わせを使用します。 コマンド パレットは、Azure リソースに対して実行できるすべての可能なアクションを表示するのに適した方法です。 次のスクリーンショットは、App Service のアクションの一部を示しています。

App Service の Visual Studio Code コマンド パレットのスクリーンショット。

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

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

などの環境を管理するために Python で使用できる一般的なオプションがありますが、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 の に関するページを参照してください。Python ドキュメント、Visual Studio 2022 での Python の使用に関連するすべてのドキュメントを対象にしています。

  • セットアップ手順については、「Visual Studio に Python のサポートをインストールする」を参照してください。これは、Python ワークロードを Visual Studio 2022 にインストールする手順について説明しています。

  • 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 リソースを管理できます。 次のスクリーンショットでは、単純な Flask Web アプリが PyCharm IDE で開かれています。 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 アプリを作成するためのサブコマンド 作成 と、ローカル ワークスペースから作成してデプロイするための が含まれています
az container app Azure Container Apps を管理します。
az staticwebapp Azure Static Web Apps を管理します。
az group リソース グループとテンプレートのデプロイを管理します。 サブコマンド を使用して、リソース グループ内に を作成し、Azure リソースを配置します。
az appservice App Service プランを管理します。
az config マネージド Azure CLI の構成。 キーストロークを保存するために、他のコマンドが自動的に使用する既定の場所またはリソース グループを定義できます。

Web アプリと関連リソースを作成し、az webapp upを使用して 1 つのコマンドで Azure デプロイする Azure CLI コマンドの例を次に示します。 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を使用して、仮想環境にパッケージを直接インストールできます。 または、requirements.txt ファイルに Python パッケージ インデックス (Pypi) の名前を入力します。

SDK ドキュメント 取り付ける Python パッケージのインデックス
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 サインインなど、アカウント情報の定義済みの場所が検索されます。 ロジックの詳細については、「Azure SDK for Pythonを使用して Azure サービスに対する Python アプリの認証を する」を参照してください。

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

Python Web アプリの開発では、多くの場合、Python ベースの Web フレームワークを使用します。 これらのフレームワークは、ページ テンプレート、セッション管理、データベース アクセス、HTTP 要求および応答オブジェクトへの簡単なアクセスなどの機能を提供します。 フレームワークを使用すると、共通の機能のためにホイールを再発明する必要がなくなります。

3つの一般的なPython Webフレームワークには、DjangoFlask、またはFastAPIがあります。 これらの Web フレームワークと他の Web フレームワークは、Azure で使用できます。

これらのフレームワークをローカルですぐに開始する方法の例を次に示します。 これらのコマンドを実行すると、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 を使用してコンテナー化してからデプロイできます。

次の手順