Compartir a través de


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:

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:

Visual Studio: Opciones/Proyectos y soluciones/funciones de Azure.

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.

Consulte también