Reageren op gebeurtenissen van Blob Storage

Met Azure Storage-gebeurtenissen kunnen toepassingen reageren op gebeurtenissen, zoals het maken en verwijderen van blobs. Het doet dit zonder de noodzaak van ingewikkelde code of dure en inefficiënte polling-services. Het beste deel is dat u alleen betaalt voor wat u gebruikt.

Blob Storage-gebeurtenissen worden gepusht met behulp van Azure Event Grid naar abonnees zoals Azure Functions, Azure Logic Apps of zelfs naar uw eigen HTTP-listener. Event Grid biedt betrouwbare levering van gebeurtenissen aan uw toepassingen via uitgebreid beleid voor opnieuw proberen en de verwerking van onbestelbare berichten.

Zie het schemaartikel voor Blob Storage-gebeurtenissen om de volledige lijst weer te geven van de gebeurtenissen die door Blob Storage worden ondersteund.

Veelvoorkomende scenario's voor blobopslaggebeurtenissen zijn afbeeldings- of videoverwerking, zoekindexering of een bestandsgeoriënteerde werkstroom. Asynchrone bestandsuploads zijn geschikt voor gebeurtenissen. Wanneer wijzigingen onregelmatig zijn, maar uw scenario onmiddellijke reactiesnelheid vereist, kan architectuur op basis van gebeurtenissen met name efficiënt zijn.

Als u blob storage-gebeurtenissen wilt proberen, raadpleegt u een van de volgende quickstart-artikelen:

Als u dit hulpprogramma wilt gebruiken: Zie dit artikel:
Azure Portal Quickstart: Blob Storage-gebeurtenissen routeren naar een webeindpunt met Azure Portal
Powershell Quickstart: Opslagevenementen routeren naar een webeindpunt met PowerShell
Azure-CLI Quickstart: opslaggebeurtenissen routeren naar een webeindpunt met Azure CLI

Zie de volgende artikelen voor gedetailleerde voorbeelden van reageren op Blob Storage-gebeurtenissen met behulp van Azure-functies:

Notitie

Opslag (algemeen gebruik v1) biedt geen ondersteuning voor integratie met Event Grid.

Het gebeurtenismodel

Event Grid maakt gebruik van gebeurtenisabonnementen om gebeurtenisberichten naar abonnees te routeren. In deze afbeelding ziet u de relatie tussen gebeurtenisuitgevers, gebeurtenisabonnementen en gebeurtenis-handlers.

Event Grid-model

Abonneer eerst een eindpunt op een gebeurtenis. Wanneer een gebeurtenis wordt geactiveerd, verzendt de Event Grid-service vervolgens gegevens over die gebeurtenis naar het eindpunt.

Zie het schemaartikel voor blobopslag-gebeurtenissen om het volgende te bekijken:

  • Een volledige lijst met Blob Storage-gebeurtenissen en hoe elke gebeurtenis wordt geactiveerd.

  • Een voorbeeld van de gegevens die het Event Grid verzendt voor elk van deze gebeurtenissen.

  • Het doel van elk sleutelwaardepaar dat in de gegevens wordt weergegeven.

Gebeurtenissen filteren

Blobgebeurtenissen kunnen worden gefilterd op het gebeurtenistype, de containernaam of de naam van het object dat is gemaakt/verwijderd. Filters in Event Grid komen overeen met het begin of einde van het onderwerp, zodat gebeurtenissen met een overeenkomend onderwerp naar de abonnee gaan.

Zie Gebeurtenissen filteren voor Event Grid voor meer informatie over het toepassen van filters.

Het onderwerp van Blob Storage-gebeurtenissen maakt gebruik van de indeling:

/blobServices/default/containers/<containername>/blobs/<blobname>

Als u alle gebeurtenissen voor een opslagaccount wilt vergelijken, kunt u de onderwerpfilters leeg laten.

Als u gebeurtenissen wilt vergelijken van blobs die zijn gemaakt in een set containers die een voorvoegsel delen, gebruikt u een subjectBeginsWith filter zoals:

/blobServices/default/containers/containerprefix

Als u gebeurtenissen wilt vergelijken van blobs die zijn gemaakt in een specifieke container, gebruikt u een subjectBeginsWith filter zoals:

/blobServices/default/containers/containername/

