Freigeben über


Reaktion auf Blob Storage-Ereignisse

Azure Storage-Ereignisse ermöglichen es Anwendungen, auf Ereignisse wie das Erstellen und Löschen von Blobs zu reagieren. Dies geschieht ohne komplizierten Code oder teure und ineffiziente Abrufdienste. Und am besten dabei: Sie bezahlen nur für die tatsächliche Nutzung.

Blob Storage-Ereignisse werden mithilfe von Azure Event Grid an Abonnenten wie Azure Functions, Azure Logic Apps oder sogar an Ihren eigenen HTTP-Listener gepusht. Event Grid sorgt über umfassende Wiederholungsrichtlinien und unzustellbare Nachrichten für eine zuverlässige Ereignisübermittlung an Ihre Anwendungen.

Im Artikel zum Blob Storage-Ereignisschema finden Sie eine vollständige Liste der Ereignisse, die von Blob Storage unterstützt werden.

Gängige Blob Storage-Ereignisszenarien enthalten Bild- oder Videobearbeitung, Suchindizierung oder dateiorientierte Workflows. Asynchrone Dateiuploads eignen sich hervorragend für Ereignisse. Wenn Änderungen selten sind, aber Ihr Szenario die sofortige Reaktion erfordert, kann die ereignisbasierte Architektur besonders effizient sein.

Wenn Sie Blob Storage-Ereignisse ausprobieren möchten, informieren Sie sich in folgenden Schnellstartartikeln:

Gewünschtes Tool: In diesem Artikel finden Sie weitere Informationen:
Azure-Portal Schnellstart: Weiterleiten von Blob Storage-Ereignissen an einen Webendpunkt über das Azure-Portal
PowerShell Schnellstart: Weiterleiten von Speicherereignissen an einen Webendpunkt per PowerShell
Azure CLI Schnellstart: Weiterleiten von Speicherereignissen an einen Webendpunkt per Azure CLI

Ausführliche Beispiele für die Reaktion auf Blobspeicherereignisse mithilfe von Azure-Funktionen finden Sie in den folgenden Artikeln:

Hinweis

Storage (Universell V1) unterstützt nicht die Integration in Event Grid.

Ereignismodell

Event Grid verwendet Ereignisabonnements zum Weiterleiten von Ereignisnachrichten an Abonnenten. Diese Abbildung veranschaulicht die Beziehung zwischen Ereignisherausgebern, Ereignisabonnements und Ereignishandlern.

Event Grid-Modell

Abonnieren Sie zunächst einen Endpunkt für ein Ereignis. Sobald ein Ereignis ausgelöst wird, sendet der Event Grid-Dienst Daten zum Ereignis an den Endpunkt.

Im Artikel zum Blob Storage-Ereignisschema finden Sie:

  • Eine vollständige Liste der Blob Storage-Ereignisse und Informationen dazu, wie jedes Ereignis ausgelöst wird

  • Ein Beispiel dafür, welche Daten von Event Grid zu den einzelnen Ereignissen gesendet werden

  • Angaben zum Zweck der jeweiligen Schlüssel-Wert-Paare, die in den Daten enthalten sind

Filtern von Ereignissen

Blob-Ereignisse können gefiltert werden durch den Ereignistyp, den Containernamen oder den Namen des Objekts, das erstellt bzw. gelöscht wurde. Weil Filter im Event Grid den Anfang oder das Ende des Betreffs abgleichen, werden Ereignisse mit einem übereinstimmenden Betreff an den Abonnenten gesendet.

Weitere Informationen zum Anwenden von Filtern finden Sie unter Filtern von Ereignissen für Event Grid.

Der Betreff von Blob Storage-Ereignissen verwendet das Format:

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

Zur Übereinstimmung mit allen Ereignissen für ein Speicherkonto können Sie den Betrefffilter leer lassen.

Verwenden Sie zur Übereinstimmung mit Ereignissen aus Blobs, die in einem Satz von Containern erstellt wurden und ein gemeinsames Präfix verwenden, einen subjectBeginsWith-Filter wie:

/blobServices/default/containers/containerprefix

Verwenden Sie zur Übereinstimmung mit Ereignissen aus Blobs, die in einem bestimmten Container erstellt wurden, einen subjectBeginsWith-Filter wie:

/blobServices/default/containers/containername/

Verwenden Sie zur Übereinstimmung mit Ereignissen aus Blobs, die in einem bestimmten Container erstellt wurden und ein gemeinsames Blobnamenspräfix verwenden, einen subjectBeginsWith-Filter wie:

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

