チュートリアル: 仮想ネットワークで App Services Web アプリを使用して Azure Database for PostgreSQL - フレキシブル サーバー インスタンスを作成する

適用対象: Azure Database for PostgreSQL - フレキシブル サーバー

このチュートリアルでは、仮想ネットワーク内に Azure Database for PostgreSQL フレキシブル サーバーを使用して Azure アプリ Service Web アプリを作成する方法について説明します。

このチュートリアルで学習する内容は次のとおりです。

  • 仮想ネットワークに Azure Database for PostgreSQL フレキシブル サーバー インスタンスを作成する
  • Web アプリを作成する
  • Web アプリを仮想ネットワークに追加する
  • Web アプリから Azure Database for PostgreSQL フレキシブル サーバーに接続する

前提条件

  • Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

  • Azure CLI (バージョン 2.0 以降) をローカルにインストールします。 インストールされているバージョンを確認するには、az --version コマンドを実行します。

  • az login コマンドを使用して、お使いのアカウントにログインします。 対応するサブスクリプション名のコマンド出力で id プロパティを確認します。

    az login
    
  • 複数のサブスクリプションをお持ちの場合は、リソースが課金の対象となる適切なサブスクリプションを選択してください。 az account set コマンドを使用して、アカウントの特定のサブスクリプション ID を選択します。

    az account set --subscription <subscription ID>
    

新しい仮想ネットワークに Azure Database for PostgreSQL フレキシブル サーバー インスタンスを作成する

次のコマンドを使用して、仮想ネットワーク (VNET) 内にプライベート Azure Database for PostgreSQL フレキシブル サーバー インスタンスを作成します。

az postgres flexible-server create --resource-group demoresourcegroup --name demoserverpostgres --vnet demoappvnet --location westus2

このコマンドによって次の操作が実行されます。これには数分かかる場合があります。

  • リソース グループがまだ存在していない場合は作成します
  • 指定されていない場合は、サーバー名を生成します。
  • Azure Database for PostgreSQL フレキシブル サーバー インスタンスのこの仮想ネットワーク内に、新しい Azure Database for PostgreSQL フレキシブル サーバー インスタンスとサブネット用の新しい仮想ネットワークを作成します。
  • サーバーの管理者のユーザー名とパスワードが指定されていない場合は、それらが作成されます。
  • postgres という名前の空のデータベースが作成されます。

出力例を次に示します。

Local context is turned on. Its information is saved in working directory /home/jane. You can run `az local-context off` to turn it off.
Command argument values from local context: --resource-group demoresourcegroup, --location: eastus
Checking the existence of the resource group ''...
Creating Resource group 'demoresourcegroup ' ...
Creating new vnet "demoappvnet" in resource group "demoresourcegroup" ...
Creating new subnet "Subnet095447391" in resource group "demoresourcegroup " and delegating it to "Microsoft.DBforPostgreSQL/flexibleServers"...
Creating Azure Database for PostgreSQL flexible server instance 'demoserverpostgres' in group 'demoresourcegroup'...
Your server 'demoserverpostgres' is using sku 'Standard_D2s_v3' (Paid Tier). Please refer to https://aka.ms/postgres-pricing for pricing details
Make a note of your password. If you forget, you have to reset your password with 'az postgres flexible-server update -n demoserverpostgres --resource-group demoresourcegroup -p <new-password>'.
{
  "connectionString": "postgresql://generated-username:generated-password@demoserverpostgres.postgres.database.azure.com/postgres?sslmode=require",
  "host": "demoserverpostgres.postgres.database.azure.com",
  "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/demoresourcegroup/providers/Microsoft.DBforPostgreSQL/flexibleServers/demoserverpostgres",
  "location": "East US",
  "password": "generated-password",
  "resourceGroup": "demoresourcegroup",
  "skuname": "Standard_D2s_v3",
  "subnetId": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/demoresourcegroup/providers/Microsoft.Network/virtualNetworks/VNET095447391/subnets/Subnet095447391",
  "username": "generated-username",
  "version": "12"
}

Web アプリの作成