Als u gebeurtenissen wilt vergelijken van blobs die zijn gemaakt in een specifieke container die een blobnaamvoorvoegsel delen, gebruikt u een subjectBeginsWith filter zoals:

/blobServices/default/containers/containername/blobs/blobprefix

Als u gebeurtenissen wilt vergelijken van blobs die zijn gemaakt in een specifieke container die een blobachtervoegsel delen, gebruikt u een subjectEndsWith filter zoals '.log' of '.jpg'. Zie Event Grid-concepten voor meer informatie.

Procedures voor het verbruik van gebeurtenissen

Toepassingen die Blob Storage-gebeurtenissen verwerken, moeten een aantal aanbevolen procedures volgen:

  • Omdat meerdere abonnementen kunnen worden geconfigureerd om gebeurtenissen te routeren naar dezelfde gebeurtenis-handler, is het belangrijk om niet uit te gaan van gebeurtenissen uit een bepaalde bron, maar om het onderwerp van het bericht te controleren om ervoor te zorgen dat het afkomstig is van het opslagaccount dat u verwacht.

  • Controleer op dezelfde manier of het eventType een is dat u wilt verwerken en ga er niet van uit dat alle gebeurtenissen die u ontvangt, de typen zijn die u verwacht.

  • Hoewel de meeste berichten bijna in realtime binnenkomen, is er geen service level agreement rond de tijd die nodig is voordat een bericht binnenkomt. In sommige gevallen kan het enkele minuten duren voordat het bericht binnenkomt. Omdat berichten na enige vertraging kunnen binnenkomen, gebruikt u de etag-velden om te begrijpen of uw informatie over objecten nog steeds up-to-date is. Zie Gelijktijdigheid beheren in Blob Storage voor meer informatie over het gebruik van het veld etag.

  • Als berichten buiten de juiste volgorde kunnen komen, gebruikt u de sequencer-velden om de volgorde van gebeurtenissen op een bepaald object te begrijpen. Het sequencer-veld is een tekenreekswaarde die de logische reeks gebeurtenissen voor een bepaalde blobnaam vertegenwoordigt. U kunt een standaardtekenreeksvergelijking gebruiken om inzicht te hebben in de relatieve volgorde van twee gebeurtenissen op dezelfde blobnaam.

  • Opslaggebeurtenissen garanderen ten minste eenmaal levering aan abonnees, waardoor alle berichten worden uitgevoerd. Vanwege nieuwe pogingen tussen back-endknooppunten en services of beschikbaarheid van abonnementen kunnen er echter dubbele berichten optreden. Zie Event Grid-berichtbezorging en opnieuw proberen voor meer informatie over de bezorging van berichten en het opnieuw proberen.

  • Gebruik het blobType-veld om te begrijpen welk type bewerkingen zijn toegestaan op de blob en welke clientbibliotheektypen u moet gebruiken voor toegang tot de blob. Geldige waarden zijn of BlockBlobPageBlob.

  • Gebruik het URL-veld met de CloudBlockBlob en CloudAppendBlob constructors voor toegang tot de blob.

  • Negeer velden die u niet begrijpt. Met deze procedure kunt u bestand blijven tegen nieuwe functies die in de toekomst kunnen worden toegevoegd.

  • Als u ervoor wilt zorgen dat de gebeurtenis Microsoft.Storage.BlobCreated alleen wordt geactiveerd wanneer een blok-blob volledig is doorgevoerd, filtert u de gebeurtenis voor de aanroepen van de CopyBlob, PutBlobPutBlockList of FlushWithClose REST API. Deze API-aanroepen activeren de gebeurtenis Microsoft.Storage.BlobCreated pas nadat gegevens volledig zijn doorgevoerd in een blok-blob. Zie Gebeurtenissen filteren voor Event Grid voor meer informatie over het maken van een filter.

Functieondersteuning

Ondersteuning voor deze functie kan worden beïnvloed door het inschakelen van Data Lake Storage Gen2, het NFS-protocol (Network File System) 3.0 of het SSH File Transfer Protocol (SFTP). Als u een van deze mogelijkheden hebt ingeschakeld, raadpleegt u de ondersteuning voor Blob Storage-functies in Azure Storage-accounts om ondersteuning voor deze functie te beoordelen.

Volgende stappen

Meer informatie over Event Grid en Blob Storage-gebeurtenissen proberen: