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

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

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

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

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

前提条件

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

  • ローカル環境にバージョン 2.0 以降の Azure CLI をインストールします (または、CLI がプレインストールされている Azure Cloud Shell を使います)。 インストールされているバージョンを確認するには、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 フレキシブル サーバー インスタンス用の仮想ネットワークとサブネットを作成します。
  • サーバーの管理者ユーザー名とパスワードが指定されていない場合は作成します。
  • postgres という名前の空のデータベースを作成します。

出力例を次に示します。

Creating Resource Group 'demoresourcegroup'...
Creating new Vnet "demoappvnet" in resource group "demoresourcegroup"
Creating new Subnet "Subnetdemoserverpostgres" in resource group "demoresourcegroup"
Creating a private dns zone demoserverpostgres.private.postgres.database.azure.com in resource group "demoresourcegroup"
Creating PostgreSQL Server '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
Creating PostgreSQL database 'flexibleserverdb'...
Make a note of your password. If you forget, you would have to reset your password with "az postgres flexible-server update -n demoserverpostgres -g demoresourcegroup -p <new-password>".
Try using 'az postgres flexible-server connect' command to test out connection.
{
  "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/demoappvnet/subnets/Subnetdemoserverpostgres",
  "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

Note

  • --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>" 
  • mysql-server-nameusernamepassword を、新しく作成される Azure Database for PostgreSQL フレキシブル サーバー インスタンスのコマンドのものに置き換えます。
  • <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

次のステップ