Reacción ante eventos de Blob Storage
Los eventos de Azure Storage permiten a las aplicaciones reaccionar a eventos, como la creación y la eliminación de blobs. Esto se consigue sin necesidad de código complejo ni de servicios de sondeo costosos e ineficientes. Lo mejor de todo es que solo paga por lo que usa.
Los eventos de Blob Storage se envían mediante Azure Event Grid a los suscriptores, como con Azure Functions, Azure Logic Apps o incluso su propio agente de escucha http. Event Grid proporciona servicios de entrega confiables para sus aplicaciones mediante directivas de reintento enriquecidas y colas de mensajes fallidos.
Consulte el artículo Esquema de eventos para Blob Storage para ver la lista completa de los eventos que admite Blob Storage.
Los escenarios habituales de los eventos de Blob Storage incluyen el procesamiento de imágenes o de vídeo, la indexación de búsqueda o cualquier flujo de trabajo orientado a archivos. Cargas de archivos asincrónicas son una excelente elección para los eventos. Cuando se realizan pocos cambios en el escenario, pero se requiere una respuesta inmediata, la arquitectura basada en eventos puede ser especialmente eficaz.
Si quiere probar los eventos de Blob Storage, consulte cualquiera de estos artículos de inicio rápido:
Si desea utilizar esta herramienta: | Consulte este artículo: |
---|---|
Portal de Azure | Inicio rápido: Enrutamiento de eventos de Blob Storage a un punto de conexión web personalizado con Azure Portal |
PowerShell | Inicio rápido: Enrutamiento de eventos de almacenamiento a un punto de conexión web con PowerShell |
Azure CLI | Inicio rápido: Enrutamiento de eventos de almacenamiento a un punto de conexión web con la CLI de Azure |
Para ver ejemplos detallados de cómo reaccionar a los eventos de Blob Storage mediante Azure Functions, consulte estos artículos:
- Tutorial: Uso de eventos de Azure Data Lake Storage para actualizar una tabla Delta de Databricks.
- Tutorial: Automatización del cambio de tamaño de imágenes cargadas mediante Event Grid
Nota:
Storage (uso general v1)no admite la integración con Event Grid.
Modelo de evento
Event Grid usa las suscripciones a eventos para enrutar los mensajes de eventos a los suscriptores. Esta imagen ilustra la relación entre los publicadores de eventos, las suscripciones a eventos y los controladores de eventos.
Primero, suscriba un punto de conexión a un evento. A continuación, cuando se desencadene un evento, el servicio Event Grid enviará datos sobre ese evento al punto de conexión.
Consulte el artículo del Esquema de eventos para Blob Storage para ver:
Una lista completa de los eventos de Blob Storage y cómo se desencadena cada evento.
Un ejemplo de los datos que enviaría Event Grid para cada uno de estos eventos.
El propósito de cada par clave-valor que aparece en los datos.
Filtrado de eventos
Los eventos de blob se pueden filtrar por el tipo de evento, el nombre del contenedor o el nombre del objeto que se creó o eliminó. Los filtros de Event Grid coinciden con el principio o el final del asunto para que los eventos con un asunto coincidente se envíen al suscriptor.
Para más información sobre cómo aplicar filtros, consulte el artículo de Filtrado de eventos para Event Grid.
El asunto de los eventos de Blob Storage utiliza el formato:
/blobServices/default/containers/<containername>/blobs/<blobname>
Para que coincida con todos los eventos de una cuenta de almacenamiento, los filtros de asunto se pueden dejar vacíos.
Para que coincida con eventos de blobs creados en un conjunto de contenedores que comparten un prefijo, utilice un filtro subjectBeginsWith
como:
/blobServices/default/containers/containerprefix
Para que coincida con eventos de blobs creados en un contenedor concreto, utilice un filtro subjectBeginsWith
como:
/blobServices/default/containers/containername/
Para que coincida con eventos de blobs creados en un contenedor concreto que comparten un prefijo de nombre de blob, utilice un filtro subjectBeginsWith
como:
/blobServices/default/containers/containername/blobs/blobprefix
Para que coincida con eventos de blobs creados en un contenedor concreto que comparten un sufijo de blob, utilice un filtro subjectEndsWith
como ".log" o ".jpg". Para más información, vea Conceptos de Event Grid.
Prácticas para consumir eventos
Las aplicaciones que controlan los eventos de Blob Storage deben seguir algunas prácticas recomendadas:
Dado que se pueden configurar varias suscripciones para enrutar eventos al mismo controlador de eventos, es importante no asumir que los eventos provienen de un origen determinado, sino comprobar el tema del mensaje para asegurarse de que proviene de la cuenta de almacenamiento esperable.
De igual forma, compruebe que eventType es uno de los que está preparado para procesar y no asuma que todos los eventos que reciba van a ser los tipos que espera.
Aunque la mayoría de los mensajes llegan casi en tiempo real, no hay ningún acuerdo de nivel de servicio en torno al tiempo que se tarda en llegar un mensaje. En algunos casos, el mensaje puede tardar unos minutos en llegar. Dado que los mensajes pueden llegar con cierto retraso, utilice los campos de etag para saber si la información acerca de los objetos sigue estando actualizada. Para saber cómo utilizar el campo etag, consulte Administrar la concurrencia en el almacenamiento de Blob.
Dado que los mensajes pueden llegar desordenados, utilice los campos del secuenciador para conocer el orden de los eventos en cualquier objeto determinado. El campo del secuenciador es un valor de cadena que representa la secuencia lógica de eventos para cualquier nombre de blob concreto. Puede usar una comparación de cadenas estándar para conocer la secuencia relativa de dos eventos que estén en el mismo nombre de blob.
Los eventos de almacenamiento garantizan la entrega a los suscriptores al menos una vez, lo que garantiza que se emiten todos los mensajes. Sin embargo, debido a los reintentos entre los nodos y los servicios de back-end o la disponibilidad de las suscripciones, pueden producirse mensajes duplicados. Para más información sobre la entrega de los mensajes y los reintentos de entrega, consulte Entrega y reintento de entrega de mensajes de Event Grid.
Utilice el campo blobType para saber qué tipo de operaciones se permiten en el blob y qué tipos de bibliotecas de cliente se deben usar para acceder al blob. Los valores válidos son
BlockBlob
oPageBlob
.Utilice el campo de dirección URL con los constructores
CloudBlockBlob
yCloudAppendBlob
para acceder al blob.Ignore los campos que no comprenda. Esta práctica le ayudará a mantenerse resistente a las nuevas características que puedan agregarse en el futuro.
Si desea asegurarse de que el evento Microsoft.Storage.BlobCreated se desencadena únicamente cuando un blob en bloques está completamente confirmado, filtre el evento para las llamadas de API REST
CopyBlob
,PutBlob
,PutBlockList
oFlushWithClose
. Estas llamadas API desencadenan el evento Microsoft.Storage.BlobCreated únicamente después de que los datos se hayan confirmado en un blob en bloques. Para información sobre cómo crear un filtro, consulte Filtrado de eventos para Event Grid.
Compatibilidad de características
La compatibilidad con esta característica puede verse afectada al habilitar Data Lake Storage Gen2, el protocolo Network File System (NFS) 3.0 o el Protocolo de transferencia de archivos SSH (SFTP). Si ha habilitado cualquiera de estas funcionalidades, consulte Compatibilidad con características de Blob Storage en cuentas de Azure Storage para evaluar la compatibilidad con esta característica.
Pasos siguientes
Obtenga más información acerca de Event Grid y pruebe los eventos de Blob Storage: