Fornitura locale Azure
.NET .NET Aspire semplifica lo sviluppo di app nativi per il cloud localizzato con il suo convincente modello di hosting delle app. Questo modello consente di eseguire l'app in locale con la stessa configurazione e i servizi di Azure. Questo articolo illustra come effettuare il provisioning di risorse Azure dall'ambiente di sviluppo locale tramite l'host dell'app .NET.NET Aspire.
Nota
Per essere chiari, viene effettuato il provisioning delle risorse in Azure, ma il processo di provisioning viene avviato dall'ambiente di sviluppo locale. Per ottimizzare l'esperienza di sviluppo locale, è consigliabile usare l'emulatore o i contenitori, se disponibili. Per ulteriori informazioni, vedere l'esperienza tipica del sviluppatore.
Requisiti
Questo articolo presuppone che l'utente abbia un account e una sottoscrizione Azure. Se non hai un account Azure, puoi crearne uno gratuito su Azure Account gratuito. Per il corretto funzionamento della funzionalità di provisioning, è necessario eseguire l'autenticazione con Azure. Assicurati di avere installato il Azure Developer CLI. Inoltre, è necessario specificare alcuni valori di configurazione in modo che la logica di provisioning possa creare risorse per conto dell'utente.
API di provisioning dell'host dell'app
L'host dell'app fornisce un set di API per esprimere le risorse Azure. Queste API sono disponibili come metodi di estensione nelle librerie di hosting .NET AspireAzure, che estendono l'interfaccia IDistributedApplicationBuilder. Quando aggiungi risorse Azure al tuo host dell'app, esse aggiungono implicitamente la funzionalità di provisioning appropriata. In altre parole, non è necessario chiamare direttamente le API di provisioning.
All'avvio dell'host dell'app, viene eseguita la logica di approvvigionamento seguente:
- La sezione di configurazione
Azure
viene convalidata. - Quando l'output del dashboard e dell'host dell'app è invalido, fornisce indicazioni su ciò che manca. Per ulteriori informazioni, vedere Suggerimenti per i valori di configurazione mancanti.
- Quando le risorse Azure valide vengono fornite in modo condizionale:
- Se non esiste una distribuzione Azure per una determinata risorsa, viene creata e configurata come distribuzione.
- La configurazione di questa distribuzione è contrassegnata con un checksum per consentire il provisioning delle risorse solo quando necessario.
Usare le risorse di Azure esistenti
L'host dell'applicazione gestisce automaticamente il provisioning delle risorse Azure. La prima volta che viene eseguito l'host dell'app, configura le risorse specificate nell'host dell'app. Le esecuzioni successive non effettuano di nuovo il provisioning delle risorse a meno che la configurazione dell'host dell'app non venga modificata.
Se hai già eseguito il provisioning delle risorse Azure al di fuori dell'host dell'applicazione e desideri utilizzarle, puoi fornire la stringa di connessione con l'API AddConnectionString come mostrato nel seguente esempio di Azure Key Vault:
// Service registration
var secrets = builder.ExecutionContext.IsPublishMode
? builder.AddAzureKeyVault("secrets")
: builder.AddConnectionString("secrets");
// Service consumption
builder.AddProject<Projects.ExampleProject>()
.WithReference(secrets)
Il frammento di codice precedente mostra come aggiungere un Azure Key Vault all'host dell'app. L'API AddAzureKeyVault viene usata per aggiungere l'Azure Key Vault all'host dell'app. L'API AddConnectionString
viene usata per fornire la stringa di connessione all'host dell'app.
In alternativa, per alcune risorse Azure, è possibile acconsentire esplicitamente all'esecuzione come emulatore con l'API RunAsEmulator
. Questa API è disponibile per le integrazioni di archiviazione Azure Cosmos DB e Azure. Ad esempio, per eseguire AzureAzure Cosmos DB come emulatore, è possibile usare il frammento di codice seguente:
var cosmos = builder.AddAzureCosmosDB("cosmos")
.RunAsEmulator();
L'API RunAsEmulator configura una risorsa Azure Cosmos DB da emulare usando l'emulatore Azure Cosmos DB con l'API NoSQL.
.NET Aspire Azure integrazioni di hosting
Se stai utilizzando le risorse Azure nell'host della tua app, stai usando una o più delle integrazioni di hosting .NET AspireAzure. Queste librerie di hosting forniscono metodi di estensione all'interfaccia IDistributedApplicationBuilder per aggiungere risorse Azure all'host dell'app.
Configurazione
Quando si utilizzano le risorse Azure nell'ambiente di sviluppo locale, è necessario fornire i valori di configurazione richiesti. I valori di configurazione vengono specificati nella sezione Azure
:
-
SubscriptionId
: ID sottoscrizione Azure. -
AllowResourceGroupCreation
: valore booleano che indica se creare un nuovo gruppo di risorse. -
ResourceGroup
: nome del gruppo di risorse da usare. -
Location
: area di Azure da usare.
Si consideri il seguente esempio di configurazione appsettings.json:
{
"Azure": {
"SubscriptionId": "<Your subscription id>",
"AllowResourceGroupCreation": true,
"ResourceGroup": "<Valid resource group name>",
"Location": "<Valid Azure location>"
}
}
Importante
È consigliabile archiviare questi valori come segreti dell'app. Per altre informazioni, vedere Gestire i segreti delle app.
Dopo aver configurato i valori necessari, è possibile avviare la configurazione delle risorse Azure nell'ambiente di sviluppo locale.
Azure archivio credenziali di provisioning
L'host dell'app .NET Aspire utilizza un archivio di credenziali per l'autenticazione e autorizzazione delle risorse Azure. A seconda della tua sottoscrizione, potrebbe essere necessario disporre dell'archivio corretto delle credenziali per gli scenari di provisioning multi-tenant.
Con il pacchetto NuGet 📦Aspire.Hosting.Azure installato, e se l'host dell'app dipende dalle risorse di Azure, l'archivio credenziali predefinito Azure si basa sul DefaultAzureCredential. Per modificare questo comportamento, è possibile impostare il valore dell'archivio credenziali nel file appsettings.json, come illustrato nell'esempio seguente:
{
"Azure": {
"CredentialSource": "AzureCli"
}
}
Come per tutte le impostazioni basate sulla configurazione , è possibile configurare queste impostazioni con provider alternativi, ad esempio segreti utente o variabili di ambiente. Il valore Azure:CredentialSource
può essere impostato su uno dei valori seguenti:
-
AzureCli
: delega al AzureCliCredential. -
AzurePowerShell
: Delega al AzurePowerShellCredential. -
VisualStudio
: si delega a VisualStudioCredential. -
VisualStudioCode
: delega al VisualStudioCodeCredential. -
AzureDeveloperCli
: delega al AzureDeveloperCliCredential. -
InteractiveBrowser
: Delega al InteractiveBrowserCredential.
Consiglio
Per altre informazioni sull'autenticazione e l'autorizzazione di Azure SDK, vedere catene di credenziali nella libreria delle identità di Azure per .NET.
Supporto alla strumentazione
In Visual Studioè possibile usare Servizi connessi per configurare le impostazioni di provisioning Azure predefinite. Selezionare il progetto host dell'app, fare clic destro sul nodo Servizi connessi e selezionare Azure Impostazioni di provisioning delle risorse:
Verrà aperta una finestra di dialogo in cui è possibile configurare le impostazioni di provisioning Azure, come illustrato nello screenshot seguente:
Suggerimenti per i valori di configurazione mancanti
Quando manca la sezione di configurazione Azure
, contiene valori mancanti o non è valido, il dashboard .NET.NET Aspire fornisce suggerimenti utili. Si consideri, ad esempio, un host di app a cui manca il valore di configurazione SubscriptionId
che tenta di utilizzare una risorsa Azure Key Vault. La pagina risorse indica lo stato come assenza di configurazione della sottoscrizione:
Inoltre, i log della console visualizzano queste informazioni, considerare lo screenshot seguente:
Limitazioni note
Dopo il provisioning delle risorse Azure in questo modo, è necessario pulire manualmente le risorse nel portale di Azure perché .NET Aspire non fornisce un meccanismo predefinito per eliminare le risorse Azure. Il modo più semplice per ottenere questo risultato consiste nell'eliminare il gruppo di risorse configurato. Questa operazione può essere eseguita nel portale Azure o utilizzando la CLI di Azure.
az group delete --name <ResourceGroupName>
Sostituire <ResourceGroupName>
con il nome del gruppo di risorse da eliminare. Per altre informazioni, vedere az group delete.