Activador de Azure Functions con Event Grid
Los Azure Functions te permiten ejecutar código en respuesta a eventos emitidos por Azure Event Grid. Este es un patrón común para arquitecturas basadas en eventos.
Cómo funciona
Cuando un evento se publica en un tema de Event Grid al que tu función está suscrita, Event Grid invoca a tu función de Azure, pasando el evento como datos en la solicitud HTTP.
Configuración
1. Crear un tema de Event Grid
Si aún no tienes un tema de Event Grid, puedes crear uno en el portal de Azure.
2. Suscribirse a eventos
Crea una suscripción en tu tema de Event Grid y configura el punto de conexión de la suscripción para que apunte a la URL de tu Function App.
3. Crear la Azure Function
Crea una función de Azure con un activador HTTP. La plantilla de Function App para el activador de Event Grid se encargará de la mayor parte de la configuración.
Ejemplo de definición de function.json
{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "event",
      "type": "eventGridTrigger",
      "direction": "in",
      "topicEndpoint": "{eventGridTopicEndpoint}",
      "subject": "{eventGridSubject}",
      "eventType": "{eventGridEventType}"
    },
    {
      "name": "outputBlob",
      "type": "blob",
      "path": "output-container/{rand-guid}.txt",
      "connection": "AzureWebJobsStorage",
      "direction": "out"
    }
  ]
}Ejemplo de código Python (__init__.py)
            import logging
import json
import azure.functions as func
def main(event: func.EventGridEvent, outputBlob: func.Out[str]):
    logging.info(f"Evento recibido: {event.id}")
    logging.info(f"Asunto: {event.subject}")
    logging.info(f"Tipo de evento: {event.event_type}")
    logging.info(f"Datos: {event.data}")
    # Procesar los datos del evento
    event_data = event.get_json()
    
    # Ejemplo: Escribir los datos del evento en Blob Storage
    outputBlob.set(json.dumps(event_data))
    logging.info("Datos del evento escritos en Blob Storage.")
    # Si necesitas responder a Event Grid (raro para activadores), puedes hacerlo aquí
    # return func.HttpResponse("Evento procesado correctamente", status_code=200)
Parámetros del enlace
| Nombre | Tipo | Descripción | Obligatorio | 
|---|---|---|---|
| event | EventGridTrigger | El objeto de evento de Event Grid recibido. | Sí | 
| topicEndpoint | string | La URL del tema de Event Grid. | No (configurado por Event Grid) | 
| subject | string | El asunto del evento. | No (configurado por Event Grid) | 
| eventType | string | El tipo de evento. | No (configurado por Event Grid) | 
Propiedades del objeto EventGridEvent
            El objeto event proporcionará acceso a las siguientes propiedades:
- id: Identificador único del evento.
- subject: El asunto del evento.
- data: Los datos específicos del evento (puede ser un objeto JSON).
- eventType: El tipo de evento.
- eventTime: La fecha y hora en que se generó el evento.
- dataVersion: La versión del esquema de los datos del evento.
- metadataVersion: La versión del esquema de los metadatos del evento.
- topic: El recurso que emitió el evento.
Manejo de errores
Event Grid reintentará la entrega de eventos si tu función responde con un código de estado de error (por ejemplo, 5xx). Es importante implementar una lógica de manejo de errores robusta para asegurar que los eventos no se pierdan.
Filtrado de eventos
Puedes configurar filtros en la suscripción de Event Grid para asegurar que tu función solo reciba los eventos que le interesan. Esto se hace en la configuración de la suscripción de Event Grid en el portal de Azure o mediante la CLI/ARM templates.
Escalado
Azure Functions se escala automáticamente en función de la carga de eventos entrantes. Event Grid entregará los eventos a tus funciones según sea necesario.