Verwenden Sie zur Übereinstimmung mit Ereignissen aus Blobs, die in einem bestimmten Container erstellt wurden und ein gemeinsames Blobsuffix verwenden, einen subjectEndsWith-Filter wie „.log“ oder „.jpg“. Weitere Informationen finden Sie unter Begriffe in Azure Event Grid.

Methoden zum Nutzen von Ereignissen

Anwendungen, die Blob Storage-Ereignisse behandeln, sollten einige bewährte Methoden nutzen:

  • Da mehrere Abonnements zum Weiterleiten von Ereignissen an den gleichen Ereignishandler konfiguriert werden können, ist es wichtig, nicht davon auszugehen, dass Ereignisse aus einer bestimmten Quelle stammen, sondern das Thema der Nachricht zu überprüfen, um sicherzustellen, dass es aus dem Speicherkonto stammt, das Sie erwarten.

  • Überprüfen Sie auf ähnliche Weise, ob Sie auf die Verarbeitung des eventType vorbereitet sind, und gehen Sie nicht davon aus, dass alle Ereignisse, die Sie empfangen, den von Ihnen erwarteten Typen entsprechen.

  • Während die meisten Nachrichten in nahezu Echtzeit eingehen, gibt es keine Vereinbarung zum Servicelevel um die Zeit, die für die Eintreffen einer Nachricht benötigt wird. In einigen Fällen kann es einige Minuten dauern, bis die Nachricht eintrifft. Da Nachrichten mit Verzögerung eintreffen können, verwenden Sie die etag-Felder, um zu verstehen, ob Ihre Informationen zu Objekten weiterhin auf dem neuesten Stand sind. Informationen zum Verwenden des etag-Felds finden Sie unter Verwalten von Parallelität in Blob Storage.

  • Da Nachrichten in falscher Reihenfolge eintreffen können, verwenden Sie die sequencer-Felder, um die Reihenfolge der Ereignisse für ein bestimmtes Objekt zu verstehen. Das sequencer-Feld ist ein Zeichenfolgenwert, der die logische Reihenfolge von Ereignissen für einen bestimmten Blobnamen darstellt. Sie können anhand des standardmäßigen Zeichenfolgenvergleichs die relative Reihenfolge von zwei Ereignissen unter dem gleichen Blobnamen nachvollziehen.

  • Storage-Ereignisse gewährleisten eine At-Least-Once-Zustellung an Abonnenten, wodurch sichergestellt wird, dass alle Nachrichten ausgegeben werden. Aufgrund von Wiederholungen zwischen Back-End-Knoten und Diensten oder abhängig von der Verfügbarkeit von Abonnements kommt es jedoch möglicherweise zu doppelten Nachrichten. Weitere Informationen zur Übermittlung und Wiederholung von Nachrichten finden Sie unter Event Grid – Übermittlung und Wiederholung von Nachrichten.

  • Verwenden Sie das blobType-Feld, um zu verstehen, welche Arten von Vorgängen für das Blob zulässig sind, und welche Typen von Clientbibliotheken Sie für den Zugriff auf das Blob verwenden sollten. Gültige Werte sind BlockBlob oder PageBlob.

  • Verwenden Sie das url-Feld mit CloudBlockBlob- und CloudAppendBlob-Konstruktor für den Zugriff auf das Blob.

  • Ignorieren Sie Felder, die Sie nicht verstehen. So müssen Sie sich nicht mit neuen Features auseinandersetzen, die in der Zukunft hinzugefügt werden könnten.

  • Wenn Sie sicherstellen möchten, dass das Microsoft.Storage.BlobCreated-Ereignis nur ausgelöst wird, nachdem ein Blockblob vollständig committed wurde, filtern Sie das Ereignis nach den REST-API-Aufrufen CopyBlob, PutBlob, PutBlockList oder FlushWithClose. Bei diesen API-Aufrufen wird das Ereignis Microsoft.Storage.BlobCreated erst ausgelöst, nachdem Daten vollständig in einem Blockblob committet wurden. Informationen zum Erstellen eines Filters finden Sie unter Filtern von Ereignissen für Event Grid.

Featureunterstützung

Die Unterstützung für dieses Features kann durch die Aktivierung von Data Lake Storage Gen2, dem Network File System (NFS) 3.0-Protokoll oder dem SSH File Transfer Protocol (SFTP) beeinträchtigt werden. Wenn Sie eine dieser Funktionen aktiviert haben, lesen Sie bitte den Abschnitt Unterstützung der Blob Storage-Funktion in Azure Storage-Konten, um die Unterstützung für dieses Features zu bewerten.

Nächste Schritte

Erfahren Sie mehr über Event Grid , und probieren Sie Blob Storage-Ereignisse aus: