Azure Web App for Containers を使用してデータ API を開発する
Azure Web App for Containers を使ってデータ API を開発すると、最新のアプリケーション向けの堅牢でスケーラブルなソリューションが提供されます。 コンテナーと Azure のマネージド サービスの機能を使用することで、開発者は API を簡単に構築、デプロイ、管理でき、パフォーマンスと信頼性を実現できます。 このアプローチにより、開発プロセスが簡単になるだけでなく、アプリケーションの移植性とスケーラビリティが向上し、今日の最新のソフトウェア環境に最適な選択肢になります。
Web App for Containers を使用する利点を調べる
移植性: コンテナーはアプリケーションとその依存関係をカプセル化し、異なる環境間で一貫して実行されるようにします。 これにより、"自分のコンピューターでは動く" 問題が解消され、さまざまなプラットフォームへのデプロイがシームレスになります。
スケーラビリティ: Azure Web App for Containers では、オンデマンドに基づく自動スケーリングが可能です。 つまり、人が介入しなくても、データ API は負荷の増加に対処して、高可用性とパフォーマンスを確保できます。
管理の簡素化: Azure は、OS の修正プログラムの適用、負荷分散、容量のプロビジョニングなど、基になるインフラストラクチャを管理します。 これにより、開発者はサーバーの管理ではなく、コードの記述に集中できます。
Azure Web App for Containers を使用してデータ API を構築する
Azure Web App for Containers を使ってデータ API を構築するには、DAB イメージを含むコンテナー アプリを作成し、必要なアクセス許可を割り当て、Dockerfile を設定して、新しいイメージと資格情報でアプリを更新する必要があります。 最後に、ドメイン名を取得して、API をテストします。
始める前に、Azure サブスクリプションとリソース グループがあり、Azure Cloud Shell にアクセスできることを確認します。
コンテナー アプリを作成する
Azure Container Apps は、次の手順で作成できます。
az containerapp env createを使って、新しい Azure Container Apps 環境を作成します。az containerapp env create \ --resource-group $RESOURCE_GROUP_NAME \ --name $CONTAINER_ENV_NAME \ --logs-destination none \ --location $LOCATIONaz containerapp createコマンドを使用して、mcr.microsoft.com/azure-databases/data-api-builder DAB コンテナー イメージを使用して新しいコンテナー アプリを作成します。az containerapp create \ --resource-group $RESOURCE_GROUP_NAME \ --environment $CONTAINER_ENV_NAME \ --name $API_CONTAINER_NAME \ --image "mcr.microsoft.com/azure-databases/data-api-builder" \ --ingress "external" \ --target-port "5000" \ --system-assigned
その後、az identity show を使ってマネージド ID のプリンシパル識別子を取得できます。
アクセス許可の割り当て
システム割り当てマネージド ID に、Azure SQL からのデータの読み取りと、Azure Container Registry の読み取りと書き込みを行うためのアクセス許可を割り当てます。
az role assignment create \
--assignee $CURRENT_USER_PRINCIPAL_ID \
--role $ROLE_ID \
--scope $RESOURCE_GROUP_ID
Azure Container Registry インスタンスの作成
新しい Azure Container Registry インスタンスを作成するには、次のコマンドを実行します。
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--name <CONTAINER_REGISTRY_NAME> \
--sku "Standard" \
--location <LOCATION> \
--admin-enabled false
コンテナー イメージをビルドしてデプロイする
ビルド ステージでは、 mcr.microsoft.com/dotnet/sdk コンテナー イメージを使用します。
-
RUN dotnet tool install Microsoft.DataApiBuilder RUN dotnet tool run dab -- initを実行して、ソース データベースへの Azure SQL Database 接続用の構成ファイルを作成します。ソース データベース内のテーブルにマップするエンティティを作成します。
RUN dotnet tool run dab -- add Address --source "SalesLT.Address" --permissions "anonymous:read"構成ファイルを最終的な mcr.microsoft.com/azure-databases/data-api-builder コンテナー イメージ に コピーします。
az acr buildを実行してイメージをビルドし、Azure Container Registry タスクとしてイメージをビルドします。コンテナー レジストリを使うようにコンテナー アプリを構成します。
az containerapp registry set \ --name <container-app-name> \ --resource-group <resource-group-name> \ --server <container-registry-login-server> \ --username <container-registry-username> \ --password <container-registry-password>Azure SQL の接続文字列を使ってシークレットを作成します。
az containerapp secret set \ --name <container-app-name> \ --resource-group <resource-group-name> \ --secrets "SQLConnectionString=<your-sql-connection-string>"新しいカスタム コンテナー イメージと接続文字列でコンテナー アプリを更新します。
az containerapp update \ --name <container-app-name> \ --resource-group <resource-group-name> \ --image <container-registry-login-server>/<image-name>:<tag> \ --secrets "SQLConnectionString=<your-sql-connection-string>"コンテナー アプリの完全修飾ドメイン名を取得します。
az containerapp show \ --name <container-app-name> \ --resource-group <resource-group-name> \ --query "properties.configuration.ingress.fqdn" \ --output "tsv"
これらの手順では、新しいカスタム コンテナー イメージと資格情報で Azure コンテナー アプリを更新して、コンテナー アプリの完全修飾ドメイン名を取得します。
最後に、URL に移動し、API をテストして、すべてが正常に動作していることを確認します。
注
Azure CLI を使用してデータ API ビルダーを Azure Container Apps にデプロイする方法の詳細な手順については、「 チュートリアル: Azure CLI を使用してデータ API ビルダーを Azure Container Apps にデプロイする」を参照してください。