Uso de una función como controlador de eventos para eventos de Event Grid

Un controlador de eventos es el lugar al que se envía el evento. El controlador realiza una acción para procesar el evento. Varios servicios de Azure se configuran automáticamente para controlar los eventos y Azure Functions es uno de ellos.

Para usar una función de Azure como controlador de eventos, siga uno de estos métodos:

  • Use el desencadenador de Event Grid. Seleccione Función de Azure como tipo de punto de conexión. A continuación, especifique la aplicación de funciones y la función que controlará los eventos.
  • Use el desencadenador de HTTP. Seleccione Webhook como tipo de punto de conexión. A continuación, especifique la dirección URL de la función que controlará los eventos.

Se recomienda usar el primer enfoque (desencadenador de Event Grid), ya que presenta las siguientes ventajas respecto al segundo enfoque:

  • Event Grid valida automáticamente los desencadenadores de Event Grid. Con los desencadenadores HTTP genéricos, debe implementar la respuesta de validación usted mismo.
  • Event Grid ajusta automáticamente la velocidad a la que se entregan los eventos a una función desencadenada por un evento de Event Grid basándose en la tasa percibida a la que la función puede procesar eventos. Esta característica de coincidencia de velocidad evita los errores de entrega que provienen de la incapacidad de una función para procesar eventos, ya que la tasa de procesamiento de eventos de la función puede variar con el tiempo. Para mejorar la eficacia con un alto rendimiento, habilite el procesamiento por lotes en la suscripción de eventos. Para obtener más información, consulte Habilitar el procesamiento por lotes.

Nota:

  • Cuando usa un desencadenador de Event Grid para agregar una suscripción de eventos mediante una función de Azure, Event Grid captura la clave de acceso de la función de destino mediante las credenciales de la entidad de servicio de Event Grid. Los permisos se conceden a Event Grid al registrar el proveedor de recursos de Event Grid en su suscripción de Azure.
  • Si protege su función de Azure con una aplicación de Microsoft Entra ID, debe adoptar el enfoque genérico de webhook mediante el desencadenador HTTP. Use el punto de conexión de la función de Azure como una dirección URL de webhook al agregar la suscripción.

Tutoriales

Título Descripción
Inicio rápido: Control de eventos con una función Envía un evento personalizado a una función para su procesamiento.
Tutorial: Automatización del cambio de tamaño de las imágenes cargadas mediante Event Grid Los usuarios cargan imágenes a través de la aplicación web en la cuenta de almacenamiento. Cuando se crea un blob de almacenamiento, Event Grid envía un evento a la aplicación de función, que cambia el tamaño de la imagen cargada.
Tutorial: transmisión de macrodatos a un almacén de datos Cuando Event Hubs crea un archivo de captura, Event Grid envía un evento a una aplicación de función. La aplicación recupera el archivo de captura y migra los datos a un almacenamiento de datos.
Tutorial: Ejemplos de integración de Azure Service Bus en Azure Event Grid Event Grid envía mensajes de temas de Service Bus a la aplicación de funciones y a la aplicación lógica.

Ejemplo de REST (para PUT)

{
	"properties": 
	{
		"destination": 
		{
			"endpointType": "AzureFunction",
			"properties": 
			{
				"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.Web/sites/<FUNCTION APP NAME>/functions/<FUNCTION NAME>",
				"maxEventsPerBatch": 10,
				"preferredBatchSizeInKilobytes": 64
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

Habilitar el procesamiento por lotes

Para obtener un rendimiento superior, habilite el procesamiento por lotes en la suscripción. Si usas Azure Portal, puedes establecer el número máximo de eventos por lote y el tamaño de lote preferido en kilobytes en el momento de crear una suscripción o después de hacerlo.

Puede configurar los valores del lote mediante Azure Portal, PowerShell, CLI o la plantilla de Resource Manager.

Azure portal

En el momento de crear una suscripción en la UI, en la página Crear suscripción de eventos, cambie a la pestaña Características avanzadas y establezca los valores de Número máximo de eventos por lote y Tamaño de lote preferido en kilobytes.

Enable batching at the time of creating a subscription

Puede actualizar estos valores para una suscripción existente en la pestaña Características de la página Tema de Event Grid.

Enable batching after creation

Plantilla del Administrador de recursos de Azure

Puede establecer maxEventsPerBatch y preferredBatchSizeInKilobytes en una plantilla de Azure Resource Manager. Para obtener más información, consulte el artículo sobre la referencia de las plantillas de Microsoft.EventGrid eventSubscriptions.

Azure CLI

Puedes usar los comandos az eventgrid event-subscription create para configurar las opciones relacionadas con el lote con los parámetros --max-events-per-batch o --preferred-batch-size-in-kilobytes.

Azure PowerShell

Puede usar los cmdlets New-AzEventGridSubscription o Update-AzEventGridSubscription para configurar las opciones relacionadas con el lote mediante los parámetros -MaxEventsPerBatch o -PreferredBatchSizeInKiloBytes.

Nota

Cuando se usa el desencadenador de Event Grid, el servicio Event Grid captura el secreto de cliente para la función de Azure de destino y lo usa para enviar eventos a la función de Azure. Si protege su función de Azure con una aplicación de Microsoft Entra, debe adoptar el enfoque genérico de webhook y usar el desencadenador HTTP.

Pasos siguientes

Consulte el artículo Controladores de eventos para obtener una lista de controladores de eventos compatibles.