Stöd för ändringsflöde i Azure Blob Storage

Syftet med ändringsflödet är att tillhandahålla transaktionsloggar för alla ändringar som sker i blobarna och blobmetadata i ditt lagringskonto. Ändringsflödet ger ordnad, garanterad, varaktig, oföränderlig, skrivskyddad logg över dessa ändringar. Klientprogram kan läsa dessa loggar när som helst, antingen i direktuppspelning eller i batchläge. Varje ändring genererar exakt en transaktionsloggpost, så du behöver inte hantera flera loggposter för samma ändring. Med ändringsflödet kan du skapa effektiva och skalbara lösningar som bearbetar ändringshändelser som inträffar i ditt Blob Storage-konto till en låg kostnad.

Information om hur du bearbetar poster i ändringsflödet finns i Processändringsflöde i Azure Blob Storage.

Så här fungerar ändringsflödet

Ändringsflödesposter lagras som blobar i en särskild container i ditt lagringskonto till standardpriskostnaden för blobar. Du kan styra kvarhållningsperioden för dessa filer baserat på dina krav (se villkoren för den aktuella versionen). Ändringshändelser läggs till i ändringsflödet som poster i Apache Avro-formatspecifikationen: ett kompakt, snabbt binärt format som ger omfattande datastrukturer med infogat schema. Det här formatet används ofta i Hadoop-ekosystemet, Stream Analytics och Azure Data Factory.

Du kan bearbeta dessa loggar asynkront, stegvis eller i sin helhet. Valfritt antal klientprogram kan självständigt läsa ändringsflödet parallellt och i sin egen takt. Analysprogram som Apache Drill eller Apache Spark kan använda loggar direkt som Avro-filer, vilket gör att du kan bearbeta dem till en låg kostnad, med hög bandbredd och utan att behöva skriva ett anpassat program.

Följande diagram visar hur poster läggs till i ändringsflödet:

Diagram showing how the change feed works to provide an ordered log of changes to blobs

Stöd för ändringsflöde passar bra för scenarier som bearbetar data baserat på objekt som har ändrats. Program kan till exempel:

  • Uppdatera ett sekundärt index, synkronisera med ett cacheminne, sökmotor eller andra scenarier för innehållshantering.
  • Extrahera företagsanalysinsikter och mått baserat på ändringar som görs i dina objekt, antingen med direktuppspelning eller i ett gruppläge.
  • Lagra, granska och analysera ändringar i dina objekt under en viss tidsperiod, för att se säkerhet, efterlevnad eller information om företagets datahantering.
  • Skapa lösningar för säkerhetskopiering, spegling eller replikering av objekttillstånd i ditt konto för katastrofhantering eller efterlevnad.
  • Skapa anslutna programpipelines som reagerar på ändringshändelser eller schemakörningar baserat på skapat eller ändrat objekt.

Ändringsflöde är en förutsättning för objektreplikering och återställning till tidpunkt för blockblobar.

Kommentar

Ändringsflöde ger en beständig, ordnad loggmodell för de ändringar som sker i en blob. Ändringar skrivs och görs tillgängliga i ändringsflödesloggen inom några minuter efter ändringen. Om ditt program måste reagera mycket snabbare på händelser än så kan du överväga att använda Blob Storage-händelser i stället. Blob Storage-händelser tillhandahåller engångshändelser i realtid som gör att dina Azure Functions eller program snabbt kan reagera på ändringar som sker i en blob.

Aktivera och inaktivera ändringsflödet

Du måste aktivera ändringsflödet på ditt lagringskonto för att börja samla in och registrera ändringar. Inaktivera ändringsflödet för att sluta samla in ändringar. Du kan aktivera och inaktivera ändringar med hjälp av Azure Resource Manager-mallar på portalen eller PowerShell.

Här är några saker att tänka på när du aktiverar ändringsflödet.

  • Det finns bara en ändringsfeed för blobtjänsten i varje lagringskonto. Ändringsflödesposter lagras i containern $blobchangefeed .

  • Ändringarna Skapa, Uppdatera och Ta bort registreras endast på blobtjänstnivå.

  • Ändringsflödet samlar in alla ändringar för alla tillgängliga händelser som inträffar på kontot. Klientprogram kan filtrera bort händelsetyper efter behov. (Se villkoren för den aktuella versionen).

  • Endast standardkonton för generell användning v2, Premium-blockblob och Blob Storage kan aktivera ändringsflödet. Konton med ett hierarkiskt namnområde aktiverat stöds inte för närvarande. Allmänna v1-lagringskonton stöds inte men kan uppgraderas till generell användning v2 utan driftstopp. Mer information finns i Uppgradera till ett GPv2-lagringskonto .

