Reagera på Blob Storage-händelser
Med Azure Storage-händelser kan program reagera på händelser, till exempel skapande och borttagning av blobar. Det gör det utan att behöva komplicerad kod eller dyra och ineffektiva avsökningstjänster. Det bästa är att du bara betalar för det du använder.
Blob Storage-händelser skickas med Azure Event Grid till prenumeranter som Azure Functions, Azure Logic Apps eller till och med till din egen http-lyssnare. Event Grid ger dina program tillförlitlig händelseleverans via omfattande återförsöksprinciper och obeställbara meddelanden.
Se schemaartikeln för Blob Storage-händelser för att visa den fullständiga listan över de händelser som Blob Storage stöder.
Vanliga scenarier för Blob Storage-händelser är bild- eller videobearbetning, sökindexering eller valfritt filorienterat arbetsflöde. Asynkrona filuppladdningar passar bra för händelser. När ändringar är ovanliga, men ditt scenario kräver omedelbar svarstid, kan händelsebaserad arkitektur vara särskilt effektiv.
Om du vill prova bloblagringshändelser kan du läsa någon av de här snabbstartsartiklarna:
Om du vill använda det här verktyget: | Se den här artikeln: |
---|---|
Azure Portal | Snabbstart: Dirigera Blob Storage-händelser till webbslutpunkten med Azure-portalen |
PowerShell | Snabbstart: Dirigera lagringshändelser till webbslutpunkten med PowerShell |
Azure CLI | Snabbstart: Dirigera Storage-händelser till en webbslutpunkt med Azure CLI |
Information om hur du visar djupgående exempel på hur du reagerar på Blob Storage-händelser med hjälp av Azure-funktioner finns i följande artiklar:
- Självstudie: Använda Azure Data Lake Storage-händelser för att uppdatera en Databricks Delta-tabell.
- Självstudie: Automatisera storleksändring av uppladdade bilder med Event Grid
Kommentar
Lagring (generell användning v1) stöder inte integrering med Event Grid.
Händelsemodellen
Event Grid använder händelseprenumerationer för att dirigera händelsemeddelanden till prenumeranter. Den här bilden illustrerar relationen mellan händelseutgivare, händelseprenumerationer och händelsehanterare.
Börja med att prenumerera på en slutpunkt till en händelse. När en händelse sedan utlöses skickar Event Grid-tjänsten data om händelsen till slutpunkten.
Se schemaartikeln för Blob Storage-händelser för att visa:
En fullständig lista över Blob Storage-händelser och hur varje händelse utlöses.
Ett exempel på de data som Event Grid skulle skicka för var och en av dessa händelser.
Syftet med varje nyckelvärdepar som visas i data.
Filtrera händelser
Blobhändelser kan filtreras efter händelsetyp, containernamn eller namn på objektet som skapades/togs bort. Filter i Event Grid matchar början eller slutet av ämnet så händelser med ett matchande ämne går till prenumeranten.
Mer information om hur du använder filter finns i Filtrera händelser för Event Grid.
Ämnet för Blob Storage-händelser använder formatet:
/blobServices/default/containers/<containername>/blobs/<blobname>
Om du vill matcha alla händelser för ett lagringskonto kan du lämna ämnesfiltren tomma.
Om du vill matcha händelser från blobar som skapats i en uppsättning containrar som delar ett prefix använder du ett subjectBeginsWith
filter som:
/blobServices/default/containers/containerprefix
Om du vill matcha händelser från blobar som skapats i en specifik container använder du ett subjectBeginsWith
filter som:
/blobServices/default/containers/containername/
Om du vill matcha händelser från blobar som skapats i en specifik container som delar ett blobnamnprefix använder du ett subjectBeginsWith
filter som:
/blobServices/default/containers/containername/blobs/blobprefix
Om du vill matcha händelser från blobar som skapats i en specifik container som delar ett blobsuffix använder du ett subjectEndsWith
filter som ".log" eller ".jpg". Mer information finns i Begrepp för Event Grid.
Metoder för att använda händelser
Program som hanterar Blob Storage-händelser bör följa några rekommenderade metoder:
Eftersom flera prenumerationer kan konfigureras för att dirigera händelser till samma händelsehanterare är det viktigt att inte anta att händelser kommer från en viss källa, utan att kontrollera ämnet i meddelandet för att säkerställa att det kommer från det lagringskonto som du förväntar dig.
På samma sätt kontrollerar du att eventType är en som du är beredd att bearbeta och anta inte att alla händelser som du får är de typer du förväntar dig.
De flesta meddelanden kommer nästan i realtid, men det finns inget servicenivåavtal kring den tid det tar för ett meddelande att komma fram. I vissa fall kan det ta några minuter innan meddelandet tas emot. Eftersom meddelanden kan tas emot efter en viss fördröjning använder du etag-fälten för att förstå om din information om objekt fortfarande är uppdaterad. Information om hur du använder fältet etag finns i Hantera samtidighet i Blob Storage.
Eftersom meddelanden kan komma i fel ordning använder du sekvenseringsfälten för att förstå ordningen på händelser på ett visst objekt. Sekvenserarens fält är ett strängvärde som representerar den logiska sekvensen av händelser för ett visst blobnamn. Du kan använda standardsträngjämförelse för att förstå den relativa sekvensen av två händelser med samma blobnamn.
Lagringshändelser garanterar leverans minst en gång till prenumeranter, vilket säkerställer att alla meddelanden matas ut. Men på grund av återförsök mellan serverdelsnoder och tjänster eller tillgänglighet för prenumerationer kan dubbletter av meddelanden förekomma. Mer information om leverans och återförsök av meddelanden finns i Leverans av Event Grid-meddelanden och försök igen.
Använd fältet blobType för att förstå vilken typ av åtgärder som tillåts på blobben och vilka klientbibliotekstyper du ska använda för att komma åt bloben. Giltiga värden är antingen
BlockBlob
ellerPageBlob
.Använd url-fältet med konstruktorerna
CloudBlockBlob
ochCloudAppendBlob
för att komma åt bloben.Ignorera fält som du inte förstår. Den här metoden hjälper dig att hålla dig motståndskraftig mot nya funktioner som kan läggas till i framtiden.
Om du vill se till att händelsen Microsoft.Storage.BlobCreated endast utlöses när en blockblob är helt bekräftad filtrerar du händelsen för anropen
CopyBlob
,PutBlob
PutBlockList
ellerFlushWithClose
REST API. Dessa API-anrop utlöser händelsen Microsoft.Storage.BlobCreated först när data har allokerats till en blockblob. Information om hur du skapar ett filter finns i Filtrera händelser för Event Grid.
Funktionsstöd
Stöd för den här funktionen kan påverkas genom att aktivera Data Lake Storage Gen2, NFS 3.0-protokoll (Network File System) eller SSH File Transfer Protocol (SFTP). Om du har aktiverat någon av dessa funktioner kan du läsa Stöd för Blob Storage-funktioner i Azure Storage-konton för att utvärdera stödet för den här funktionen.
Nästa steg
Lär dig mer om Event Grid och ge Blob Storage-händelser ett försök: