Delen via


Lokale Azure voorziening

.NET .NET Aspire vereenvoudigt de ontwikkeling van lokale cloudeigen apps met het aantrekkelijke app-hostmodel. Met dit model kunt u uw app lokaal uitvoeren met dezelfde configuratie en services als in Azure. In dit artikel leert u hoe u Azure resources kunt inrichten vanuit uw lokale ontwikkelomgeving via de .NET.NET Aspire app-host.

Notitie

Voor de duidelijkheid, resources worden voorzien in Azure, maar het voorzieningsproces start vanuit uw lokale ontwikkelomgeving. Als u uw lokale ontwikkelervaring wilt optimaliseren, kunt u overwegen om emulator of containers te gebruiken wanneer deze beschikbaar zijn. Zie Typische ontwikkelaarservaringvoor meer informatie.

Eisen

In dit artikel wordt ervan uitgegaan dat u een Azure account en abonnement hebt. Als u geen Azure account hebt, kunt u een gratis account maken op Azure gratis account. Om ervoor te zorgen dat de inrichtingsfunctionaliteit correct werkt, moet u geauthenticeerd zijn met Azure. Zorg ervoor dat u de Azure Developer CLI hebt geïnstalleerd. Daarnaast moet u enkele configuratiewaarden opgeven, zodat de inrichtingslogica namens u resources kan maken.

Api's voor het inrichten van app-hosts

De app-host biedt een set API's om Azure resources uit te drukken. Deze API's zijn beschikbaar als uitbreidingsmethoden in .NET AspireAzure hostingbibliotheken, waardoor de IDistributedApplicationBuilder-interface wordt uitgebreid. Wanneer u Azure resources toevoegt aan uw app-host, voegen ze impliciet de juiste inrichtingsfunctionaliteit toe. Met andere woorden, u hoeft geen inrichtings-API's rechtstreeks aan te roepen.

Wanneer de app-host wordt gestart, wordt de volgende inrichtingslogica uitgevoerd:

  1. De configuratiesectie Azure is gevalideerd.
  2. Wanneer de uitvoer van het dashboard en de app-host ongeldig is, geeft het aanwijzingen over wat er ontbreekt. Voor meer informatie, zie Hints voor ontbrekende configuratiewaarden.
  3. Wanneer geldige Azure resources voorwaardelijk worden ingericht:
    1. Als er geen Azure implementatie voor een bepaalde resource bestaat, wordt deze gemaakt en geconfigureerd als een implementatie.
    2. De configuratie van deze implementatie wordt gestempeld met een controlesom om ervoor te zorgen dat resources alleen worden geleverd wanneer dat nodig is.

Bestaande Azure-resources gebruiken

De app-host beheert automatisch de voorziening van Azure bronnen. De eerste keer dat de app-host wordt uitgevoerd, worden de resources die zijn opgegeven in de app-host, uitgevoerd. Bij volgende uitvoeringen worden de resources niet opnieuw ingericht, tenzij de configuratie van de app-host wordt gewijzigd.

Als u Azure resources al buiten de app-host hebt ingericht en deze wilt gebruiken, kunt u de verbindingsreeks opgeven met de AddConnectionString-API, zoals wordt weergegeven in het volgende Azure Key Vault voorbeeld:

// Service registration
var secrets = builder.ExecutionContext.IsPublishMode
    ? builder.AddAzureKeyVault("secrets")
    : builder.AddConnectionString("secrets");

// Service consumption
builder.AddProject<Projects.ExampleProject>()
       .WithReference(secrets)

In het voorgaande codefragment ziet u hoe u een Azure Key Vault toevoegt aan de app-host. De AddAzureKeyVault-API wordt gebruikt om de Azure Key Vault toe te voegen aan de app-host. De AddConnectionString-API wordt gebruikt om de verbindingsreeks aan de app-host op te geven.

Voor sommige Azure resources kunt u zich ook aanmelden om ze als emulator uit te voeren met de RunAsEmulator-API. Deze API is beschikbaar voor integraties van Azure Cosmos DB en Azure Storage. Als u bijvoorbeeld AzureAzure Cosmos DB als emulator wilt uitvoeren, kunt u het volgende codefragment gebruiken:

var cosmos = builder.AddAzureCosmosDB("cosmos")
                    .RunAsEmulator();

De RunAsEmulator-API configureert een Azure Cosmos DB resource die moet worden geëmuleerd met behulp van de Azure Cosmos DB-emulator met de NoSQL-API.

.NET Aspire Azure hosting-integraties