Aktivera ändringsflöde för ditt lagringskonto med hjälp av Azure-portalen:

  1. I Azure-portalen väljer du ditt lagringskonto.

  2. Gå till alternativet Dataskydd under Datahantering.

  3. Under Spårning väljer du Aktivera blobändringsflöde.

  4. Välj knappen Spara för att bekräfta dina dataskyddsinställningar.

    Screenshot showing how to enable change feed in Azure portal

Använda ändringsflödet

Ändringsflödet genererar flera metadata och loggfiler. Dessa filer finns i $blobchangefeed containern för lagringskontot. Den $blobchangefeed containern kan visas antingen via Azure-portalen eller via Azure Storage Explorer.

Dina klientprogram kan använda ändringsflödet med hjälp av det blobändringsflödesprocessorbibliotek som medföljer ändringsflödesprocessorns SDK. Information om hur du bearbetar poster i ändringsflödet finns i Bearbeta ändringsflödesloggar i Azure Blob Storage.

Ändra flödessegment

Ändringsflödet är en logg över ändringar som ordnas i timsegmentmen läggs till och uppdateras med några minuters mellanrum. Dessa segment skapas bara när det finns blobändringshändelser som inträffar under den timmen. Detta gör att klientprogrammet kan använda ändringar som inträffar inom vissa tidsperioder utan att behöva söka igenom hela loggen. Mer information finns i Specifikationer.

Ett tillgängligt timsegment i ändringsflödet beskrivs i en manifestfil som anger sökvägarna till ändringsflödesfilerna för det segmentet. Listan över den $blobchangefeed/idx/segments/ virtuella katalogen visar dessa segment ordnade efter tid. Segmentets sökväg beskriver början av det tidsintervall per timme som segmentet representerar. Du kan använda den listan för att filtrera bort de segment av loggar som är av intresse för dig.

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

Kommentar

$blobchangefeed/idx/segments/1601/01/01/0000/meta.json Skapas automatiskt när du aktiverar ändringsflödet. Du kan ignorera den här filen på ett säkert sätt. Det är en alltid tom initieringsfil.

Segmentmanifestfilen (meta.json) visar sökvägen till ändringsflödesfilerna för segmentet i chunkFilePaths egenskapen. Här är ett exempel på en segmentmanifestfil.

{
    "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"
        }
    }
}

Kommentar

Containern $blobchangefeed visas först när du har aktiverat ändringsflödesfunktionen på ditt konto. Du måste vänta några minuter efter att du har aktiverat ändringsflödet innan du kan lista blobarna i containern.

Ändra händelseposter

Ändringsflödesfilerna innehåller en serie ändringshändelseposter. Varje ändringshändelsepost motsvarar en ändring av en enskild blob. Posterna serialiseras och skrivs till filen med apache Avro-formatspecifikationen . Posterna kan läsas med hjälp av Avro-filformatspecifikationen. Det finns flera bibliotek tillgängliga för att bearbeta filer i det formatet.

Ändringsflödesfiler lagras i den $blobchangefeed/log/ virtuella katalogen som tilläggsblobar. Den första ändringsflödesfilen under varje sökväg kommer att ha 00000 i filnamnet (till exempel 00000.avro). Namnet på varje efterföljande loggfil som läggs till i sökvägen ökar med 1 (till exempel: 00001.avro).

Scheman för händelseposter

En beskrivning av varje egenskap finns i Azure Event Grid-händelseschema för Blob Storage. Händelserna BlobPropertiesUpdated och BlobSnapshotCreated är för närvarande exklusiva för ändringsflöde och stöds ännu inte för Blob Storage-händelser.

Kommentar

Ändringsflödesfilerna för ett segment visas inte omedelbart när ett segment har skapats. Fördröjningens längd ligger inom det normala intervallet för publiceringsfördröjningen för ändringsflödet, som ligger inom några minuter efter ändringen.

Schemaversion 1

Följande händelsetyper kan samlas in i ändringsflödesposterna med schemaversion 1:

  • BlobSkapad
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotSkapad

I följande exempel visas en ändringshändelsepost i JSON-format som använder händelseschema version 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"
        }
    }
}

Schemaversion 3

Följande händelsetyper kan samlas in i ändringsflödesposterna med schemaversion 3:

  • BlobSkapad
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotSkapad

I följande exempel visas en ändringshändelsepost i JSON-format som använder händelseschema version 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"
        }
    }
}

Schemaversion 4

Följande händelsetyper kan samlas in i ändringsflödesposterna med schemaversion 4:

  • BlobSkapad
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotSkapad
  • BlobTierChanged
  • BlobAsyncOperationInitiated
  • RestorePointMarkerSkapad

I följande exempel visas en ändringshändelsepost i JSON-format som använder händelseschema version 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"
        }
    }
}

Schemaversion 5

Följande händelsetyper kan samlas in i ändringsflödesposterna med schemaversion 5:

  • BlobSkapad
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotSkapad
  • BlobTierChanged
  • BlobAsyncOperationInitiated

