Delen via


Aspire Azure Functions-integratie (preview)

Inclusief:Hostingintegratie inbegrepen Alleen hostingintegratie — Client integratie niet inbegrepenClient integratie niet inbegrepen

Belangrijk

De integratie van AspireAzure Functions is momenteel in preview en kan worden gewijzigd.

Azure Functions is een serverloze oplossing waarmee u minder code kunt schrijven, minder infrastructuur kunt onderhouden en kosten kunt besparen. Met de AspireAzure functions-integratie kunt u een Azure Functions-project .NET ontwikkelen, fouten opsporen en organiseren als onderdeel van de AppHost.

Er wordt verwacht dat u de vereiste Azure hulpprogramma's hebt geïnstalleerd:

Ondersteunde scenario's

De integratie van AspireAzure Functions heeft verschillende belangrijke ondersteunde scenario's. In deze sectie worden de scenario's beschreven en vindt u details met betrekking tot de implementatie van elke benadering.

Ondersteunde triggers

De volgende tabel bevat de ondersteunde triggers voor Azure Functions in de Aspire-integratie:

Aanleiding Attribuut Bijzonderheden
Azure Event Hubs trekker EventHubTrigger 📦 Aspire. Gastvrijheid.Azure. EventHubs-
Azure Service Bus trekker ServiceBusTrigger 📦 Aspire. Gastvrijheid.Azure. ServiceBus-
Azure Storageblobs-trigger BlobTrigger 📦 Aspire. Hosting.Azure. Opslag
Azure Storage Queues trekker QueueTrigger 📦 Aspire. Hosting.Azure. Opslag
Azure CosmosDB-trigger CosmosDbTrigger 📦 Aspire. Hosting.Azure. CosmosDB
HTTP-trigger HttpTrigger Ondersteund zonder extra resourceafhankelijkheden.
Timer-trigger TimerTrigger Ondersteund zonder extra resourceafhankelijkheden, is afhankelijk van impliciete hostopslag.

Belangrijk

Andere Azure Functions-triggers en -bindingen worden momenteel niet ondersteund in de integratie van AspireAzure Functions.

Implementatie

Momenteel wordt implementatie alleen ondersteund voor containers op Azure Container Apps (ACA) met behulp van de sdk-containerpublicatiefunctie in Microsoft.Azure.Functions.Worker.Sdk. Deze implementatiemethodologie biedt momenteel geen ondersteuning voor automatisch schalen op basis van KEDA.

Externe HTTP-eindpunten configureren

Als u HTTP-triggers openbaar toegankelijk wilt maken, roept u de WithExternalHttpEndpoints-API aan op de AzureFunctionsProjectResource. Zie Azure Functions-resource toevoegenvoor meer informatie.

Azure Functieprojectbeperkingen

De integratie van AspireAzure Functions heeft de volgende projectbeperkingen:

Als u problemen ondervindt met het Azure Functions-project, zoals:

Er is geen Functions-runtime beschikbaar die overeenkomt met de versie die is opgegeven in het project

Controleer in Visual Studioof er een update is voor de Azure Functions-hulpprogramma's. Open het dialoogvenster Opties, ga naar projecten en oplossingenen selecteer Azure Functions. Selecteer de knop Controleren op updates om te controleren of u de nieuwste versie van de Azure Functions-hulpprogramma's hebt:

Visual Studio: Opties/Projecten en oplossingen/Azure Functions.

Hostingintegratie

De Azure Functions die als host fungeert voor integratiemodellen, is een Azure Functions-resource als het AzureFunctionsProjectResource -type (subtype van ProjectResource). Als u toegang wilt krijgen tot dit type en API's waarmee u het kunt toevoegen aan uw AppHost-project , installeert u het 📦Aspire. Hosting.Azure. NuGet-pakket functions .

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

Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.

Azure Functions-resource toevoegen

Roep AddAzureFunctionsProject in uw AppHost-project het builder exemplaar aan om een Azure Functions-resource toe te voegen:

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...

Wanneer Aspire u een Azure Functions-projectresource toevoegt, wordt de AppHost toegevoegd, zoals in het vorige voorbeeld wordt weergegeven, kan naar de functions resource worden verwezen door andere projectresources. De methode WithReference configureert een verbinding in de ExampleProject met de naam "functions". Als de Azure-resource is geïmplementeerd en er een HTTP-trigger is weergegeven, is het eindpunt extern vanwege de aanroep naar WithExternalHttpEndpoints. Zie Referentieresourcesvoor meer informatie.

Azure Functions-resource toevoegen met hostopslag

Als u het standaardhostopslagaccount wilt wijzigen dat door de Azure Functions-host wordt gebruikt, roept u de WithHostStorage methode aan op de Azure Functions-projectresource:

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...

De voorgaande code is afhankelijk van de 📦AspireAzureHosting. Opslag NuGet-pakket om een Azure Storage-resource toe te voegen die wordt uitgevoerd als een emulator. De storage-resource wordt vervolgens doorgegeven aan de WithHostStorage-API, waarbij de hostopslag expliciet wordt ingesteld op de geëmuleerde resource.

Notitie

Als u de impliciete hostopslag niet gebruikt, moet u de StorageAccountContributor rol handmatig toewijzen aan uw resource voor geïmplementeerde exemplaren. De impliciete hostopslag wordt automatisch geconfigureerd met de volgende rollen ter ondersteuning van maximale interoperabiliteit met alle scenario's:

Voor productiescenario's is het raadzaam om het opslagaccount expliciet bij de WithHostStorage en WithRoleAssignment API's te registreren en een meer op maat gemaakte set rollen te registreren.

var builder = DistributedApplication.CreateBuilder(args);

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

builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
       .WithHostStorage(storage)
       .WithRoleAssignments(storage, StorageBuiltInRole.StorageBlobDataReader,
                                    StorageBuiltInRole.StorageQueueDataReader);

Referentiebronnen in Azure Functions

Als u naar andere Azure resources in een Azure Functions-project wilt verwijzen, koppelt u een aanroep naar WithReference op de Azure Functions-projectresource en geeft u de resource op waarnaar moet worden verwezen:

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();

De voorgaande code voegt een Azure opslagresource toe aan de AppHost en verwijst ernaar in het Azure Functions-project. De blobs resource wordt toegevoegd aan de storage resource en vervolgens verwezen door de functions resource. De verbindingsgegevens die nodig zijn om verbinding te maken met de blobs-resource, worden automatisch opgenomen in het Azure Functions-project en stelt het project in staat een BlobTrigger te definiëren die afhankelijk is van blobs resource.

Zie ook