Als u Azure resources in uw app-host gebruikt, gebruikt u een of meer van de .NET AspireAzure hostingintegraties. Deze hostingbibliotheken bieden uitbreidingsmethoden voor de IDistributedApplicationBuilder-interface om Azure resources toe te voegen aan uw app-host.

Configuratie

Wanneer u Azure resources in uw lokale ontwikkelomgeving gebruikt, moet u de benodigde configuratiewaarden opgeven. Configuratiewaarden worden opgegeven in de sectie Azure:

  • SubscriptionId: de id van het Azure-abonnement.
  • AllowResourceGroupCreation: een Booleaanse waarde die aangeeft of een nieuwe resourcegroep moet worden gemaakt.
  • ResourceGroup: de naam van de resourcegroep die moet worden gebruikt.
  • Location: de Azure regio die moet worden gebruikt.

Bekijk het volgende voorbeeld appsettings.json configuratie:

{
  "Azure": {
    "SubscriptionId": "<Your subscription id>",
    "AllowResourceGroupCreation": true,
    "ResourceGroup": "<Valid resource group name>",
    "Location": "<Valid Azure location>"
  }
}

Belangrijk

Het is raadzaam om deze waarden op te slaan als app-geheimen. Zie App-geheimen beherenvoor meer informatie.

Nadat u de benodigde waarden hebt geconfigureerd, kunt u beginnen met het inrichten van Azure resources in uw lokale ontwikkelomgeving.

Azure referentiearchief inrichten

De .NET Aspire-app-host maakt gebruik van een referentieopslag voor Azure-resourceauthenticatie en -autorisatie. Afhankelijk van uw abonnement is mogelijk het juiste referentiearchief nodig voor scenario's met meerdere tenants.

Met het 📦Aspire.Hosting.Azure NuGet-pakket geïnstalleerd en als uw app-host afhankelijk is van Azure bronnen, is de standaard Azure referentiesleutel afhankelijk van de DefaultAzureCredential. Als u dit gedrag wilt wijzigen, kunt u de waarde voor de referentie-opslag instellen in het bestand appsettings.json, zoals wordt weergegeven in het volgende voorbeeld:

{
  "Azure": {
    "CredentialSource": "AzureCli"
  }
}

Net als bij alle op configuratie gebaseerde instellingen, kunt u deze configureren met alternatieve providers, zoals gebruikersgeheimen of omgevingsvariabelen. De Azure:CredentialSource waarde kan worden ingesteld op een van de volgende waarden:

Tip

Voor meer informatie over authenticatie en autorisatie in de Azure SDK, zie Referentieketens in de Azure Identiteitsbibliotheek voor .NET.

Ondersteuning voor hulpprogramma's

In Visual Studiokunt u Connected Services gebruiken om de standaardvoorzieningsinstellingen voor Azure te configureren. Selecteer het app-hostproject, klik met de rechtermuisknop op het knooppunt Connected Services en selecteer Azure Instellingen voor het inrichten van resources:

Visual Studio 2022: .NET Aspire App Host project, menu van Verbonden services.

Hiermee opent u een dialoogvenster waarin u de Azure inrichtingsinstellingen kunt configureren, zoals wordt weergegeven in de volgende schermopname:

Visual Studio 2022: Azure dialoogvenster voor het configureren van resourcevoorzieningen.

Hints voor ontbrekende configuratiewaarden

Wanneer de Azure configuratiesectie ontbreekt, ontbrekende waarden bevat of ongeldig is, biedt het .NET.NET Aspire dashboard nuttige hints. Denk bijvoorbeeld aan een app-host waarvoor de SubscriptionId configuratiewaarde ontbreekt die een Azure Key Vault resource probeert te gebruiken. De pagina Resources geeft de status aan als ontbrekende abonnementsconfiguratie:

.NET.NET Aspire dashboard: ontbrekende abonnementsconfiguratie.

Bovendien geven de logboeken van Console deze informatie weer, bekijk de volgende schermopname:

.NET.NET Aspire dashboard: Consolelogboeken, ontbrekende abonnementsconfiguratie.

Bekende beperkingen

Nadat u Azure resources op deze manier hebt ingericht, moet u de resources handmatig opschonen in de Azure-portal, omdat .NET Aspire geen ingebouwd mechanisme biedt om Azure resources te verwijderen. De eenvoudigste manier om dit te bereiken is door de geconfigureerde resourcegroep te verwijderen. U kunt dit doen in de Azure portal of met behulp van de Azure CLI:

az group delete --name <ResourceGroupName>

Vervang <ResourceGroupName> door de naam van de resourcegroep die u wilt verwijderen. Zie az group deletevoor meer informatie.