I följande exempel visas en ändringshändelsepost i JSON-format som använder händelseschema version 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"
        }
    }
}

Schemaversion 6

Följande händelsetyper kan samlas in i ändringsflödesposterna med schemaversion 6:

  • BlobSkapad
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotSkapad
  • BlobTierChanged
  • BlobAsyncOperationInitiated

Schema version 6 lägger till stöd för kall nivå.

I följande exempel visas en ändringshändelsepost i JSON-format som använder händelseschema version 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"
        }
    }
}

Specifikationer

  • Ändringshändelser läggs bara till i ändringsflödet. När de här posterna har bifogats är de oföränderliga och postpositionen är stabil. Klientprogram kan behålla sin egen kontrollpunkt i ändringsflödets läsposition.

  • Ändringshändelseposter läggs till inom några minuter efter ändringen. Klientprogram kan välja att använda poster när de läggs till för direktuppspelningsåtkomst eller massvis vid någon annan tidpunkt.

  • Ändringshändelseposter ordnas efter ändringsordning per blob. Ordningen på ändringar mellan blobar är odefinierad i Azure Blob Storage. Alla ändringar i ett tidigare segment sker före eventuella ändringar i efterföljande segment.

  • Ändringshändelseposter serialiseras i loggfilen med hjälp av Apache Avro 1.8.2-formatspecifikationen .

  • Ändra händelseposter där eventType har värdet Control är interna systemposter och återspeglar inte en ändring av objekt i ditt konto. Du kan ignorera dessa poster på ett säkert sätt.

  • Värden i egenskapsväskan storageDiagnostics är endast avsedda för internt bruk och är inte utformade för användning av ditt program. Dina program bör inte ha något avtalsberoende av dessa data. Du kan ignorera dessa egenskaper på ett säkert sätt.

  • Den tid som representeras av segmentet är ungefärlig med gränser på 15 minuter. För att säkerställa förbrukning av alla poster inom en angiven tid använder du segmentet föregående och nästa timme.

  • Varje segment kan ha olika antal på grund av chunkFilePaths intern partitionering av loggströmmen för att hantera publiceringsdataflödet. Loggfilerna i var och en chunkFilePath kommer garanterat att innehålla ömsesidigt uteslutande blobar och kan användas och bearbetas parallellt utan att ändra ordningen per blob under iterationen.

  • Segmenten börjar i Publishing status. När posterna i segmentet har slutförts blir Finalizeddet . Loggfiler i ett segment som är daterat efter datumet för LastConsumable egenskapen i $blobchangefeed/meta/Segments.json filen ska inte användas av ditt program. Här är ett exempel på egenskapen LastConsumablei en $blobchangefeed/meta/Segments.json fil:

{
    "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"
        }
    }
}

Villkor och kända problem

I det här avsnittet beskrivs kända problem och villkor i den aktuella versionen av ändringsflödet.

  • Om du aktiverar brandväggsregler för ditt lagringskonto kan begäranden om livscykelhantering för att ta bort blobar i $blobchangefeed container blockeras. Du kan avblockera dessa begäranden genom att tillhandahålla undantag för betrodda Microsoft-tjänster. Mer information finns i avsnittet Undantag i Konfigurera brandväggar och virtuella nätverk.
  • Egenskapen LastConsumable för filen segments.json visar inte det allra första segment som ändringsflödet slutför. Det här problemet uppstår först när det första segmentet har slutförts. Alla efterföljande segment efter den första timmen registreras korrekt i egenskapen LastConsumable .
  • Du kan för närvarande inte se $blobchangefeed-containern när du anropar ListContainers-API:et. Du kan visa innehållet genom att anropa ListBlobs API på $blobchangefeed containern direkt.
  • Redundansväxling av lagringskonto för geo-redundanta lagringskonton med ändringsflödet aktiverat kan leda till inkonsekvenser mellan ändringsflödesloggarna och blobdata och/eller metadata. Mer information om sådana inkonsekvenser finns i Inkonsekvenser i ändringsflöde och blobdata.
  • Du kan se felen 404 (hittades inte) och 412 (förhandsvillkor misslyckades) som rapporterats på $blobchangefeed - och $blobchangefeedsys-containrarna . Du kan ignorera dessa fel utan att oroa dig.
  • BlobDeleted-händelser genereras inte när blobversioner eller ögonblicksbilder tas bort. En BlobDeleted-händelse läggs bara till när en basblob (rot) tas bort.
  • Händelseposter läggs bara till för ändringar i blobar som uppstår från begäranden till Blob Service-slutpunkten (blob.core.windows.net). Ändringar som beror på begäranden till Data Lake Storage-slutpunkten (dfs.core.windows.net) loggas inte och visas inte i ändringsflödesposter.

Vanliga frågor och svar

Se Vanliga frågor och svar om ändringsflödessupport.

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.