次の方法で共有


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

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

Azure App ServiceAzure Container AppsAzure Static Web Apps などのサービスにローカルに開発されたPython Web アプリをデプロイできます。 デプロイには多数のオプションがあります。 たとえば、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を作成できます。 Static Web Appsはサーバーレスであり、静的コンテンツ ホスティングに適しています。

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

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

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

  • その他の拡張機能には、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では、virtualenvvenv などの環境を管理するための一般的なオプションがあります。 Visual Studio Code Dev Container 拡張機能 (open Dev Container specification に基づく) を使用すると、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 | Python ドキュメント を参照して、Visual Studio 2022 での Python の使用に関連するすべてのドキュメントを確認してください。

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

  • web 開発にPythonを使用する一般的なワークフローについては、「Quickstart: Visual Studioを参照してください。 この記事は、Python Web アプリケーションを最初から構築する方法を理解するのに役立ちます (ただし、Azureへのデプロイは含まれません)。

  • Visual Studio 2022 を使用してAzure リソースを管理し、Azureにデプロイする方法については、Azure Visual Studio。 このドキュメントの多くは.NET特に説明していますが、Azure リソースを管理し、Azureにデプロイするためのツールは、プログラミング言語に関係なく同じように動作します。

  • Visual Studio 2022 で特定のAzure管理タスクまたは配置タスクに使用できる組み込みツールがない場合は、常に Azure CLI コマンドを使用できます。

他の IDE を使用する

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

PyCharm IDE のスクリーンショットで、Azure CLI コマンドを使ってウェブアプリをデプロイする様子を示しています。

Azure CLI コマンド

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

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

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

  • bash
  • PowerShell ターミナル を開く
az webapp up \
    --runtime PYTHON:3.9 \
    --sku B1 \
    --logs

この例の詳細については、「Quickstart: 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 のサービスをプログラムから参照できます。 セクション Python 用 Azure ライブラリ (SDK) の使用は、この SDK について詳しく説明しています。 このセクションでは、Web 開発で使用する SDK の主要なパッケージについて説明します。 また、Azure リソースを使用してコードを認証するためのベスト プラクティスに従った例も示します。

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

SDK ドキュメント インストール パッケージ インデックスPython
Azure Id pip install azure-identity azure-identity
Azure Storage Blobs pip install azure-storage-blob azure-storage-blob (Azure ストレージ ブロブ)
Azure Cosmos DB pip install azure-cosmos azure-cosmos
Azure Key Vault シークレット pip install azure-keyvault-secrets Azure キーボールト シークレット

azure-identity パッケージを使用すると、Web アプリをMicrosoft Entra IDで認証できます。 Web アプリ コードでの認証には、 パッケージの 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 ロジックの詳細については、「Authenticate Python apps to Azure services by using the Azure SDK for Pythonを参照してください。

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

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

3 つの一般的なPython Web フレームワークは、DjangoFlask、および FastAPI です。 これらの Web フレームワークや他の Web フレームワークは、Azureで使用できます。

次の例は、これらのフレームワークをローカルですぐに使い始める方法を示しています。 これらのコマンドを実行すると、Azureにデプロイできる単純なアプリケーションになります。 コマンドは仮想環境内で実行します。

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

  • Django
  • フラスコ
  • FastAPI
pip install Django

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

  • Django
  • フラスコ
  • FastAPI

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

django-admin startproject hello_world

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

  • Django
  • フラスコ
  • FastAPI

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

python hello_world\manage.py runserver

手順 4: hello world アプリを参照します。

  • Django
  • フラスコ
  • FastAPI
http://127.0.0.1:8000/

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

次のステップ