Integración de funciones .NET AspireAzure (vista previa)
Incluye:integración de hospedaje no Client
Importante
La integración de .NET AspireAzure Functions está actualmente en versión preliminar y está sujeta a cambios.
Azure Functions es una solución sin servidor que permite escribir menos código, mantener menos infraestructura y ahorrar costos. La integración de .NET AspireAzure Functions le permite desarrollar, depurar y organizar un proyecto de Azure Functions .NET como parte del host de la aplicación.
Se espera que haya instalado las herramientas Azure necesarias:
Escenarios admitidos
La integración de las funciones .NET AspireAzure admite varios escenarios clave. En esta sección se describen los escenarios y se proporcionan detalles relacionados con la implementación de cada enfoque.
Desencadenadores admitidos
En la tabla siguiente se enumeran los desencadenadores admitidos para Azure Functions en la integración de .NET Aspire:
Activador | Atributo | Detalles |
---|---|---|
desencadenador Azure Event Hubs | EventHubTrigger |
📦 Aspire.Hosting.Azure. EventHubs |
desencadenador de Azure Service Bus | ServiceBusTrigger |
📦 Aspire. Hospitalidad.Azure. ServiceBus |
desencadenador de blobs de almacenamiento de Azure | BlobTrigger |
📦 Aspire. Alojamiento.Azure. Almacenamiento |
activador Azure Storage Queues | QueueTrigger |
📦 Aspire.Alojamiento.Azure.Almacenamiento |
Desencadenador HTTP | HttpTrigger |
Compatible sin dependencias adicionales de recursos. |
Activador de temporizador | TimerTrigger |
Soportado sin dependencias de recursos adicionales—se basa en el almacenamiento de host subyacente. |
Importante
Actualmente no se admiten desencadenadores y enlaces de otras funciones de Azure en la integración de Functions de .NET AspireAzure.
Despliegue
Actualmente, la implementación solo se admite en contenedores en Azure Container Apps (ACA) mediante la función de publicación de contenedores del SDK en Microsoft.Azure.Functions.Worker.Sdk
. Esta metodología de implementación no admite actualmente el escalado automático basado en KEDA.
Configuración de puntos de conexión HTTP externos
Para que los desencadenadores HTTP sean accesibles públicamente, llame a la API de WithExternalHttpEndpoints en AzureFunctionsProjectResource. Para obtener más información, consulte Agregar Azure recursos de Functions.
restricciones del proyecto de Azure Function
La integración de .NET AspireAzure Functions tiene las siguientes restricciones de proyecto:
- Debe tener como destino .NET 8.0 o posterior.
- Debe usar un SDK .NET 9.
- Actualmente solo admite a los trabajadores .NET con el modelo de trabajo aislado .
- Requiere los siguientes paquetes NuGet:
-
📦 Microsoft.Azure. Functions.Worker: Use el
FunctionsApplicationBuilder
. -
📦 Microsoft.Azure.Functions.Worker.Sdk: agrega compatibilidad con
dotnet run
yazd publish
. - 📦 Microsoft.Azure. Functions.Http.AspNetCore: agrega API compatibles con desencadenadores HTTP.
-
📦 Microsoft.Azure. Functions.Worker: Use el
Si tiene problemas con el proyecto Azure Functions, como:
No hay ningún runtime de Functions disponible que coincida con la versión especificada en el proyecto.
En Visual Studio, pruebe a comprobar si hay una actualización en las herramientas de Azure Functions. Abra el cuadro de diálogo Opciones de , vaya a Proyectos y Solucionesy, a continuación, seleccione Azure Funciones. Seleccione el botón Buscar actualizaciones para asegurarse de que tiene la versión más reciente de las herramientas de Azure Functions:
Integración de hospedaje
Las funciones de Azure integran modelos que presentan un recurso de tipo Azure Functions como el tipo AzureFunctionsProjectResource (subtipo de ProjectResource). Para acceder a este tipo y APIs que le permiten agregarlo al host de aplicación de proyecto, instale el paquete NuGet 📦Aspire.Hosting.Azure.Functions.
dotnet add package Aspire.Hosting.Azure.Functions --prerelease
Para obtener más información, consulte dotnet add package o Manage package dependencies in .NET applications.
Agregar el recurso de Azure Functions
En el proyecto host de tu aplicación, ejecuta AddAzureFunctionsProject en la instancia builder
para agregar un recurso de 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...
Cuando .NET Aspire agrega un recurso del proyecto de Azure Functions al host de la aplicación, como se muestra en el ejemplo anterior, el recurso functions
puede ser referenciado por otros recursos del proyecto. El método WithReference configura una conexión en el ExampleProject
denominado "functions"
. Si el recurso de Azure se implementó y expone un desencadenador HTTP, su punto de conexión sería externo debido a la llamada a WithExternalHttpEndpoints. Para obtener más información, consulte Recursos de referencia.
Agregar Azure recurso de Functions con el almacenamiento de host
Si desea modificar la cuenta de almacenamiento de host predeterminada que usa el host de Azure Functions, llame al método WithHostStorage en el recurso del proyecto de Azure Functions:
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...
El código anterior se basa en el 📦Aspire.Hosting.Azure.Storage paquete NuGet para agregar un recurso de Azure Storage que se ejecuta como emulador. A continuación, el recurso storage
se pasa a la API de WithHostStorage
, estableciendo explícitamente el almacenamiento de host en el recurso emulado.
Nota
Si no usa el almacenamiento de host implícito, debe asignar manualmente el rol de StorageAccountContributor
al recurso para las instancias desplegadas. Este rol se asigna automáticamente para el almacenamiento de host generado implícitamente.
Recursos de referencia en funciones de Azure
Para hacer referencia a otros recursos de Azure en un proyecto de funciones de Azure, encadene una llamada a WithReference
sobre el recurso del proyecto de funciones de Azure y proporcione el recurso al que desea hacer referencia:
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();
El código anterior agrega un recurso de Azure Storage al host de la aplicación y hace referencia a él en el proyecto Azure Functions. El recurso blobs
se agrega al recurso de storage
y, a continuación, hace referencia al recurso functions
. La información de conexión necesaria para conectarse al recurso de blobs
se inyecta automáticamente en el proyecto de Funciones Azure y permite al proyecto definir un BlobTrigger
que depende del recurso blobs
.