Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het doel van de wijzigingenfeed is het verstrekken van transactielogboeken van alle wijzigingen die plaatsvinden in de blobs en de blobmetagegevens in uw opslagaccount. De wijzigingenfeed biedt geordende, gegarandeerde, duurzame, onveranderbare en alleen-lezen logboeken van deze wijzigingen. Clienttoepassingen kunnen op elk gewenst moment deze logboeken lezen, zowel in streaming als in batchmodus. Elke wijziging genereert precies één transactielogboekvermelding, dus u hoeft niet meerdere logboekvermeldingen voor dezelfde wijziging te beheren. Met de wijzigingenfeed kunt u efficiënte en schaalbare oplossingen bouwen waarmee wijzigingsevenementen in uw Blob Storage-account tegen lage kosten worden verwerkt.
Zie Proceswijzigingsfeed in Azure Blob Storage voor meer informatie over het verwerken van records in de wijzigingenfeed.
Hoe de wijzigingenfeed werkt
Wijzigingenfeedrecords worden opgeslagen als blobs in een speciale container in uw opslagaccount tegen standaardkosten voor blobs. U kunt de bewaarperiode van deze bestanden beheren op basis van uw vereisten (zie de voorwaarden van de huidige release). Wijzigingsgebeurtenissen worden toegevoegd aan de wijzigingenfeed als records in de Apache Avro-specificatie: een compacte, snelle, binaire indeling die rijke gegevensstructuren met een inlineschema biedt. Deze indeling wordt veel gebruikt in het Hadoop-ecosysteem, Stream Analytics en Azure Data Factory.
U kunt deze logboeken asynchroon, incrementeel of volledig verwerken. Elk willekeurig aantal clienttoepassingen kan onafhankelijk van elkaar de wijzigingenfeed lezen, parallel en in hun eigen tempo. Analysetoepassingen zoals Apache Drill of Apache Spark kunnen logboeken rechtstreeks gebruiken als Avro-bestanden, waarmee u ze tegen lage kosten kunt verwerken, met hoge bandbreedte en zonder dat u een aangepaste toepassing hoeft te schrijven.
In het volgende diagram ziet u hoe records worden toegevoegd aan de wijzigingenfeed:
Ondersteuning voor wijzigingenfeeds is geschikt voor scenario's die gegevens verwerken op basis van objecten die zijn gewijzigd. Toepassingen kunnen bijvoorbeeld het volgende doen:
- Een secundaire index bijwerken, synchroniseren met een cache, zoekmachine of andere scenario's voor inhoudsbeheer.
- Inzichten en metrische gegevens van bedrijfsanalyses extraheren, op basis van wijzigingen die plaatsvinden in uw objecten, hetzij via streaming of in een batchmodus.
- Wijzigingen in uw objecten opslaan, controleren en analyseren, gedurende een bepaalde periode, voor beveiliging, naleving of informatie voor het beheer van ondernemingsgegevens.
- Bouw oplossingen voor het maken van back-ups, spiegelen of repliceren van objectstatussen in uw account voor noodbeheer of naleving.
- Bouw verbonden toepassingspijplijnen die reageren op wijzigingen of uitvoeringen plannen op basis van het gemaakte of gewijzigde object.
De wijzigingsfeed is een vereiste functie voor objectreplicatie en herstel op een bepaald tijdstip voor blokblobs.
Notitie
Wijzigingenfeed biedt een duurzaam, geordend logboekmodel van de wijzigingen die zich voordoen in een blob. Wijzigingen worden binnen enkele minuten na de wijziging in uw wijzigingenlogboek geschreven en beschikbaar gemaakt. Als uw toepassing veel sneller moet reageren op gebeurtenissen, kunt u in plaats daarvan Blob Storage-gebeurtenissen gebruiken. Blob Storage-gebeurtenissen bieden realtime eenmalige gebeurtenissen waarmee uw Azure Functions of toepassingen snel kunnen reageren op wijzigingen die zich voordoen in een blob.
De wijzigingenfeed in- en uitschakelen
U moet de wijzigingenfeed voor uw opslagaccount inschakelen om wijzigingen vast te leggen en op te nemen. Schakel de wijzigingenfeed uit om te stoppen met het vastleggen van wijzigingen. U kunt wijzigingen in- en uitschakelen met behulp van Azure Resource Manager-sjablonen in de portal of PowerShell.
Houd rekening met een paar dingen wanneer u de wijzigingenfeed inschakelt.
Er is slechts één wijzigingenfeed voor de blobservice in elk opslagaccount. Wijzigingenfeedrecords worden opgeslagen in de $blobchangefeed-container.
Wijzigingen maken, bijwerken en verwijderen worden alleen vastgelegd op het niveau van de blobservice.
De wijzigingenfeed legt alle wijzigingen vast voor alle beschikbare gebeurtenissen die op het account plaatsvinden. Clienttoepassingen kunnen naar behoefte gebeurtenistypen uitfilteren. (Zie de voorwaarden van de huidige release).
Alleen standaardaccounts voor algemeen gebruik v2, premium blockblob en "Blob Storage" kunnen de wijzigingenfeed inschakelen. Accounts waarvoor een hiërarchische naamruimte is ingeschakeld, worden momenteel niet ondersteund. V1-opslagaccounts voor algemeen gebruik worden niet ondersteund, maar kunnen zonder downtime worden geüpgraded naar algemeen gebruik v2. Zie Upgraden naar een GPv2-opslagaccount voor meer informatie.
Wijzigingenfeed bewaart standaard logboeken voor onbepaalde tijd. Bewaarperiode voor logboeken van wijzigingenfeeds kan worden geconfigureerd in dagen, zodat u kunt definiëren hoe lang de logboeken bewaard blijven voordat deze automatisch worden verwijderd. Dit bewaargedrag kan worden gewijzigd tijdens de eerste configuratie van de wijzigingenfeed of vervolgens via de optie Gegevensbescherming onder de sectie Gegevensbeheer in Azure Portal.
Als u alle bestaande wijzigingenfeedlogboeken wilt verwijderen, werkt u de bewaarperiode bij naar 1 dag en schakelt u vervolgens de functie Wijzigingenfeed uit.
Schakel de wijzigingenfeed in voor uw opslagaccount met behulp van Azure Portal:
Selecteer uw opslagaccount in Azure Portal.
Navigeer naar de optie Gegevensbeveiliging onder Gegevensbeheer.
Onder Bijhouden, selecteer Blobwijzigingsfeed inschakelen.
Kies de knop Opslaan om uw instellingen voor gegevensbeveiliging te bevestigen.
De wijzigingenfeed gebruiken
De wijzigingenfeed produceert verschillende metagegevens en logboekbestanden. Deze bestanden bevinden zich in de $blobchangefeed container van het opslagaccount. De $blobchangefeed container kan worden weergegeven via de Azure-portal of via Azure Storage Explorer.
Uw clienttoepassingen kunnen de wijzigingenfeed gebruiken met behulp van de processorbibliotheek voor de blob-wijzigingenfeed die wordt geleverd met de processor-SDK voor wijzigingenfeeds. Zie Logboeken voor wijzigingenfeeds verwerken in Azure Blob Storage voor meer informatie over het verwerken van records in de wijzigingenfeed.
Feedsegmenten wijzigen
De wijzigingenfeed is een logboek met wijzigingen die zijn ingedeeld in segmenten peruur, maar die om de paar minuten worden toegevoegd en bijgewerkt. Deze segmenten worden alleen gemaakt wanneer er in dat uur blobwijzigingsevenementen plaatsvinden. Hierdoor kan uw clienttoepassing wijzigingen gebruiken die zich binnen bepaalde tijdsbereiken voordoen zonder het hele logboek te hoeven doorzoeken. Zie de specificaties voor meer informatie.
Een beschikbaar uursegment van de wijzigingenfeed wordt beschreven in een manifestbestand dat de paden naar de wijzigingenfeedbestanden voor dat segment aangeeft. In de lijst van de $blobchangefeed/idx/segments/ virtuele map worden deze segmenten weergegeven die in volgorde van tijd zijn gerangschikt. Het pad van het segment beschrijft het begin van het uurlijkse tijdsbereik dat het segment vertegenwoordigt. U kunt die lijst gebruiken om de segmenten van logboeken te filteren die voor u interessant zijn.
Name Blob Type Blob Tier Length Content Type
---------------------------------------------------------------------- ----------- ----------- -------- ----------------
$blobchangefeed/idx/segments/1601/01/01/0000/meta.json BlockBlob 584 application/json
$blobchangefeed/idx/segments/2019/02/22/1810/meta.json BlockBlob 584 application/json
$blobchangefeed/idx/segments/2019/02/22/1910/meta.json BlockBlob 584 application/json
$blobchangefeed/idx/segments/2019/02/23/0110/meta.json BlockBlob 584 application/json
Notitie
De $blobchangefeed/idx/segments/1601/01/01/0000/meta.json wordt automatisch gemaakt wanneer u de wijzigingenfeed inschakelt. U kunt dit bestand veilig negeren. Het is een altijd leeg initialisatiebestand.
Het manifestbestand van het segment (meta.json) toont het pad van de wijzigingenfeedbestanden voor dat segment in de chunkFilePaths eigenschap. Hier volgt een voorbeeld van een segmentmanifestbestand.
{
"version": 0,
"begin": "2019-02-22T18:10:00.000Z",
"intervalSecs": 3600,
"status": "Finalized",
"config": {
"version": 0,
"configVersionEtag": "0x8d698f0fba563db",
"numShards": 2,
"recordsFormat": "avro",
"formatSchemaVersion": 1,
"shardDistFnVersion": 1
},
"chunkFilePaths": [
"$blobchangefeed/log/00/2019/02/22/1810/",
"$blobchangefeed/log/01/2019/02/22/1810/"
],
"storageDiagnostics": {
"version": 0,
"lastModifiedTime": "2019-02-22T18:11:01.187Z",
"data": {
"aid": "55e507bf-8006-0000-00d9-ca346706b70c"
}
}
}
Notitie
De $blobchangefeed container wordt pas weergegeven nadat u de functie voor de wijzigingenfeed hebt ingeschakeld voor uw account. U moet enkele minuten wachten nadat u de wijzigingenfeed hebt ingeschakeld voordat u de blobs in de container kunt vermelden.
Wijzig eventregistraties
De wijzigingenfeedbestanden bevatten een reeks wijzigings gebeurtenisrecords. Elke wijzigings gebeurtenisrecord komt overeen met één wijziging in een afzonderlijke blob. De records worden geserialiseerd en naar het bestand geschreven met behulp van de Apache Avro-formaatspecificatie. De records kunnen worden gelezen met behulp van de Avro-bestandsindelingspecificatie. Er zijn verschillende bibliotheken beschikbaar voor het verwerken van bestanden in die indeling.
Wijzigingsfeed-bestanden worden opgeslagen in de $blobchangefeed/log/ virtuele map als append blobs. Het eerste wijzigingenfeedbestand onder elk pad zal 00000 in de bestandsnaam hebben (bijvoorbeeld 00000.avro). De naam van elk volgend logboekbestand dat aan dat pad is toegevoegd, wordt verhoogd met 1 (bijvoorbeeld: 00001.avro).
Schema's voor gebeurtenisrecords
Zie het Azure Event Grid-gebeurtenisschema voor Blob Storage voor een beschrijving van elke eigenschap. De gebeurtenissen BlobPropertiesUpdated en BlobSnapshotCreated zijn momenteel exclusief voor wijzigingenfeeds en worden nog niet ondersteund voor Blob Storage-gebeurtenissen.
Notitie
De wijzigingenfeedbestanden voor een segment worden niet direct weergegeven nadat een segment is gemaakt. De vertragingsduur valt binnen het normale interval van de publicatielatentie van de wijzigingenfeed, die binnen een paar minuten na de wijziging valt.
Schemaversie 1
De volgende gebeurtenistypen kunnen worden vastgelegd in de wijzigingenfeedrecords met schemaversie 1:
- BlobGecreëerd
- Blob Verwijderd
- BlobEigenschappenBijgewerkt
- BlobmomentopnameGemaakt
In het volgende voorbeeld ziet u een gebeurtenisrecord wijzigen in JSON-indeling die gebruikmaakt van gebeurtenisschemaversie 1:
{
"schemaVersion": 1,
"topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
"subject": "/blobServices/default/containers/<container>/blobs/<blob>",
"eventType": "BlobCreated",
"eventTime": "2022-02-17T12:59:41.4003102Z",
"id": "322343e3-8020-0000-00fe-233467066726",
"data": {
"api": "PutBlob",
"clientRequestId": "f0270546-168e-4398-8fa8-107a1ac214d2",
"requestId": "322343e3-8020-0000-00fe-233467000000",
"etag": "0x8D9F2155CBF7928",
"contentType": "application/octet-stream",
"contentLength": 128,
"blobType": "BlockBlob",
"url": "https://www.myurl.com",
"sequencer": "00000000000000010000000000000002000000000000001d",
"storageDiagnostics": {
"bid": "9d725a00-8006-0000-00fe-233467000000",
"seq": "(2,18446744073709551615,29,29)",
"sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
}
}
}
Schemaversie 3
De volgende gebeurtenistypen kunnen worden vastgelegd in de wijzigingenfeedrecords met schemaversie 3:
- BlobGecreëerd
- Blob Verwijderd
- BlobEigenschappenBijgewerkt
- BlobmomentopnameGemaakt
In het volgende voorbeeld ziet u een wijzigings gebeurtenisrecord in JSON-indeling die gebruikmaakt van gebeurtenisschemaversie 3:
{
"schemaVersion": 3,
"topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
"subject": "/blobServices/default/containers/<container>/blobs/<blob>",
"eventType": "BlobCreated",
"eventTime": "2022-02-17T13:05:19.6798242Z",
"id": "eefe8fc8-8020-0000-00fe-23346706daaa",
"data": {
"api": "PutBlob",
"clientRequestId": "00c0b6b7-bb67-4748-a3dc-86464863d267",
"requestId": "eefe8fc8-8020-0000-00fe-233467000000",
"etag": "0x8D9F216266170DC",
"contentType": "application/octet-stream",
"contentLength": 128,
"blobType": "BlockBlob",
"url": "https://www.myurl.com",
"sequencer": "00000000000000010000000000000002000000000000001d",
"previousInfo": {
"SoftDeleteSnapshot": "2022-02-17T13:08:42.4825913Z",
"WasBlobSoftDeleted": "true",
"BlobVersion": "2024-02-17T16:11:52.0781797Z",
"LastVersion" : "2022-02-17T16:11:52.0781797Z",
"PreviousTier": "Hot"
},
"snapshot": "2022-02-17T16:09:16.7261278Z",
"blobPropertiesUpdated" : {
"ContentLanguage" : {
"current" : "pl-Pl",
"previous" : "nl-NL"
},
"CacheControl" : {
"current" : "max-age=100",
"previous" : "max-age=99"
},
"ContentEncoding" : {
"current" : "gzip, identity",
"previous" : "gzip"
},
"ContentMD5" : {
"current" : "Q2h1Y2sgSW51ZwDIAXR5IQ==",
"previous" : "Q2h1Y2sgSW="
},
"ContentDisposition" : {
"current" : "attachment",
"previous" : ""
},
"ContentType" : {
"current" : "application/json",
"previous" : "application/octet-stream"
}
},
"storageDiagnostics": {
"bid": "9d726370-8006-0000-00ff-233467000000",
"seq": "(2,18446744073709551615,29,29)",
"sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
}
}
}
Schemaversie 4
De volgende gebeurtenistypen kunnen worden vastgelegd in de wijzigingenfeedrecords met schemaversie 4:
- BlobGecreëerd
- Blob Verwijderd
- BlobEigenschappenBijgewerkt
- BlobmomentopnameGemaakt
- BlobOpslagniveauGewijzigd
- BlobAsyncOperatieGestart
- Herstelpuntmarkering Aangemaakt
In het volgende voorbeeld ziet u een wijzigings gebeurtenisrecord in JSON-indeling die gebruikmaakt van gebeurtenisschemaversie 4:
{
"schemaVersion": 4,
"topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
"subject": "/blobServices/default/containers/<container>/blobs/<blob>",
"eventType": "BlobCreated",
"eventTime": "2022-02-17T13:08:42.4835902Z",
"id": "ca76bce1-8020-0000-00ff-23346706e769",
"data": {
"api": "PutBlob",
"clientRequestId": "58fbfee9-6cf5-4096-9666-c42980beee65",
"requestId": "ca76bce1-8020-0000-00ff-233467000000",
"etag": "0x8D9F2169F42D701",
"contentType": "application/octet-stream",
"contentLength": 128,
"blobType": "BlockBlob",
"blobVersion": "2022-02-17T16:11:52.5901564Z",
"containerVersion": "0000000000000001",
"blobTier": "Archive",
"url": "https://www.myurl.com",
"sequencer": "00000000000000010000000000000002000000000000001d",
"previousInfo": {
"SoftDeleteSnapshot": "2022-02-17T13:08:42.4825913Z",
"WasBlobSoftDeleted": "true",
"BlobVersion": "2024-02-17T16:11:52.0781797Z",
"LastVersion" : "2022-02-17T16:11:52.0781797Z",
"PreviousTier": "Hot"
},
"snapshot": "2022-02-17T16:09:16.7261278Z",
"blobPropertiesUpdated" : {
"ContentLanguage" : {
"current" : "pl-Pl",
"previous" : "nl-NL"
},
"CacheControl" : {
"current" : "max-age=100",
"previous" : "max-age=99"
},
"ContentEncoding" : {
"current" : "gzip, identity",
"previous" : "gzip"
},
"ContentMD5" : {
"current" : "Q2h1Y2sgSW51ZwDIAXR5IQ==",
"previous" : "Q2h1Y2sgSW="
},
"ContentDisposition" : {
"current" : "attachment",
"previous" : ""
},
"ContentType" : {
"current" : "application/json",
"previous" : "application/octet-stream"
}
},
"asyncOperationInfo": {
"DestinationTier": "Hot",
"WasAsyncOperation": "true",
"CopyId": "copyId"
},
"storageDiagnostics": {
"bid": "9d72687f-8006-0000-00ff-233467000000",
"seq": "(2,18446744073709551615,29,29)",
"sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
}
}
}
Schemaversie 5
De volgende gebeurtenistypen kunnen worden vastgelegd in de wijzigingenfeedrecords met schemaversie 5:
- BlobGecreëerd
- Blob Verwijderd
- BlobEigenschappenBijgewerkt
- BlobmomentopnameGemaakt
- BlobOpslagniveauGewijzigd
- BlobAsyncOperatieGestart
In het volgende voorbeeld ziet u een wijzigings gebeurtenisrecord in JSON-indeling die gebruikmaakt van gebeurtenisschemaversie 5:
{
"schemaVersion": 5,
"topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
"subject": "/blobServices/default/containers/<container>/blobs/<blob>",
"eventType": "BlobCreated",
"eventTime": "2022-02-17T13:12:11.5746587Z",
"id": "62616073-8020-0000-00ff-233467060cc0",
"data": {
"api": "PutBlob",
"clientRequestId": "b3f9b39a-ae5a-45ac-afad-95ac9e9f2791",
"requestId": "62616073-8020-0000-00ff-233467000000",
"etag": "0x8D9F2171BE32588",
"contentType": "application/octet-stream",
"contentLength": 128,
"blobType": "BlockBlob",
"blobVersion": "2022-02-17T16:11:52.5901564Z",
"containerVersion": "0000000000000001",
"blobTier": "Archive",
"url": "https://www.myurl.com",
"sequencer": "00000000000000010000000000000002000000000000001d",
"previousInfo": {
"SoftDeleteSnapshot": "2022-02-17T13:12:11.5726507Z",
"WasBlobSoftDeleted": "true",
"BlobVersion": "2024-02-17T16:11:52.0781797Z",
"LastVersion" : "2022-02-17T16:11:52.0781797Z",
"PreviousTier": "Hot"
},
"snapshot" : "2022-02-17T16:09:16.7261278Z",
"blobPropertiesUpdated" : {
"ContentLanguage" : {
"current" : "pl-Pl",
"previous" : "nl-NL"
},
"CacheControl" : {
"current" : "max-age=100",
"previous" : "max-age=99"
},
"ContentEncoding" : {
"current" : "gzip, identity",
"previous" : "gzip"
},
"ContentMD5" : {
"current" : "Q2h1Y2sgSW51ZwDIAXR5IQ==",
"previous" : "Q2h1Y2sgSW="
},
"ContentDisposition" : {
"current" : "attachment",
"previous" : ""
},
"ContentType" : {
"current" : "application/json",
"previous" : "application/octet-stream"
}
},
"asyncOperationInfo": {
"DestinationTier": "Hot",
"WasAsyncOperation": "true",
"CopyId": "copyId"
},
"blobTagsUpdated": {
"previous": {
"Tag1": "Value1_3",
"Tag2": "Value2_3"
},
"current": {
"Tag1": "Value1_4",
"Tag2": "Value2_4"
}
},
"restorePointMarker": {
"rpi": "cbd73e3d-f650-4700-b90c-2f067bce639c",
"rpp": "cbd73e3d-f650-4700-b90c-2f067bce639c",
"rpl": "test-restore-label",
"rpt": "2022-02-17T13:56:09.3559772Z"
},
"storageDiagnostics": {
"bid": "9d726db1-8006-0000-00ff-233467000000",
"seq": "(2,18446744073709551615,29,29)",
"sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
}
}
}
Schemaversie 6
De volgende gebeurtenistypen kunnen worden vastgelegd in de wijzigingenfeedrecords met schemaversie 6:
- BlobGecreëerd
- Blob Verwijderd
- BlobEigenschappenBijgewerkt
- BlobmomentopnameGemaakt
- BlobOpslagniveauGewijzigd
- BlobAsyncOperatieGestart
Schemaversie 6 voegt ondersteuning toe voor koude laag.
In het volgende voorbeeld ziet u een wijzigings gebeurtenisrecord in JSON-indeling die gebruikmaakt van gebeurtenisschemaversie 6:
{
"schemaVersion": 6,
"topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
"subject": "/blobServices/default/containers/<container>/blobs/<blob>",
"eventType": "BlobCreated",
"eventTime": "2023-10-11T13:12:11.5746587Z",
"id": "62616073-8020-0000-00ff-233467060cc0",
"data": {
"api": "PutBlob",
"clientRequestId": "b3f9b39a-ae5a-45ac-afad-95ac9e9f2791",
"requestId": "62616073-8020-0000-00ff-233467000000",
"etag": "0x8D9F2171BE32588",
"contentType": "application/octet-stream",
"contentLength": 128,
"blobType": "BlockBlob",
"blobVersion": "2023-10-11T16:11:52.5901564Z",
"containerVersion": "0000000000000001",
"blobTier": "Archive",
"url": "https://www.myurl.com",
"sequencer": "00000000000000010000000000000002000000000000001d",
"previousInfo": {
"SoftDeleteSnapshot": "2023-10-11T13:12:11.5726507Z",
"WasBlobSoftDeleted": "true",
"BlobVersion": "2024-02-17T16:11:52.0781797Z",
"LastVersion" : "2023-10-11T16:11:52.0781797Z",
"PreviousTier": "Hot"
},
"snapshot" : "2023-10-11T16:09:16.7261278Z",
"blobPropertiesUpdated" : {
"ContentLanguage" : {
"current" : "pl-Pl",
"previous" : "nl-NL"
},
"CacheControl" : {
"current" : "max-age=100",
"previous" : "max-age=99"
},
"ContentEncoding" : {
"current" : "gzip, identity",
"previous" : "gzip"
},
"ContentMD5" : {
"current" : "Q2h1Y2sgSW51ZwDIAXR5IQ==",
"previous" : "Q2h1Y2sgSW="
},
"ContentDisposition" : {
"current" : "attachment",
"previous" : ""
},
"ContentType" : {
"current" : "application/json",
"previous" : "application/octet-stream"
}
},
"asyncOperationInfo": {
"DestinationTier": "Hot",
"WasAsyncOperation": "true",
"CopyId": "copyId"
},
"blobTagsUpdated": {
"previous": {
"Tag1": "Value1_3",
"Tag2": "Value2_3"
},
"current": {
"Tag1": "Value1_4",
"Tag2": "Value2_4"
}
},
"restorePointMarker": {
"rpi": "cbd73e3d-f650-4700-b90c-2f067bce639c",
"rpp": "cbd73e3d-f650-4700-b90c-2f067bce639c",
"rpl": "test-restore-label",
"rpt": "2023-10-11T13:56:09.3559772Z"
},
"storageDiagnostics": {
"bid": "9d726db1-8006-0000-00ff-233467000000",
"seq": "(2,18446744073709551615,29,29)",
"sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
}
}
}
Specificaties
Records voor wijzigingengebeurtenissen worden alleen toegevoegd aan de wijzigingenfeed. Zodra deze records zijn toegevoegd, zijn ze onveranderbaar en is recordpositie stabiel. Clienttoepassingen kunnen hun eigen controlepunt behouden op de leespositie van de wijzigingenfeed.
Wijzigingsgebeurtenissenrecords worden toegevoegd binnen een volgorde van enkele minuten van de wijziging. Clienttoepassingen kunnen ervoor kiezen om records te gebruiken wanneer ze worden toegevoegd voor streamingtoegang of in bulksgewijs op een ander moment.
Wijzigingsgebeurtenisrecords worden gerangschikt op modificatievolgorde per blob. Volgorde van wijzigingen in blobs is niet gedefinieerd in Azure Blob Storage. Alle wijzigingen in een eerder segment zijn vóór eventuele wijzigingen in volgende segmenten.
Wijzigingsgebeurtenissen worden geserialiseerd naar het logbestand met behulp van de Apache Avro 1.8.2 indelingsspecificatie.
Gebeurtenisrecords wijzigen waarvan de
eventTypewaardeControlinterne systeemrecords zijn en geen wijziging in objecten in uw account weergeven. U kunt deze records veilig negeren.Waarden in de
storageDiagnosticseigenschappentas zijn alleen bedoeld voor intern gebruik en niet ontworpen voor gebruik door uw toepassing. Uw toepassingen mogen geen contractuele afhankelijkheid van die gegevens hebben. U kunt deze eigenschappen veilig negeren.De tijd die wordt vertegenwoordigd door het segment is bij benadering met de grenzen van 15 minuten. Om ervoor te zorgen dat alle records binnen een opgegeven tijd worden gebruikt, verbruikt u het opeenvolgende vorige en volgende uursegment.
Elk segment kan een ander aantal
chunkFilePathshebben vanwege interne partitionering van de logstroom om de publicatie-throughput te beheren. De logboekbestanden in elkchunkFilePathbestand bevatten gegarandeerd wederzijds exclusieve blobs en kunnen parallel worden gebruikt en verwerkt zonder de volgorde van wijzigingen per blob tijdens de iteratie te schenden.De segmenten beginnen in
Publishingstatus. Zodra het toevoegen van de records aan het segment is voltooid, is ditFinalized. Logboekbestanden in een segment dat is gedateerd na de datum van deLastConsumableeigenschap in het$blobchangefeed/meta/Segments.jsonbestand, mogen niet worden gebruikt door uw toepassing. Hier volgt een voorbeeld van deLastConsumableeigenschap in een$blobchangefeed/meta/Segments.jsonbestand:
{
"version": 0,
"lastConsumable": "2019-02-23T01:10:00.000Z",
"storageDiagnostics": {
"version": 0,
"lastModifiedTime": "2019-02-23T02:24:00.556Z",
"data": {
"aid": "55e551e3-8006-0000-00da-ca346706bfe4",
"lfz": "2019-02-22T19:10:00.000Z"
}
}
}
Voorwaarden en bekende problemen
In deze sectie worden bekende problemen en voorwaarden in de huidige release van de wijzigingenfeed beschreven.
- Als u firewallregels voor uw opslagaccount inschakelt, worden aanvragen voor levenscyclusbeheer om blobs binnen $blobchangefeed container te verwijderen mogelijk geblokkeerd. U kunt deze aanvragen deblokkeren door uitzonderingen op te geven voor vertrouwde Microsoft-services. Zie de sectie Uitzonderingen in Firewalls en virtuele netwerken configureren voor meer informatie.
- De
LastConsumableeigenschap van het segments.json-bestand vermeldt niet het eerste segment dat de wijzigingenfeed voltooit. Dit probleem treedt pas op nadat het eerste segment is voltooid. Alle volgende segmenten na het eerste uur worden nauwkeurig vastgelegd in deLastConsumableeigenschap. - U kunt de $blobchangefeed container momenteel niet zien wanneer u de ListContainers-API aanroept. U kunt de inhoud bekijken door de ListBlobs-API rechtstreeks op de $blobchangefeed container aan te roepen.
- Failover van opslagaccounts van geografisch redundante opslagaccounts waarvoor de wijzigingenfeed is ingeschakeld, kan leiden tot inconsistenties tussen de wijzigingenfeedlogboeken en de blobgegevens en/of metagegevens. Voor meer informatie over dergelijke inconsistenties, zie Wijzigingsfeed en inconsistenties in blobgegevens.
- Mogelijk ziet u 404-fouten (niet gevonden) en 412 (voorwaarde mislukt) die zijn gerapporteerd in de $blobchangefeed containers. U kunt deze fouten negeren.
- BlobDeleted-gebeurtenissen worden niet gegenereerd wanneer blobversies of momentopnamen worden verwijderd. Een BlobDeleted-gebeurtenis wordt alleen toegevoegd wanneer een basis-blob (hoofdblob) wordt verwijderd.
- Gebeurtenisrecords worden alleen toegevoegd voor wijzigingen in blobs die het gevolg zijn van aanvragen naar het Blob Service-eindpunt (
blob.core.windows.net). Wijzigingen die het gevolg zijn van aanvragen naar het Data Lake Storage-eindpunt (dfs.core.windows.net) worden niet geregistreerd en worden niet weergegeven in wijzigingenfeedrecords.
Veelgestelde vragen
Zie Veelgestelde vragen over ondersteuning voor wijzigingenfeeds.
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.