チュートリアル: 仮想ネットワーク内の Azure Database for MySQL - フレキシブル サーバーに App Services Web アプリを接続する
適用対象: Azure Database for MySQL - フレキシブル サーバー
このチュートリアルでは、Azure App Service Web アプリを作成し、同じ、または異なる仮想ネットワーク内で分離された Azure Database for MySQL フレキシブル サーバー インスタンスに接続する方法について説明します。
このチュートリアルで学習する内容は次のとおりです。
- 仮想ネットワーク内に Azure Database for MySQL フレキシブル サーバー インスタンスを作成する
- App Service に委任して Web アプリを作成するサブネットを作成する
- Web アプリを仮想ネットワークに追加する
- Web アプリから Azure Database for MySQL フレキシブル サーバーに接続する
- 異なる VNet に分離された Web アプリと Azure Database for MySQL フレキシブル サーバー インスタンスを接続する
前提条件
Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。 現在、Azure 無料アカウントがあれば、Azure Database for MySQL - フレキシブル サーバーを 12 か月間無料でお試しいただけます。 詳しくは、Azure Database for MySQL - フレキシブル サーバーの無料試用に関する記事をご覧ください。
この記事では、Azure CLI バージョン 2.0 以降をローカルで実行している必要があります。 インストールされているバージョンを確認するには、az --version
コマンドを実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
az login コマンドを使用して、アカウントにログインする必要があります。 対応するサブスクリプション名のコマンド出力で id プロパティを確認します。
az login
複数のサブスクリプションをお持ちの場合は、リソースが課金の対象となる適切なサブスクリプションを選択してください。 az account set コマンドを使用して、アカウントの特定のサブスクリプション ID を選択します。 サブスクリプション ID プレースホルダーへのサブスクリプションを、az login 出力のサブスクリプション ID プロパティに置き換えます。
az account set --subscription <subscription ID>
Azure Database for MySQL フレキシブル サーバー インスタンスを作成する
次のコマンドを使って、仮想ネットワーク (VNET) 内にプライベート Azure Database for MySQL フレキシブル サーバー インスタンスを作成します。
az mysql flexible-server create --resource-group myresourcegroup --location westus2 --vnet VNETName
新しく作成した仮想ネットワークの接続文字列と名前をコピーします。 このコマンドによって次の操作が実行されます。これには数分かかる場合があります。
- リソース グループがまだ存在していない場合は作成します。
- サーバー名が指定されていない場合は、それが生成されます。
- 新しい Azure Database for MySQL フレキシブル サーバー インスタンス用の新しい仮想ネットワーク
VNETName
を作成し、この仮想ネットワーク内に Azure Database for MySQL フレキシブル サーバー インスタンス用のサブネットを作成します。 名前が一意であることを確認してください。 - サーバーの管理者のユーザー名とパスワードが指定されていない場合は、それらが作成されます。
- flexibleserverdb という名前の空のデータベースを作成します。
Note
指定しない場合は、自動的に生成されるパスワードを記録しておきます。 パスワードを忘れた場合は、az mysql flexible-server update
コマンドを使ってパスワードをリセットする必要があります。
App Service エンドポイントのサブネットを作成する
次に、App Service Web アプリのエンドポイントに委任されるサブネットが必要です。 次のコマンドを実行して、Azure Database for MySQL フレキシブル サーバー インスタンスが作成されたのと同じ仮想ネットワーク内に新しいサブネットを作成します。
az network vnet subnet create -g myresourcegroup --vnet-name VNETName --name webappsubnetName --address-prefixes 10.0.1.0/24 --delegations Microsoft.Web/serverFarms --service-endpoints Microsoft.Web
このコマンドの後、仮想ネットワーク名とサブネット名をメモしておいてください。作成後、Web アプリの VNET 統合ルールを追加するために必要になります。
Web アプリを作成する
このセクションでは、App Service アプリでアプリ ホストを作成し、このアプリを Azure Database for MySQL フレキシブル サーバー データベースに接続します。 ターミナルで、アプリケーション コードのリポジトリのルートにいることを確認します。
az webapp up コマンドを使って、App Service アプリ (ホスト プロセス) を作成します。
az webapp up --resource-group myresourcegroup --location westus2 --plan testappserviceplan --sku P2V2 --name mywebapp
Note
- --location 引数には、前のセクションでデータベースに使用したのと同じ場所を使用します。
- <app-name> を Azure 全体で一意の名前に置き換えます (サーバー エンドポイントは
https://\<app-name>.azurewebsites.net
)。 <app-name> に使用できる有効な文字は A から Z、0 から 9、および - です。 会社名とアプリ識別子を組み合わせて使用すると、適切なパターンになります。 - App Service の Basic レベルでは、VNET 統合はサポートされていません。 Standard または Premium を使用してください。
このコマンドによって次の操作が実行されます。これには数分かかる場合があります。
- リソース グループがまだ存在していない場合は作成します (このコマンドでは、先ほどデータベースを作成したのと同じリソース グループを使用します)。
- Basic 価格レベル (B1) で App Service プラン
testappserviceplan
を作成します (存在しない場合)。 --plan と --sku は省略可能です。 - App Service アプリが存在しない場合は作成します。
- アプリの既定のログがまだ有効になっていない場合は、有効にします。
- ビルド オートメーションを有効にし、ZIP デプロイを使用してリポジトリをアップロードします。
Web アプリを仮想ネットワークに追加する
az webapp vnet-integration コマンドを使用して、リージョンの仮想ネットワーク統合を webapp に追加します。 <vnet-name> と <subnet-name> を、Azure Database for MySQL フレキシブル サーバー インスタンスで使っている仮想ネットワークとサブネット名に置き換えます。
az webapp vnet-integration add -g myresourcegroup -n mywebapp --vnet VNETName --subnet webappsubnetName
データベースに接続するための環境変数を構成する
コードを App Service にデプロイしたので、次のステップとして、アプリを Azure の Azure Database for MySQL フレキシブル サーバー インスタンスに接続します。 アプリ コードでは、さまざまな環境変数でデータベース情報を検索することを想定しています。 App Service に環境変数を設定するには、az webapp config appsettings set
コマンドを使って "アプリ設定" を作成します。
az webapp config appsettings set --settings DBHOST="<mysql-server-name>.mysql.database.azure.com" DBNAME="flexibleserverdb" DBUSER="<username>" DBPASS="<password>"
- <mysql-server-name>、<username>、<password> を、新しく作成される Azure Database for MySQL フレキシブル サーバー インスタンスのコマンドのものに置き換えます。
- <username> と <password> を、コマンドによって生成される資格情報に置き換えます。
- リソース グループとアプリ名は、 .azure/config ファイル内のキャッシュされた値から取得されます。
- コマンドによって、DBHOST、DBNAME、DBUSER、および DBPASS という名前の設定が作成されます。 アプリケーション コードでデータベース情報に別の名前を使用している場合は、コードで使用されている名前をアプリ設定で使用します。
仮想ネットワーク内からの送信接続をすべて許可するように Web アプリを構成します。
az webapp config set --name mywebapp --resource-group myresourcesourcegroup --generic-configurations '{"vnetRouteAllEnabled": true}'
異なる仮想ネットワーク内の App Service Web アプリと Azure Database for MySQL フレキシブル サーバー インスタンス
異なる仮想ネットワーク (VNet) に App Service アプリと Azure Database for MySQL フレキシブル サーバー インスタンスを作成した場合は、次の 2 つのステップを実行してシームレスな接続を確立する必要があります。
- VNet ピアリングを使用して 2 つの VNet を接続します (ローカルまたはグローバル)。 「仮想ネットワーク ピアリングを使用した仮想ネットワークの接続」ガイドを参照してください。
- 仮想ネットワーク リンクを使って、Azure Database for MySQL フレキシブル サーバー インスタンスのプライベート DNS ゾーンを Web アプリの VNet にリンクします。 Azure portal または Azure CLI を使って、VNet に Azure Database for MySQL フレキシブル サーバー インスタンスを作成する場合は、指定したサーバー名を使って、新しいプライベート DNS ゾーンがサブスクリプションに自動プロビジョニングされます。 Azure Database for MySQL フレキシブル サーバー インスタンスのプライベート DNS ゾーンに移動し、プライベート DNS ゾーン を仮想ネットワークにリンクする方法に関するセクションのガイドに従って、仮想ネットワーク リンクを設定します。
リソースをクリーンアップする
以下のコマンドを使用して、チュートリアルで作成したすべてのリソースをクリーンアップします。 このコマンドによって、このリソース グループ内にあるすべてのリソースが削除されます。
az group delete -n myresourcegroup