Lokale Azure Bereitstellung
.NET .NET Aspire vereinfacht die entwicklung lokaler cloudeigener Apps mit seinem überzeugenden App-Hostmodell. Mit diesem Modell können Sie Ihre App lokal mit der gleichen Konfiguration und diensten wie in Azureausführen. In diesem Artikel erfahren Sie, wie Sie Azure-Ressourcen aus Ihrer lokalen Entwicklungsumgebung über den .NET.NET Aspire App-Hostbereitstellen.
Anmerkung
Zur Klarstellung: Ressourcen werden in Azurebereitgestellt, der Bereitstellungsprozess wird jedoch von Ihrer lokalen Entwicklungsumgebung aus initiiert. Um Ihre lokale Entwicklungserfahrung zu optimieren, sollten Sie, wenn verfügbar, einen Emulator oder einen Container verwenden. Weitere Informationen finden Sie unter typische Entwicklererfahrung.
Anforderungen
In diesem Artikel wird davon ausgegangen, dass Sie über ein Azure Konto und ein Abonnement verfügen. Wenn Sie nicht über ein Azure-Konto verfügen, können Sie eines kostenlos bei Azure Free Accounterstellen. Damit die Bereitstellungsfunktionalität ordnungsgemäß funktioniert, müssen Sie mit Azureauthentifiziert werden. Stellen Sie sicher, dass die Azure Developer CLI installiert ist. Darüber hinaus müssen Sie einige Konfigurationswerte bereitstellen, damit die Bereitstellungslogik Ressourcen in Ihrem Auftrag erstellen kann.
APIs zur Bereitstellung von App-Hosts
Der App-Host stellt eine Reihe von APIs bereit, um Azure-Ressourcen darzustellen. Diese APIs sind als Erweiterungsmethoden in .NET AspireAzure Hostingbibliotheken verfügbar und erweitern die IDistributedApplicationBuilder-Schnittstelle. Wenn Sie Ihrem App-Host Azure Ressourcen hinzufügen, fügen diese implizit die entsprechenden Bereitstellungsfunktionen hinzu. Mit anderen Worten, Sie müssen keine Bereitstellungs-APIs direkt aufrufen.
Wenn der App-Host gestartet wird, wird die folgende Bereitstellungslogik ausgeführt:
- Der
Azure
Konfigurationsabschnitt wurde validiert. - Wenn die Dashboard- und App-Hostausgabe ungültig ist, gibt es Hinweise darauf, was fehlt. Weitere Informationen finden Sie unter Hinweis auf fehlenden Konfigurationswert.
- Wenn eine gültige Azure Ressource unter bestimmten Bedingungen bereitgestellt wird:
- Wenn eine Azure Bereitstellung für eine bestimmte Ressource nicht vorhanden ist, wird sie als Bereitstellung erstellt und konfiguriert.
- Die Konfiguration der genannten Bereitstellung ist mit einer Prüfsumme versehen, die dazu dient, Ressourcen nur bei Bedarf bereitzustellen.
Verwenden vorhandener Azure-Ressourcen
Die Bereitstellung von Azure-Ressourcen wird vom App-Host automatisch verwaltet. Wenn der App-Host zum ersten Mal ausgeführt wird, stellt er die im App-Host angegebenen Ressourcen bereit. Nachfolgende Ausführungsläufe stellen die Ressourcen nicht erneut bereit, es sei denn, die App-Hostkonfiguration ändert sich.
Wenn Sie bereits Azure-Ressourcen außerhalb des App-Hosts bereitgestellt haben und diese verwenden möchten, können Sie die Verbindungszeichenfolge mit der AddConnectionString-API bereitstellen, wie im folgenden Azure Key Vault-Beispiel gezeigt.
// Service registration
var secrets = builder.ExecutionContext.IsPublishMode
? builder.AddAzureKeyVault("secrets")
: builder.AddConnectionString("secrets");
// Service consumption
builder.AddProject<Projects.ExampleProject>()
.WithReference(secrets)
Der vorangehende Codeausschnitt zeigt, wie Sie dem App-Host ein Azure Key Vault hinzufügen. Die AddAzureKeyVault-API wird verwendet, um die Azure Key Vault dem App-Host hinzuzufügen. Die AddConnectionString
-API wird verwendet, um die Verbindungszeichenfolge dem App-Host zur Verfügung zu stellen.
Alternativ können Sie sich dafür entscheiden, einige Azure-Ressourcen als Emulatoren mit der RunAsEmulator
-API auszuführen. Diese API ist für Azure Cosmos DB- und Azure Storage Integrationen verfügbar. Um beispielsweise AzureAzure Cosmos DB als Emulator auszuführen, können Sie den folgenden Codeausschnitt verwenden:
var cosmos = builder.AddAzureCosmosDB("cosmos")
.RunAsEmulator();
Die RunAsEmulator-API konfiguriert eine Azure Cosmos DB Ressource, die mithilfe des Azure Cosmos DB Emulators mit der NoSQL-API emuliert werden soll.
.NET Aspire Azure Hostingintegrationen
Wenn Sie Azure-Ressourcen auf Ihrer App-Hosting-Plattform verwenden, nutzen Sie eine oder mehrere der .NET AspireAzure Hosting-Integrationen. Diese Hostingbibliotheken bieten Erweiterungsmethoden für die IDistributedApplicationBuilder Schnittstelle, um Azure Ressourcen zu Ihrem App-Host hinzuzufügen.
Konfiguration
Wenn Sie Azure Ressourcen in Ihrer lokalen Entwicklungsumgebung verwenden, müssen Sie die erforderlichen Konfigurationswerte angeben. Die Konfigurationswerte sind im Abschnitt Azure
angegeben.
-
SubscriptionId
: Die Azure Abonnement-Kennung. -
AllowResourceGroupCreation
: Ein boolescher Wert, der angibt, ob eine neue Ressourcengruppe erstellt werden soll. -
ResourceGroup
: Der Name der zu verwendenden Ressourcengruppe. -
Location
: Die zu verwendende Azure Region.
Betrachten Sie das folgende Beispiel appsettings.json Konfiguration:
{
"Azure": {
"SubscriptionId": "<Your subscription id>",
"AllowResourceGroupCreation": true,
"ResourceGroup": "<Valid resource group name>",
"Location": "<Valid Azure location>"
}
}
Wichtig
Es wird empfohlen, diese Werte als geheime App-Schlüssel zu speichern. Weitere Informationen finden Sie unter Verwalten von geheimen App-Schlüsseln.
Nachdem Sie die erforderlichen Werte konfiguriert haben, können Sie mit der Bereitstellung von Azure-Ressourcen in Ihrer lokalen Entwicklungsumgebung beginnen.
Azure Bereitstellen des Anmeldeinformationsspeichers
Der .NET Aspire App-Host verwendet einen Anmeldeinformationsspeicher für die Azure Ressourcenauthentifizierung und Autorisierung. Je nach Abonnement kann der richtige Anmeldedatenspeicher für Bereitstellungsszenarien mit mehreren Mandanten erforderlich sein.
Mit dem installierten 📦Aspire.Hosting.Azure NuGet-Paket und falls Ihr App-Host von Azure-Ressourcen abhängt, basiert der standardmäßige Azure-Anmeldeinformationsspeicher auf dem DefaultAzureCredential. Um dieses Verhalten zu ändern, können Sie den Wert des Anmeldeinformationsspeichers in der datei appsettings.json festlegen, wie im folgenden Beispiel gezeigt:
{
"Azure": {
"CredentialSource": "AzureCli"
}
}
Wie bei allen konfigurationsbasierten Einstellungenkönnen Sie diese mit alternativen Anbietern konfigurieren, z. B. Benutzergeheimnisse oder Umgebungsvariablen. Der wert Azure:CredentialSource
kann auf einen der folgenden Werte festgelegt werden:
-
AzureCli
: Wird an die AzureCliCredentialdelegiert. -
AzurePowerShell
: Wird an die AzurePowerShellCredentialdelegiert. -
VisualStudio
: delegiert an die VisualStudioCredential. -
VisualStudioCode
: Delegiert an die VisualStudioCodeCredential. -
AzureDeveloperCli
: Überträgt Aufgaben an die AzureDeveloperCliCredential. -
InteractiveBrowser
: Delegiert an InteractiveBrowserCredential.
Trinkgeld
Weitere Informationen zur Azure SDK-Authentifizierung und -Autorisierung finden Sie unter Anmeldeinformationsketten in der Azure Identitätsbibliothek für .NET.
Werkzeugunterstützung
In Visual Studiokönnen Sie Verbunddienste verwenden, um die standardmäßigen Bereitstellungseinstellungen von Azure zu konfigurieren. Wählen Sie das App-Hostprojekt aus, klicken Sie mit der rechten Maustaste auf den Knoten Verbundene Dienste, und wählen Sie Azure Einstellungen zur Ressourcenbereitstellungaus:
Dadurch wird ein Dialogfeld geöffnet, in dem Sie die Azure Bereitstellungseinstellungen konfigurieren können, wie im folgenden Screenshot gezeigt:
Hinweise zu fehlenden Konfigurationswerten
Wenn der Azure
Konfigurationsabschnitt fehlt, fehlende Werte enthält oder ungültig ist, bietet das .NET.NET Aspire Dashboard nützliche Hinweise. Betrachten Sie beispielsweise einen App-Host, dem der SubscriptionId
-Konfigurationswert fehlt und der versucht, eine Azure Key Vault-Ressource zu verwenden. Die Seite Ressourcen gibt den Status als Fehlende Abonnementkonfigurationan:
Darüber hinaus werden diese Informationen ebenfalls in den Konsolenprotokollen angezeigt; berücksichtigen Sie den folgenden Screenshot.
Bekannte Einschränkungen
Nachdem Sie Azure-Ressourcen auf diese Weise bereitgestellt haben, müssen Sie die Ressourcen im Azure-Portal manuell bereinigen, da .NET Aspire keinen integrierten Mechanismus zum Löschen der Azure-Ressourcen bereitstellt. Am einfachsten können Sie dies erreichen, indem Sie die konfigurierte Ressourcengruppe löschen. Dies kann im Azure Portal oder mithilfe der Azure CLI erfolgen:
az group delete --name <ResourceGroupName>
Ersetzen Sie <ResourceGroupName>
durch den Namen der Ressourcengruppe, die Sie löschen möchten. Weitere Informationen finden Sie unter az group delete.