Compartir a través de


escenarios de Azure Functions

A menudo, se crean sistemas para que reaccionen a una serie de eventos críticos. Tanto si va a crear una API web, responder a los cambios de la base de datos, procesar flujos de eventos o mensajes, Azure Functions se puede usar para estas implementaciones.

En muchos casos, una función se integra con una matriz de servicios en la nube para proporcionar implementaciones con numerosas características. A continuación, se incluye un conjunto de escenarios habituales de Azure Functions (aunque no se incluyen todos).

Seleccione su lenguaje de desarrollo en la parte superior de este artículo.

Procesar cargas de archivos

Hay varias maneras de usar funciones para procesar archivos dentro o fuera de un contenedor de Blob Storage. Para más información sobre las opciones para la operación de desencadenamiento en un contenedor de blobs, consulte Trabajar con blobs en la documentación de procedimientos recomendados.

Por ejemplo, en una solución comercial, un sistema asociado puede enviar información del catálogo de productos como archivos en Blob Storage. Puede usar una función desencadenada por blobs para validar, transformar y procesar los archivos en el sistema principal a medida que se cargan.

Diagrama de un proceso de carga de archivos con Azure Functions.

En los tutoriales siguientes se usa un desencadenador de blobs (basado en Event Grid) para procesar archivos en un contenedor de blobs:

Por ejemplo, con el desencadenador de blobs con una suscripción de eventos en contenedores de blobs:

[FunctionName("ProcessCatalogData")]
public static async Task Run([BlobTrigger("catalog-uploads/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")]Stream myCatalogData, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myCatalogData.Length} Bytes");

    using (var reader = new StreamReader(myCatalogData))
    {
        var catalogEntry = await reader.ReadLineAsync();
        while(catalogEntry !=null)
        {
            // Process the catalog entry
            // ...

            catalogEntry = await reader.ReadLineAsync();
        }
    }
}

Procesamiento de eventos y flujos en tiempo real

Se generan y recopilan muchos datos de telemetría provenientes de aplicaciones en la nube, dispositivos IoT y dispositivos de red. Azure Functions puede procesar esos datos casi en tiempo real como ruta de acceso activa y almacenarlos en Azure Cosmos DB para usarlos en un panel de análisis.

Las funciones también pueden usar desencadenadores de eventos de baja latencia, como Event Grid, y salidas en tiempo real, como SignalR, para procesar datos casi en tiempo real.

Diagrama de un proceso de flujos en tiempo real con Azure Functions.

Por ejemplo, mediante el desencadenador de Event Hubs para leer desde un centro de eventos y el enlace de salida para escribir en un centro de eventos después de desagrupar y transformar los eventos:

[FunctionName("ProcessorFunction")]
public static async Task Run(
    [EventHubTrigger(
        "%Input_EH_Name%",
        Connection = "InputEventHubConnectionString",
        ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
    [EventHub(
        "%Output_EH_Name%",
        Connection = "OutputEventHubConnectionString")] IAsyncCollector<SensorDataRecord> outputMessages,
    PartitionContext partitionContext,
    ILogger log)
{
    var debatcher = new Debatcher(log);
    var debatchedMessages = await debatcher.Debatch(inputMessages, partitionContext.PartitionId);

    var xformer = new Transformer(log);
    await xformer.Transform(debatchedMessages, partitionContext.PartitionId, outputMessages);
}

Aprendizaje automático e inteligencia artificial

Además del procesamiento de datos, Azure Functions se puede usar para deducir en los modelos. El Extensión de enlace de Azure OpenAI permite integrar fácilmente características y comportamientos del Azure OpenAI Service en las ejecuciones de código de función.

Las funciones pueden conectarse a recursos de OpenAI para habilitar finalizaciones de texto y chat, usar asistentes y aprovechar incrustaciones y búsqueda semántica.

Una función también puede llamar a un modelo de TensorFlow o a los servicios de Azure AI para procesar y clasificar una secuencia de imágenes.

Diagrama de un proceso de aprendizaje automático e IA con Azure Functions.

Ejecutar tareas programadas

Functions le permite ejecutar el código en función de una programación de Cron que defina.

Eche un vistazo al artículo Creación de una función en Azure Portal que se ejecuta según una programación.

Por ejemplo, se podría analizar una base de datos de clientes de servicios financieros para entradas duplicadas cada 15 minutos para evitar que varias comunicaciones salgan al mismo cliente.

Diagrama de una tarea programada en la que una función limpia una base de datos cada 15 minutos al desduplicar las entradas en función de la lógica de negocios.

[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */15 * * * *")]TimerInfo myTimer, ILogger log)
{
    if (myTimer.IsPastDue)
    {
        log.LogInformation("Timer is running late!");
    }
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

    // Perform the database deduplication
}

Creación de una API web escalable

Una función desencadenada por HTTP define un punto de conexión HTTP. Estos puntos de conexión ejecutan código de función que puede conectarse directamente a otros servicios o mediante extensiones de enlace. Puede componer los puntos de conexión en una API basada en web.

También puede usar un punto de conexión de función desencadenada por HTTP como una integración de webhook, como webhooks de GitHub. De este modo, puede crear funciones que procesen datos de eventos de GitHub. Para más información, consulte Supervisión de eventos de GitHub mediante un webhook con Azure Functions.

Diagrama de proceso de una solicitud HTTP con Azure Functions.

Para ver ejemplos, consulte lo siguiente:

[FunctionName("InsertName")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
    [CosmosDB(
        databaseName: "my-database",
        collectionName: "my-container",
        ConnectionStringSetting = "CosmosDbConnectionString")]IAsyncCollector<dynamic> documentsOut,
    ILogger log)
{
    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    string name = data?.name;

    if (name == null)
    {
        return new BadRequestObjectResult("Please pass a name in the request body json");
    }

    // Add a JSON document to the output container.
    await documentsOut.AddAsync(new
    {
        // create a random ID
        id = System.Guid.NewGuid().ToString(), 
        name = name
    });

    return new OkResult();
}

Compilar un flujo de trabajo sin servidor

Las funciones suelen ser el componente de proceso de una topología de flujo de trabajo sin servidor, como un flujo de trabajo de Logic Apps. También puede crear orquestaciones de larga duración mediante la extensión Durable Functions. Para más información, consulte Información general de Durable Functions.

Un diagrama de combinación de una serie de flujos de trabajo sin servidor con Azure Functions.

Responder a cambios en una base de datos

Hay procesos en los que quizá necesite registrar, auditar o realizar alguna otra operación cuando cambien los datos almacenados. Los desencadenadores de Functions proporcionan una buena manera de recibir notificaciones de los cambios de datos para inicializar dicha operación.

Diagrama de una función que se usa para responder a los cambios de la base de datos.

Considere los siguientes ejemplos:

Crear sistema de mensajes confiables

Puede usar Functions con servicios de mensajería de Azure para crear soluciones avanzadas de mensajería controladas por eventos.

Por ejemplo, puede usar desencadenadores en colas de Azure Storage como una manera de concatenar una serie de ejecuciones de función. O bien, use colas y desencadenadores de Service Bus para un sistema de pedidos en línea.

Diagrama de Azure Functions en un sistema de mensajes confiables.

En el siguiente artículo, se muestra cómo escribir la salida en una cola de almacenamiento.

Además, en estos artículos se muestra cómo desencadenar desde una cola o tema de Azure Service Bus.

Pasos siguientes