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.
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();
}
}
}
- Función desencadenada de Blob Storage basada en eventos que convierte documentos PDF en texto a escala
- Cargar y analizar un archivo con Azure Functions y blob Storage
- Automatización del cambio de tamaño de las imágenes cargadas mediante Event Grid
- Desencadenamiento de Azure Functions en contenedores de blobs mediante una suscripción de eventos
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.
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);
}
- Desencadenador de Service Bus mediante la integración de red virtual
- Flujo a gran escala con Azure Event Hubs, Functions y Azure SQL
- Flujo a gran escala con Azure Event Hubs, Functions y Cosmos DB
- Flujo a gran escala con Azure Event Hubs con el productor de Kafka, Functions con el desencadenador de Kafka y Cosmos DB
- Flujo a gran escala con Azure IoT Hub, Functions y Azure SQL
- Desencadenador de Azure Event Hubs para Azure Functions
- Desencadenador de Apache Kafka para Azure Functions
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.
- Tutorial: Finalización de texto mediante Azure OpenAI
- Ejemplo: Carga de archivos de texto y acceso a datos mediante varias características de OpenAI
- Ejemplo: Resumen de texto mediante AI Cognitive Language Service
- Muestra: Finalización de texto mediante Azure OpenAI
- Ejemplo: Proporcionar capacidades de asistente a su modelo
- Muestra: Generación de inserciones
- Ejemplo: Aprovechamiento de la búsqueda semántica
- Tutorial: Finalización de texto mediante Azure OpenAI
- Muestra: Finalización de texto mediante Azure OpenAI
- Ejemplo: Proporcionar capacidades de asistente a su modelo
- Muestra: Generación de inserciones
- Ejemplo: Aprovechamiento de la búsqueda semántica
- Tutorial: Finalización de texto mediante Azure OpenAI
- Tutorial: Aplicación de modelos de aprendizaje automático en Azure Functions con Python y TensorFlow
- Tutorial: Implementación de un modelo de clasificación de imágenes previamente entrenado en Azure Functions con PyTorch
- Muestra: Finalización de texto mediante Azure OpenAI
- Ejemplo: Proporcionar capacidades de asistente a su modelo
- Muestra: Generación de inserciones
- Muestra: Aprovechamiento de la búsqueda semántica
- Ejemplo: Chat con ChatGPT
- Ejemplo: LangChain con Azure OpenAI y ChatGPT
- Tutorial: Finalización de texto mediante Azure OpenAI
- Muestra: Finalización de texto mediante Azure OpenAI
- Ejemplo: Proporcionar capacidades de asistente a su modelo
- Muestra: Generación de inserciones
- Muestra: Aprovechamiento de la búsqueda semántica
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.
[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.
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();
}
- Artículo: Creación de API sin servidor en Visual Studio usando Azure Functions y la integración de API Management
- Entrenamiento: Exponga varias aplicaciones de funciones como una API coherente mediante Azure API Management
- Ejemplo: Aplicación web con una API de C# y una base de datos de Azure SQL en Static Web Apps y Functions
- Desencadenador HTTP de Azure Functions
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.
- Inicio rápido: Creación de la primera función durable en Azure con Java
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.
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.
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.