このセクションでは、App Service アプリでアプリ ホストを作成し、このアプリを Azure Database for PostgreSQL フレキシブル サーバー データベースに接続してから、そのホストにコードをデプロイします。 ターミナルで、アプリケーション コードのリポジトリのルートにいることを確認します。 Basic プランでは VNET 統合はサポートされていないことに注意してください。 Standard または Premium を使用してください。

az webapp up コマンドを使用して、App Service アプリ (ホスト プロセス) を作成します。

az webapp up --resource-group demoresourcegroup --location westus2 --plan testappserviceplan --sku P2V2 --name mywebapp

注意

  • --location 引数には、前のセクションでデータベースに使用したのと同じ場所を使用します。
  • <app-name> は、すべての Azure で一意の名前に置き換えます。 <app-name> に使用できる有効な文字は A から Z、0 から 9、および - です。 会社名とアプリ識別子を組み合わせて使用すると、適切なパターンになります。

このコマンドによって次の操作が実行されます。これには数分かかる場合があります。

  • リソース グループがまだ存在していない場合は作成します (このコマンドでは、先ほどデータベースを作成したのと同じリソース グループを使用します)。
  • App Service アプリが存在しない場合は作成します。
  • アプリの既定のログがまだ有効になっていない場合は、有効にします。
  • ビルド オートメーションを有効にし、ZIP デプロイを使用してリポジトリをアップロードします。

Web アプリ用のサブネットを作成する

VNET 統合を有効にする前に、App Service Web アプリに委任されたサブネットを用意する必要があります。 サブネットを作成する前に、データベースのサブネット アドレスを確認し、Web アプリのサブネットに同じアドレス プレフィックスを使用しないようにします。

az network vnet show --resource-group demoresourcegroup -n demoappvnet

次のコマンドを実行して、Azure Database for PostgreSQL フレキシブル サーバー インスタンスが作成されたのと同じ仮想ネットワークに新しいサブネットを作成します。 Azure Database for PostgreSQL フレキシブル サーバー サブネットとの競合を避けるために、アドレス プレフィックスを更新します。

az network vnet subnet create --resource-group demoresourcegroup --vnet-name demoappvnet --name webappsubnet  --address-prefixes 10.0.1.0/24  --delegations Microsoft.Web/serverFarms

Web アプリを仮想ネットワークに追加する

az webapp vnet-integration コマンドを使用して、リージョンの仮想ネットワーク統合を webapp に追加します。

az webapp vnet-integration add --resource-group demoresourcegroup -n  mywebapp --vnet demoappvnet --subnet webappsubnet

データベースに接続するための環境変数を構成する

このコードが App Service にデプロイされたので、次の手順は、アプリを Azure の Azure Database for PostgreSQL フレキシブル サーバー インスタンスに接続することです。 アプリ コードでは、さまざまな環境変数でデータベース情報を検索することを想定しています。 App Service で環境変数を設定するには、az webapp config appsettings set コマンドを使用します。

  
az webapp config appsettings set  --name mywebapp --settings DBHOST="<postgres-server-name>.postgres.database.azure.com" DBNAME="postgres" DBUSER="<username>" DBPASS="<password>" 
  • 新しく作成された Azure Database for PostgreSQL フレキシブル サーバー インスタンス コマンドの postgres-server-name、usernamepassword を置き換えます
  • <username><password> を、コマンドによって生成される資格情報に置き換えます。
  • リソース グループとアプリ名は、 .azure/config ファイル内のキャッシュされた値から取得されます。
  • コマンドによって、DBHOSTDBNAMEDBUSER*、DBPASS という名前の設定が作成されます。 アプリケーション コードでデータベース情報に別の名前を使用している場合は、コードで使用されている名前をアプリ設定で使用します。

仮想ネットワーク内からの送信接続をすべて許可するように Web アプリを構成します。

az webapp config set --name mywebapp --resource-group demoresourcegroup --generic-configurations '{"vnetRouteAllEnabled": true}'

リソースのクリーンアップ

以下のコマンドを使用して、チュートリアルで作成したすべてのリソースをクリーンアップします。 このコマンドによって、このリソース グループ内にあるすべてのリソースが削除されます。

az group delete -n demoresourcegroup

次のステップ