Condividi tramite


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:

  1. La sezione di configurazione Azure viene convalidata.
  2. 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.
  3. Quando le risorse Azure valide vengono fornite in modo condizionale:
    1. Se non esiste una distribuzione Azure per una determinata risorsa, viene creata e configurata come distribuzione.
    2. 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:

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:

Visual Studio 2022: .NET Aspire progetto Host dell'app, menu contestuale Servizi connessi.

Verrà aperta una finestra di dialogo in cui è possibile configurare le impostazioni di provisioning Azure, come illustrato nello screenshot seguente:

Visual Studio 2022: finestra di dialogo delle Impostazioni di Configurazione delle Risorse Azure.

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:

.NET.NET Aspire dashboard: configurazione della sottoscrizione mancante.

Inoltre, i log della console visualizzano queste informazioni, considerare lo screenshot seguente:

.NET.NET Aspire dashboard: log della console, configurazione della sottoscrizione mancante.

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.