Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Inkluderar: Värdintegrering ingår Endast värdintegrering –  integrering ingår inte
Viktig
Aspire Azure Functions-integreringen är för närvarande i förhandsversion och kan komma att ändras.
Azure Functions är en serverlös lösning som gör att du kan skriva mindre kod, underhålla mindre infrastruktur och spara på kostnaderna. Med AspireAzure Functions-integreringen kan du utveckla, felsöka och orkestrera ett Azure Functions-projekt .NET som en del av AppHost.
Det förväntas att du har installerat de nödvändiga Azure verktygen:
Scenarier som stöds
Integreringen AspireAzure Functions har flera viktiga scenarier som stöds. Det här avsnittet beskriver scenarierna och innehåller information om implementeringen av varje metod.
Utlösare som stöds
I följande tabell visas de utlösare som stöds för Azure Functions i Aspire integrering:
| Utlösa | Attribut | Detaljer | 
|---|---|---|
| Azure Event Hubs utlösare | EventHubTrigger | 📦 Aspire. Hosting.Azure. EventHubs | 
| Azure Service Bus utlösare | ServiceBusTrigger | 📦 Aspire. Hosting.Azure. ServiceBus | 
| Azure Storage Blobs-utlösare | BlobTrigger | 📦 Aspire. Gästfrihet.Azure. Lagring | 
| Azure Storage Queues utlösare | QueueTrigger | 📦 Aspire. Gästfrihet.Azure. Lagring | 
| Azure CosmosDB-utlösare | CosmosDbTrigger | 📦 Aspire. Hosting.Azure. CosmosDB | 
| HTTP-utlösare | HttpTrigger | Stöds utan ytterligare resursberoenden. | 
| Timer-utlösare | TimerTrigger | Stöds utan ytterligare resursberoenden – förlitar sig på implicit värdlagring. | 
Viktig
Andra Azure Functions-utlösare och bindningar stöds för närvarande inte i AspireAzure Functions-integreringen.
Utplacering
För närvarande stöds distribution endast till containrar på Azure Container Apps (ACA) med hjälp av SDK-containerpubliceringsfunktionen i Microsoft.Azure.Functions.Worker.Sdk. Den här distributionsmetoden stöder för närvarande inte KEDA-baserad autoskalning.
Konfigurera externa HTTP-slutpunkter
Om du vill göra HTTP-utlösare offentligt tillgängliga anropar du WithExternalHttpEndpoints-API:et på AzureFunctionsProjectResource. Mer information finns i Lägg till Azure Functions-resurs.
projektbegränsningar för Azure-funktion
Integreringen AspireAzure Functions har följande projektbegränsningar:
- Du måste rikta .NET 8.0 eller senare.
- Du måste använda en .NET 9 SDK.
- Det stöder för närvarande endast .NET arbetare med isolerad arbetsmodell.
- Kräver följande NuGet-paket: - 
              
              📦 Microsoft.Azure. Functions.Worker: Använd FunctionsApplicationBuilder.
- 
              
              📦 Microsoft.Azure. Functions.Worker.Sdk: Lägger till stöd för dotnet runochazd publish.
- 📦 Microsoft.Azure. Functions.Http.AspNetCore: Lägger till API:er som stöder HTTP-utlösare.
 
- 
              
              📦 Microsoft.Azure. Functions.Worker: Använd 
Om du stöter på problem med projektet Azure Functions, till exempel:
Det finns ingen Functions-körning tillgänglig som matchar den version som anges i projektet
I Visual Studioprovar du att söka efter en uppdatering av Azure Functions-verktygen. Öppna dialogrutan Alternativ, gå till Projekt och lösningaroch välj sedan Azure Functions. Välj knappen Sök efter uppdateringar för att se till att du har den senaste versionen av Azure Functions-verktyget:
              
               
              
              
            
Värdintegrering
Azure Functions, som värd för integration, modellerar en Azure Functions-resurs som AzureFunctionsProjectResource (undertyp av ProjectResource). Om du vill komma åt den här typen och API:er som gör att du kan lägga till den i ditt AppHost-projekt installerar du 📦Aspire. Hosting.Azure. Functions NuGet-paket.
dotnet add package Aspire.Hosting.Azure.Functions --prerelease
Mer information finns i dotnet add package eller Hantera paketberoenden i .NET applikationer.
Lägg till Azure Functions-resurs
I Ditt AppHost-projekt anropar du AddAzureFunctionsProject instansen builder för att lägga till en Azure Functions-resurs:
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...
När Aspire du lägger till en Azure Functions-projektresurs kan AppHost, som du ser i föregående exempel, referera till resursen functions av andra projektresurser. Metoden WithReference konfigurerar en anslutning i ExampleProject med namnet "functions". Om den Azure resursen distribuerades och den exponerade en HTTP-utlösare skulle dess slutpunkt vara extern på grund av anropet till WithExternalHttpEndpoints. Mer information finns i Referensresurser.
Lägga till Azure Functions-resurs med värdlagring
Om du vill ändra standardvärdlagringskontot som Azure Functions värd använder anropar du metoden WithHostStorage på Azure Functions projektresursen:
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...
Föregående kod förlitar sig på 📦Aspire.Hosting.Azure.Storage NuGet-paketet för att lägga till en Azure Storage-resurs som körs som en emulator. Den storage resursen skickas sedan till WithHostStorage-API:et och anger uttryckligen värdlagringen till den emulerade resursen.
Obs
Om du inte använder den implicita värdlagringen måste du manuellt tilldela den StorageAccountContributor rollen till resursen för distribuerade instanser. Den implicita värdlagringen konfigureras automatiskt med följande roller för att stödja maximal samverkan med alla scenarier:
- StorageBuiltInRole.StorageBlobDataContributor
- StorageBuiltInRole.StorageTableDataContributor
- StorageBuiltInRole.StorageQueueDataContributor
- StorageBuiltInRole.StorageAccountContributor
För produktionsscenarier rekommenderar vi att du registrerar lagringskontot explicit med API:erna WithHostStorage och WithRoleAssignment och registrerar en mer skräddarsydd uppsättning roller.
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage");
builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
       .WithHostStorage(storage)
       .WithRoleAssignments(storage, StorageBuiltInRole.StorageBlobDataReader,
                                    StorageBuiltInRole.StorageQueueDataReader);
Referensresurser i Azure Functions
Om du vill referera till andra Azure resurser i ett Azure Functions-projekt kedjar du ett anrop till WithReference på Azure Functions-projektresursen och anger resursen som referens:
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();
Föregående kod lägger till en Azure Lagringsresurs till AppHost och refererar till den Azure i Functions-projektet. Den blobs resursen läggs till i resursen storage och refereras sedan till av resursen functions. Anslutningsinformationen som krävs för att ansluta till den blobs resursen matas automatiskt in i Azure Functions-projektet och gör det möjligt för projektet att definiera en BlobTrigger som förlitar sig på blobs resurs.