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.

Diagram of a file upload process using Azure Functions.

En los siguientes tutoriales, se usa un desencadenador de 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.

Diagram of a real-time stream process using 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.

Por ejemplo, una función que llama a un modelo de TensorFlow o la envía a servicios de Azure AI puede procesar y clasificar una secuencia de imágenes.

Las funciones también pueden conectarse a otros servicios para ayudar a procesar datos y realizar otras tareas relacionadas con la inteligencia artificial, como el resumen de texto.

Diagram of a machine learning and AI process using 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.

Diagram of a scheduled task where a function cleans a database every 15 minutes deduplicating entries based on business logic.

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

Diagram of processing an HTTP request using 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.

A combination diagram of a series of specific serverless workflows using 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.

Diagram of a function being used to respond to database changes.

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.

Diagram of Azure Functions in a reliable message system.

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