(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Blob + Event Grid en Azure: procesamiento event-driven

João Barros 17 de July de 2026 4 min de lectura

Blob + Event Grid en Azure permite procesar automáticamente archivos tan pronto como se suben a Azure Blob Storage. Esta conexión es útil para escenarios event-driven, como transformación de archivos, indexación o notificaciones en tiempo real.

Requisitos previos

  • Cuenta Azure con permisos para crear recursos (Resource Group, Storage Account, Function App).
  • Azure CLI instalada y autenticada (az login).
  • zip (u otra forma de empaquetar archivos) y Node.js local para crear la función (ejemplo en JavaScript).

Paso 1: Crear Resource Group y Storage Account

Crear un Resource Group, una Storage Account y un contenedor donde vas a subir los archivos. Sustituye <storageaccountname> por un nombre único todo en minúsculas.

RESOURCE_GROUP="rg-eventgrid-demo"
LOCATION="northeurope"
STORAGE_ACCOUNT="<storageaccountname>"  # nombre único, minúsculas

az group create -n $RESOURCE_GROUP -l $LOCATION
az storage account create -n $STORAGE_ACCOUNT -g $RESOURCE_GROUP --sku Standard_LRS --kind StorageV2
az storage container create -n uploads --account-name $STORAGE_ACCOUNT

Paso 2: Crear un Azure Function App (Node.js)

Crear un Function App en Consumption Plan que contendrá la función con binding Event Grid. Usa un nombre único para el Function App.

FUNCTION_APP="funevdemo"

az functionapp create -g $RESOURCE_GROUP -n $FUNCTION_APP \
  --storage-account $STORAGE_ACCOUNT --runtime node --functions-version 4 \
  --consumption-plan-location $LOCATION

Paso 3: Crear y desplegar la función con Event Grid trigger

Crear una función simple que recibe eventos del Event Grid. Estructura mínima local:

BlobEventListener/
  index.js
  function.json

index.js:

module.exports = async function (context, eventGridEvent) {
  context.log('EventGrid event received:', JSON.stringify(eventGridEvent));
  const data = eventGridEvent.data || {};
  context.log('Blob URL:', data.url || data.blobUrl || data.url);
};

function.json:

{
  "bindings": [
    {
      "type": "eventGridTrigger",
      "name": "eventGridEvent",
      "direction": "in"
    }
  ]
}

Empaquetar y desplegar:

zip -r function.zip BlobEventListener
az functionapp deployment source config-zip -g $RESOURCE_GROUP -n $FUNCTION_APP --src function.zip

Paso 4: Crear la suscripción de Event Grid del Storage para la Function

Crear una suscripción que envía eventos de tipo Microsoft.Storage.BlobCreated a la Function. Obtén el id de la Storage Account y el id de la Function (endpoint).

STORAGE_ID=$(az storage account show -n $STORAGE_ACCOUNT -g $RESOURCE_GROUP --query id -o tsv)
SUB_ID=$(az account show --query id -o tsv)
FUNCTION_ENDPOINT="/subscriptions/$SUB_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Web/sites/$FUNCTION_APP/functions/BlobEventListener"

az eventgrid event-subscription create \
  --name BlobCreateToFunction \
  --source-resource-id $STORAGE_ID \
  --endpoint-type azurefunction \
  --endpoint "$FUNCTION_ENDPOINT" \
  --included-event-types Microsoft.Storage.BlobCreated

Nota: la plataforma valida automáticamente el endpoint. Si recibes error de validación, confirma que la función está desplegada y que el nombre de la función (BlobEventListener) coincide.

Paso 5: Probar — subir un archivo y ver logs

Sube un archivo al contenedor y observa los logs de la Function en tiempo real.

echo "teste" > test.txt
az storage blob upload --account-name $STORAGE_ACCOUNT -c uploads -n test.txt --file ./test.txt

# Ver logs de la Function (en un terminal separado)
az functionapp log tail -g $RESOURCE_GROUP -n $FUNCTION_APP

Deberías ver una línea con "EventGrid event received" y la URL del blob. Si no aparece, verifica la suscripción con az eventgrid event-subscription show.

Verificar el resultado

Confirmar que el flujo está funcionando:

  • La subida del archivo (az storage blob upload) desencadena un evento Microsoft.Storage.BlobCreated.
  • La Azure Function registra el evento (ver az functionapp log tail) y muestra la URL del blob.
  • Si es necesario, verifica la suscripción con az eventgrid event-subscription list --source-resource-id $STORAGE_ID.

Conclusión

Conectando Azure Blob Storage a una Azure Function vía Event Grid se creó un pipeline event-driven simple y útil para procesamiento automático de archivos. Próximos pasos: leer el blob dentro de la función (usar @azure/storage-blob), filtrar eventos por prefix/suffix en la suscripción y añadir retries/Dead Letter. Consejo: si la validación del endpoint falla, confirma que la función responde y que la ruta/nombre de la función están correctos — ¿quieres probar a filtrar por extensión (.csv) antes de procesar?