ローカル Azure プロビジョニング
.NET .NET Aspire は、魅力的なアプリ ホスト モデルを使用して、ローカルのクラウドネイティブ アプリ開発を簡略化します。 このモデルを使用すると、Azureと同じ構成とサービスを使用してアプリをローカルで実行できます。 この記事では、.NET.NET Aspire アプリ ホストを使用して、ローカル開発環境から Azure リソースをプロビジョニングする方法について説明します。
手記
明確にするために、リソースは Azureでプロビジョニングされますが、プロビジョニング プロセスはローカル開発環境から開始されます。 ローカル開発エクスペリエンスを最適化するには、エミュレーターまたはコンテナーを使用可能な場合に使用することを検討してください。 詳細については、「一般的な開発者エクスペリエンスの」を参照してください。
必要条件
この記事では、Azure アカウントとサブスクリプションがあることを前提としています。 Azure アカウントをお持ちでない場合は、Azure 無料アカウントで無料アカウントを作成できます。 プロビジョニング機能を正しく機能させるには、Azureで認証する必要があります。 Azure Developer CLI がインストールされていることを確認します。 さらに、プロビジョニング ロジックがユーザーに代わってリソースを作成できるように、いくつかの構成値を指定する必要があります。
アプリホストプロビジョニングAPI
アプリ ホストには、Azure リソースを表現するための一連の API が用意されています。 これらの API は、.NET AspireAzure ホスティング ライブラリの拡張メソッドとして使用でき、IDistributedApplicationBuilder インターフェイスを拡張します。 Azure リソースをアプリ ホストに追加すると、適切なプロビジョニング機能が暗黙的に追加されます。 つまり、プロビジョニング API を直接呼び出す必要はありません。
アプリ ホストが起動すると、次のプロビジョニング ロジックが実行されます。
-
Azure
構成セクションが検証されます。 - 無効な場合、ダッシュボードとアプリ ホストの出力には、不足している内容に関するヒントが表示されます。 詳細については、「不足している構成値のヒントを参照してください。
- 有効な Azure リソースが条件付きでプロビジョニングされる場合:
- 特定のリソースの Azure デプロイが存在しない場合は、デプロイとして作成および構成されます。
- 上記のデプロイの構成には、必要に応じてリソースのプロビジョニングのみをサポートするための手段としてチェックサムがスタンプされます。
既存の Azure リソースを使用する
アプリ ホストは、Azure リソースのプロビジョニングを自動的に管理します。 アプリ ホストを初めて実行すると、アプリ ホストで指定されたリソースがプロビジョニングされます。 以降の実行では、アプリ ホストの構成が変更されない限り、リソースは再びプロビジョニングされません。
アプリ ホストの外部 Azure リソースを既にプロビジョニングしていて、それらを使用する場合は、次の Azure Key Vault 例に示すように、AddConnectionString API を使用して接続文字列を指定できます。
// Service registration
var secrets = builder.ExecutionContext.IsPublishMode
? builder.AddAzureKeyVault("secrets")
: builder.AddConnectionString("secrets");
// Service consumption
builder.AddProject<Projects.ExampleProject>()
.WithReference(secrets)
上記のコード スニペットは、アプリ ホストに Azure Key Vault を追加する方法を示しています。
AddAzureKeyVault API は、アプリ ホストに Azure Key Vault を追加するために使用されます。
AddConnectionString
API は、接続文字列をアプリ ホストに提供するために使用されます。
または、一部の Azure リソースでは、RunAsEmulator
API を使用してエミュレーターとして実行することをオプトインできます。 この API は、Azure Cosmos DB および Azure ストレージ の統合に使用できます。 たとえば、エミュレーターとして AzureAzure Cosmos DB を実行するには、次のコード スニペットを使用できます。
var cosmos = builder.AddAzureCosmosDB("cosmos")
.RunAsEmulator();
RunAsEmulator API は、noSQL API を使用して Azure Cosmos DB エミュレーターを使用してエミュレートする Azure Cosmos DB リソースを構成します。
ホスティング統合(.NET AspireAzure)
アプリ ホストで Azure リソースを使用している場合は、1 つ以上の .NET AspireAzure ホスティング統合を使用。 これらのホスティング ライブラリは、IDistributedApplicationBuilder インターフェイスに拡張メソッドを提供し、Azure リソースをアプリ ホストに追加します。
構成
ローカル開発環境で Azure リソースを利用する場合は、必要な構成値を指定する必要があります。 構成値は、Azure
セクションで指定します。
-
SubscriptionId
: Azure サブスクリプション ID。 -
AllowResourceGroupCreation
: 新しいリソース グループを作成するかどうかを示すブール値。 -
ResourceGroup
: 使用するリソース グループの名前。 -
Location
: 使用する Azure リージョン。
次の構成例 appsettings.json 考えてみます。
{
"Azure": {
"SubscriptionId": "<Your subscription id>",
"AllowResourceGroupCreation": true,
"ResourceGroup": "<Valid resource group name>",
"Location": "<Valid Azure location>"
}
}
大切な
これらの値はアプリ シークレットとして格納することをお勧めします。 詳細については、「アプリ シークレットの管理」を参照してください。
必要な値を構成したら、ローカル開発環境で Azure リソースのプロビジョニングを開始できます。
Azure プロビジョニング資格情報ストア
.NET Aspire アプリ ホストは、リソースの認証と承認に資格情報ストア Azure 使用します。 サブスクリプションによっては、マルチテナント プロビジョニング シナリオに適切な資格情報ストアが必要になる場合があります。
📦 Aspireを使用してホスティングする NuGet パッケージAzure がインストールされ、アプリホストが Azure リソースに依存している場合、既定の Azure 資格情報ストアは DefaultAzureCredentialに依存します。 この動作を変更するには、次の例に示すように、appsettings.json ファイルで資格情報ストアの値を設定します。
{
"Azure": {
"CredentialSource": "AzureCli"
}
}
すべての Azure:CredentialSource
値は、次のいずれかの値に設定できます。
-
AzureCli
: AzureCliCredentialに委任します。 -
AzurePowerShell
は AzurePowerShellCredentialに委任します。 -
VisualStudio
: VisualStudioCredentialに委任します。 -
VisualStudioCode
: VisualStudioCodeCredentialに委任します。 -
AzureDeveloperCli
: AzureDeveloperCliCredentialに委任します。 -
InteractiveBrowser
: InteractiveBrowserCredentialに権限を委任します。
ヒント / チップ
ツールのサポート
Visual Studioでは、接続済みサービスを使用して、既定の Azure プロビジョニング設定を構成できます。 アプリ ホスト プロジェクトを選択し、
これにより、次のスクリーンショットに示すように、Azure プロビジョニング設定を構成できるダイアログが開きます。
不足している構成値のヒント
Azure
構成セクションが見つからない場合、欠損値がある場合、または無効な場合は、.NET.NET Aspire ダッシュボード 便利なヒントが提供されます。 たとえば、Azure Key Vault リソースを使用しようとしている SubscriptionId
構成値が不足しているアプリ ホストがあるとします。 [リソース] ページでは、[状態] が [不足しているサブスクリプション構成] であることが示されています。
さらに、コンソール ログにもこの情報が表示、次のスクリーンショットを検討してください。
既知の制限事項
この方法でリソース Azure プロビジョニングした後、Azure ポータルでリソースを手動でクリーンアップする必要があります。.NET Aspire には、Azure リソースを削除する組み込みメカニズムが用意されていないためです。 これを実現する最も簡単な方法は、構成されたリソース グループを削除することです。 これは、Azure ポータル で行うか、Azure CLI を使用して行うことができます。
az group delete --name <ResourceGroupName>
<ResourceGroupName>
を削除するリソース グループの名前に置き換えます。 詳細については、az group deleteを参照してください。
.NET Aspire