Condividi tramite


integrazione di funzioni .NET AspireAzure (anteprima)

includono:integrazione dell'hosting non Client integrazione

Importante

L'integrazione di funzioni .NET AspireAzure è attualmente in anteprima ed è soggetta a modifiche.

Azure Funzioni è una soluzione serverless che consente di scrivere meno codice, mantenere meno infrastruttura e risparmiare sui costi. L'integrazione delle funzioni .NET AspireAzure consente di sviluppare, eseguire il debug e orchestrare un progetto Azure Funzioni .NET come parte dell'host dell'app.

Si prevede che tu abbia installato gli strumenti Azure necessari.

Scenari supportati

L'integrazione delle Funzioni .NET AspireAzure supporta diversi scenari chiave. Questa sezione descrive gli scenari e fornisce informazioni dettagliate relative all'implementazione di ogni approccio.

Attivatori supportati

La tabella seguente elenca i trigger supportati per le funzioni di Azure nell'integrazione .NET Aspire:

Grilletto Attributo Dettagli
trigger Azure Event Hubs EventHubTrigger 📦 Aspire.Hosting.Azure.EventHubs
Azure Service Bus trigger ServiceBusTrigger 📦 Aspire.Hosting.Azure.ServiceBus
trigger blob di archiviazione Azure BlobTrigger 📦 Aspire.Hosting.Azure.Archiviazione
Azure Storage Queues trigger QueueTrigger 📦 Aspire.Hosting.Azure.Storage
Trigger HTTP HttpTrigger Supportato senza dipendenze di risorse aggiuntive.
Attivazione timer TimerTrigger Supportato senza dipendenze di risorse aggiuntive, si basa sull'archiviazione host implicita.

Importante

Altri trigger e associazioni delle funzioni di Azure non sono attualmente supportati nell'integrazione delle funzioni di .NET AspireeAzure.

Distribuzione

Attualmente, la distribuzione è supportata solo per i container in Azure Container Apps (ACA) usando la funzione di pubblicazione dei container dell'SDK in Microsoft.Azure.Functions.Worker.Sdk. Questa metodologia di distribuzione attualmente non supporta la scalabilità automatica basata su KEDA.

Configurare gli endpoint HTTP esterni

Per rendere accessibili pubblicamente i trigger HTTP, chiamare l'API WithExternalHttpEndpoints su AzureFunctionsProjectResource. Per ulteriori informazioni, consulta la risorsa funzioni Aggiungi Azure.

vincoli di progetto Azure Function

L'integrazione di funzioni .NET AspireAzure presenta i vincoli di progetto seguenti:

Se si verificano problemi con il progetto Azure Funzioni, ad esempio:

Non è disponibile alcun runtime di Funzioni corrispondente alla versione specificata nel progetto

In Visual Studioprovare a verificare la presenza di un aggiornamento negli strumenti di funzioni di Azure. Aprire la finestra di dialogo Opzioni, passare a Progetti e Soluzionie quindi selezionare FunzioniAzure. Selezionare il pulsante Verifica aggiornamenti per assicurarsi di avere la versione più recente degli strumenti Funzioni di Azure.

Visual Studio: opzioni/progetti e soluzioni/funzioni Azure.

Integrazione di hosting

Le funzioni Azure che ospitano l'integrazione modellano una risorsa funzioni Azure come tipo AzureFunctionsProjectResource (sottotipo di ProjectResource). Per accedere a questo tipo e agli API che consentono di aggiungerlo al progetto host, installare il pacchetto NuGet 📦Aspire.Hosting.Azure.Functions.

dotnet add package Aspire.Hosting.Azure.Functions --prerelease

Per altre informazioni, vedere dotnet add package o gestire le dipendenze del pacchetto nelle applicazioni .NET.

Aggiungere Azure risorsa funzioni

Nel progetto host dell'app, chiamare AddAzureFunctionsProject sull'istanza di builder per aggiungere una risorsa Functions Azure.

var builder = DistributedApplication.CreateBuilder(args);

var functions = builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
                       .WithExternalHttpEndpoints();

builder.AddProject<Projects.ExampleProject>()
       .WithReference(functions)
       .WaitFor(functions);

// After adding all resources, run the app...

Quando .NET Aspire aggiunge una risorsa di progetto alle funzioni Azure nell'host dell'app, come illustrato nell'esempio precedente, altre risorse del progetto possono fare riferimento alla risorsa functions. Il metodo WithReference configura una connessione nel ExampleProject denominato "functions". Se la risorsa Azure fosse stata distribuita ed avesse esposto un trigger HTTP, l'endpoint sarebbe esterno per via della chiamata a WithExternalHttpEndpoints. Per altre informazioni, vedere Risorse di riferimento.

Aggiungere la risorsa delle funzioni Azure con lo storage dell'host

Se si vuole modificare l'account di archiviazione host predefinito usato dall'host Funzioni Azure, chiamare il metodo WithHostStorage nella risorsa del progetto Funzioni Azure:

var builder = DistributedApplication.CreateBuilder(args);

var storage = builder.AddAzureStorage("storage")
                     .RunAsEmulator();

var functions = builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
                       .WithHostStorage(storage);

builder.AddProject<Projects.ExampleProject>()
       .WithReference(functions)
       .WaitFor(functions);

// After adding all resources, run the app...

Il codice precedente si basa sul pacchetto NuGet 📦Aspire.Hosting.Azure.Storage per aggiungere una risorsa di Storage Azure che viene eseguita come emulatore. La risorsa storage viene quindi passata all'API WithHostStorage, impostando in maniera esplicita l'archiviazione host sulla risorsa emulata.

Nota

Se non si usa l'archiviazione host implicita, è necessario assegnare manualmente il ruolo StorageAccountContributor alla risorsa per le istanze distribuite. Questo ruolo viene assegnato automaticamente per lo spazio di archiviazione host generato implicitamente.

Risorse di riferimento in Azure Functions

Per fare riferimento ad altre risorse Azure in un progetto Azure Functions, concatenare una chiamata a WithReference sulla risorsa del progetto Azure Functions e fornire la risorsa di riferimento:

var builder = DistributedApplication.CreateBuilder(args);

var storage = builder.AddAzureStorage("storage").RunAsEmulator();
var blobs = storage.AddBlobs("blobs");

builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
       .WithHostStorage(storage)
       .WithReference(blobs);

builder.Build().Run();

Il codice precedente aggiunge una risorsa di archiviazione Azure all'host dell'app e vi fa riferimento nel progetto Functions di Azure. La risorsa blobs viene aggiunta alla risorsa storage e quindi fa riferimento alla risorsa functions. Le informazioni di connessione necessarie per connettersi alla risorsa blobs vengono inserite automaticamente nel progetto Functions di Azure e consentono al progetto di definire un BlobTrigger che si basa su una risorsa blobs.

Vedere anche