Dela via


Azure Storage-blobinventering

Azure Storage Blob Inventory innehåller en lista över containrar, blobar, blobversioner och ögonblicksbilder i ditt lagringskonto, tillsammans med deras associerade egenskaper. Den genererar en utdatarapport i antingen kommaavgränsade värden (CSV) eller Apache Parquet-format dagligen eller varje vecka. Du kan använda rapporten för att granska kvarhållning, bevarande av juridiska skäl eller krypteringsstatus för ditt lagringskontoinnehåll, eller så kan du använda den för att förstå den totala datastorleken, åldern, nivåfördelningen eller andra attribut för dina data. Du kan också använda blobinventering för att förenkla dina affärsarbetsflöden eller påskynda databearbetningsjobb genom att använda blobinventering som en schemalagd automatisering av API:erna listcontainrar och listblobar. Med blobinventeringsregler kan du filtrera innehållet i rapporten efter blobtyp, prefix eller genom att välja de blobegenskaper som ska inkluderas i rapporten.

Azure Storage Blob Inventory är tillgängligt för följande typer av lagringskonton:

  • Standard generell användning v2
  • Premium-blockbloblagring
  • Blobb-lagring

Inventeringsfunktioner

I följande lista beskrivs funktioner som är tillgängliga i den aktuella versionen av Azure Storage-blobinventeringen.

  • Inventeringsrapporter för blobar och containrar

    Du kan generera inventeringsrapporter för blobar och containrar. En rapport för blobar kan innehålla basblobar, ögonblicksbilder, innehållslängd, blobversioner och deras associerade egenskaper, till exempel skapandetid, senast ändrad tid. Tomma containrar visas inte i blobinventeringsrapporten. En rapport för containrar beskriver containrar och deras associerade egenskaper, till exempel status för oföränderlighetsprincip, status för bevarande av juridiska skäl.

  • Anpassat schema

    Du kan välja vilka fält som ska visas i rapporter. Välj från en lista över fält som stöds. Listan visas senare i den här artikeln.

  • CSV- och Apache Parquet-utdataformat

    Du kan generera en inventeringsrapport i antingen CSV- eller Apache Parquet-utdataformat.

  • Manifestfil och Azure Event Grid-händelse per inventeringsrapport

    En manifestfil och en Azure Event Grid-händelse genereras per inventeringsrapport. Dessa beskrivs senare i den här artikeln.

Aktivera inventeringsrapporter

Aktivera blobinventeringsrapporter genom att lägga till en princip med en eller flera regler i ditt lagringskonto. Vägledning finns i Aktivera Azure Storage-blobinventeringsrapporter.

Uppgradera en inventeringsprincip

Om du är en befintlig Azure Storage-blobinventeringsanvändare som har konfigurerat inventeringen före juni 2021 kan du börja använda de nya funktionerna genom att läsa in principen och sedan spara tillbaka principen när du har gjort ändringar. När du läser in principen igen fylls de nya fälten i principen med standardvärden. Du kan ändra dessa värden om du vill. Dessutom kommer följande två funktioner att vara tillgängliga.

  • En målcontainer stöds nu för varje regel i stället för att bara stödjas för principen.

  • En manifestfil och En Azure Event Grid-händelse genereras nu per regel i stället för per princip.

Inventeringsprincip

En inventeringsrapport konfigureras genom att lägga till en inventeringsprincip med en eller flera regler. En inventeringsprincip är en samling regler i ett JSON-dokument.

{
  "enabled": true,
  "rules": [
  {
    "enabled": true,
    "name": "inventoryrule1",
    "destination": "inventory-destination-container",
    "definition": {. . .}
  },
  {
    "enabled": true,
    "name": "inventoryrule2",
    "destination": "inventory-destination-container",
    "definition": {. . .}
  }]
}

Visa JSON för en inventeringsprincip genom att välja fliken Kodvy i avsnittet Blobinventering i Azure-portalen.

Parameternamn Parametertyp Kommentar Obligatorisk?
enabled boolean Används för att inaktivera hela principen. När värdet är true åsidosätter det aktiverade fältet på regelnivå den här parametern. När det är inaktiverat inaktiveras inventeringen för alla regler. Ja
regler Matris med regelobjekt Minst en regel krävs i en princip. Upp till 100 regler stöds per princip. Ja

Inventeringsregler

En regel samlar in filtreringsvillkor och utdataparametrar för att generera en inventeringsrapport. Varje regel skapar en inventeringsrapport. Regler kan ha överlappande prefix. En blob kan visas i mer än en inventering beroende på regeldefinitioner.

Varje regel i principen har flera parametrar:

Parameternamn Parametertyp Kommentar Obligatorisk?
name sträng Ett regelnamn kan innehålla upp till 256 skiftlägeskänsliga alfanumeriska tecken. Namnet måste vara unikt i en princip. Ja
enabled boolean En flagga som tillåter att en regel aktiveras eller inaktiveras. Standardvärdet är sant. Ja
Definition Definition av JSON-inventeringsregel Varje definition består av en regelfilteruppsättning. Ja
destination sträng Målcontainern där alla inventeringsfiler genereras. Målcontainern måste redan finnas.

Den globala blobinventeringsaktiverade flaggan har företräde framför den aktiverade parametern i en regel.

Regeldefinition

Parameternamn Parametertyp Kommentar Obligatoriskt
filter json Filter avgör om en blob eller container ingår i inventeringen eller inte. Ja
format sträng Avgör utdata från inventeringsfilen. Giltiga värden är csv (för CSV-format) och parquet (för Apache Parquet-format). Ja
objectType sträng Anger om det här är en inventeringsregel för blobar eller containrar. Giltiga värden är blob och container. Ja
schemalägg sträng Schema som den här regeln ska köras på. Giltiga värden är daily och weekly. Ja
schemaFält Json-matris Lista över schemafält som ska ingå i inventeringen. Ja

Regelfilter

Det finns flera filter för att anpassa en blobinventeringsrapport:

Filternamn Filtertyp Kommentar Obligatorisk?
blobTypes Matris med fördefinierade uppräkningsvärden Giltiga värden är blockBlob och appendBlob för hierarkiska namnområdesaktiverade konton, och blockBlob, appendBloboch pageBlob för andra konton. Det här fältet gäller inte för inventering på en container (objectType: container). Ja
creationTime Antal Anger antalet dagar sedan som bloben måste ha skapats. Ett värde för 3 inkluderar till exempel endast de blobar som har skapats under de senaste tre dagarna i rapporten. Nej
prefixMatch Matris med upp till 10 strängar för prefix som ska matchas. Om du inte definierar prefixMatch eller anger ett tomt prefix gäller regeln för alla blobar i lagringskontot. Ett prefix måste vara ett containernamnprefix eller ett containernamn. Till exempel container, container1/foo. Nej
excludePrefix Matris med upp till 10 strängar för prefix som ska undantas. Anger de blobsökvägar som ska undantas från inventeringsrapporten.

Ett excludePrefix måste vara ett containernamnsprefix eller ett containernamn. Ett tomt excludePrefix skulle innebära att alla blobar med namn som matchar en prefixMatch-sträng visas.

Om du vill inkludera ett visst prefix, men exkludera vissa specifika delmängder från det, kan du använda filtret excludePrefix. Om du till exempel vill inkludera alla blobar under container-a förutom de som finns under mappen container-a/folderska prefixMatch anges till container-a och excludePrefix anges till container-a/folder.
Nej
includeSnapshots boolean Anger om inventeringen ska innehålla ögonblicksbilder. Standard är false. Det här fältet gäller inte för inventering på en container (objectType: container). Nej
includeBlobVersions boolean Anger om lagret ska innehålla blobversioner. Standard är false. Det här fältet gäller inte för inventering på en container (objectType: container). Nej
includeDeleted boolean Anger om lagret ska innehålla borttagna blobar. Standard är false. I konton som har ett hierarkiskt namnområde innehåller det här filtret mappar och innehåller även blobar som är i ett mjukt borttaget tillstånd.

Endast de mappar och filer (blobar) som uttryckligen tas bort visas i rapporter. Underordnade mappar och filer som tas bort till följd av att en överordnad mapp tas bort ingår inte i rapporten.
Nej

Visa JSON för inventeringsregler genom att välja fliken Kodvy i avsnittet Blobinventering i Azure-portalen. Filter anges i en regeldefinition.

{
  "destination": "inventory-destination-container",
  "enabled": true,
  "rules": [
  {
    "definition": {
      "filters": {
        "blobTypes": ["blockBlob", "appendBlob", "pageBlob"],
        "prefixMatch": ["inventorytestcontainer1", "inventorytestcontainer2/abcd", "etc"],
        "excludePrefix": ["inventorytestcontainer10", "etc/logs"],
        "includeSnapshots": false,
        "includeBlobVersions": true,
      },
      "format": "csv",
      "objectType": "blob",
      "schedule": "daily",
      "schemaFields": ["Name", "Creation-Time"]
    },
    "enabled": true,
    "name": "blobinventorytest",
    "destination": "inventorydestinationContainer"
  },
  {
    "definition": {
      "filters": {
        "prefixMatch": ["inventorytestcontainer1", "inventorytestcontainer2/abcd", "etc"]
      },
      "format": "csv",
      "objectType": "container",
      "schedule": "weekly",
      "schemaFields": ["Name", "HasImmutabilityPolicy", "HasLegalHold"]
    },
    "enabled": true,
    "name": "containerinventorytest",
    "destination": "inventorydestinationContainer"
    }
  ]
}

Anpassade schemafält som stöds för blobinventering

Kommentar

Kolumnen Data Lake Storage Gen2 visar stöd för konton som har funktionen hierarkisk namnrymd aktiverad.

Fält Blob Storage (standardstöd) Data Lake Storage Gen2
Namn (krävs) Ja Ja
Skapandetid Ja Ja
Senast ändrad Ja Ja
LastAccessTime1 Ja Ja
ETag Ja Ja
Innehållslängd Ja Ja
Innehållstyp Ja Ja
Content-Encoding Ja Ja
Content-Language Ja Ja
Content-CRC64 Ja Ja
Content-MD5 Ja Ja
Cache-Control Ja Ja
Cachedisposition Ja Ja
BlobType Ja Ja
AccessTier Ja Ja
AccessTierChangeTime Ja Ja
LeaseStatus Ja Ja
LeaseState Ja Ja
ServerEncrypted Ja Ja
CustomerProvidedKeySHA256 Ja Ja
Metadata Ja Ja
Förfallotid Nej Ja
hdi_isfolder Nej Ja
Ägare Nej Ja
Grupp Nej Ja
Behörigheter Nej Ja
Acl Nej Ja
Ögonblicksbild (tillgänglig och obligatorisk när du väljer att inkludera ögonblicksbilder i rapporten) Ja Ja
Borttagen Ja Ja
DeletedId Nej Ja
DeletedTime Nej Ja
RemainingRetentionDays Ja Ja
VersionId (Tillgängligt och obligatoriskt när du väljer att inkludera blobversioner i rapporten) Ja Nej
IsCurrentVersion (tillgängligt och obligatoriskt när du väljer att inkludera blobversioner i rapporten) Ja Nej
TagCount Ja Nej
Taggar Ja Nej
CopyId Ja Ja
CopySource Ja Ja
CopyStatus Ja Ja
CopyProgress Ja Ja
CopyCompletionTime Ja Ja
CopyStatusDescription Ja Ja
ImmutabilityPolicyUntilDate Ja Ja
OföränderlighetPolicyMode Ja Ja
LegalHold Ja Ja
RehydratePriority Ja Ja
ArchiveStatus Ja Ja
EncryptionScope Ja Ja
IncrementalCopy Ja Ja
x-ms-blob-sequence-number Ja Nej

1 Inaktiverad som standard. Du kan också aktivera spårning av åtkomsttid.

Anpassade schemafält som stöds för containerinventering

Kommentar

Kolumnen Data Lake Storage Gen2 visar stöd för konton som har funktionen hierarkisk namnrymd aktiverad.

Fält Blob Storage (standardstöd) Data Lake Storage Gen2
Namn (krävs) Ja Ja
Senast ändrad Ja Ja
ETag Ja Ja
LeaseStatus Ja Ja
LeaseState Ja Ja
LeaseDuration Ja Ja
Metadata Ja Ja
PublicAccess Ja Ja
DefaultEncryptionScope Ja Ja
DenyEncryptionScopeOverride Ja Ja
HasImmutabilityPolicy Ja Ja
HasLegalHold Ja Ja
OföränderligStorageWithVersioningEnabled Ja Ja
Borttagen (visas endast om ta med borttagna containrar har valts) Ja Ja
Version (visas endast om ta med borttagna containrar har valts) Ja Ja
DeletedTime (visas endast om ta med borttagna containrar är markerat) Ja Ja
RemainingRetentionDays (visas endast om ta med borttagna containrar har valts) Ja Ja

Inventeringskörning

Om du konfigurerar en regel att köras dagligen schemaläggs den att köras varje dag. Om du konfigurerar en regel att köras varje vecka, kommer den att schemaläggas att köras varje vecka på söndag UTC-tid.

De flesta inventeringskörningar slutförs inom 24 timmar. För hierarkiska namnområdesaktiverade konton kan en körning ta upp till två dagar, och beroende på antalet filer som bearbetas kanske körningen inte slutförs i slutet av dessa två dagar. Den maximala tiden som en körning kan slutföras innan den misslyckas är sex dagar.

Körningar överlappar inte så en körning måste slutföras innan en annan körning av samma regel kan börja. Om en regel till exempel är schemalagd att köras dagligen, men föregående dags körning av samma regel fortfarande pågår, initieras inte en ny körning den dagen. Regler som är schemalagda att köras varje vecka körs varje söndag oavsett om en tidigare körning lyckas eller misslyckas. Om en körning inte har slutförts kontrollerar du efterföljande körningar för att se om de har slutförts innan du kontaktar supporten. Prestandan för en körning kan variera, så om en körning inte slutförs är det möjligt att efterföljande körningar kommer att göra det.

Inventeringsprinciper läs- eller skrivs i sin helhet. Partiella uppdateringar stöds inte. Inventeringsregler utvärderas dagligen. Om du ändrar definitionen av en regel, men reglerna för en princip redan har utvärderats för den dagen, utvärderas dina uppdateringar inte förrän följande dag.

Viktigt!

Om du aktiverar brandväggsregler för ditt lagringskonto kan inventeringsbegäranden 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.

Inventeringen har slutförts

Händelsen BlobInventoryPolicyCompleted genereras när inventeringskörningen slutförs för en regel. Den här händelsen inträffar också om inventeringskörningen misslyckas med ett användarfel innan den börjar köras. Till exempel utlöser en ogiltig princip eller ett fel som uppstår när en målcontainer inte finns händelsen. Följande json visar en exempelhändelse BlobInventoryPolicyCompleted .

{
  "topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/BlobInventory/providers/Microsoft.EventGrid/topics/BlobInventoryTopic",
  "subject": "BlobDataManagement/BlobInventory",
  "eventType": "Microsoft.Storage.BlobInventoryPolicyCompleted",
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "data": {
    "scheduleDateTime": "2021-05-28T03:50:27Z",
    "accountName": "testaccount",
    "ruleName": "Rule_1",
    "policyRunStatus": "Succeeded",
    "policyRunStatusMessage": "Inventory run succeeded, refer manifest file for inventory details.",
    "policyRunId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "manifestBlobUrl": "https://testaccount.blob.core.windows.net/inventory-destination-container/2021/05/26/13-25-36/Rule_1/Rule_1-manifest.json"
  },
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2021-05-28T15:03:18Z"
}

I följande tabell beskrivs schemat för BlobInventoryPolicyCompleted händelsen.

Fält Type Beskrivning
scheduleDateTime sträng Den tid då inventeringsregeln schemalagts.
accountName sträng Namnet på lagringskontot.
ruleName sträng Regelnamnet.
policyRunStatus sträng Status för inventeringskörning. Möjliga värden är Succeeded, PartiallySucceededoch Failed.
policyRunStatusMessage sträng Statusmeddelandet för inventeringskörningen.
policyRunId sträng Principkörnings-ID:t för inventeringskörningen.
manifestBlobUrl sträng Blob-URL:en för manifestfilen för inventeringskörning.

Inventeringsutdata

Varje inventeringsregel genererar en uppsättning filer i den angivna inventeringsmålcontainern för den regeln. Inventeringsutdata genereras under följande sökväg: https://<accountName>.blob.core.windows.net/<inventory-destination-container>/YYYY/MM/DD/HH-MM-SS/<ruleName var:

  • accountName är ditt Azure Blob Storage-kontonamn.
  • inventory-destination-container är den målcontainer som du angav i inventeringsregeln.
  • ÅÅÅÅ/MM/DD/HH-MM-SS är den tid då inventeringen började köras.
  • ruleName är namnet på inventeringsregeln.

Inventeringsfiler

Varje inventeringskörning för en regel genererar följande filer:

  • Inventeringsfil: En inventeringskörning för en regel genererar en CSV- eller Apache Parquet-formaterad fil. Varje sådan fil innehåller matchade objekt och deras metadata.

    Viktigt!

    Från och med oktober 2023 skapar inventeringskörningar flera filer om antalet objekt är stort. Mer information finns i Vanliga frågor och svar om utdata för flera inventeringsfiler.

    Rapporter i Apache Parquet-formatet presenterar datum i följande format: timestamp_millis [number of milliseconds since 1970-01-01 00:00:00 UTC]. För en CSV-formaterad fil är den första raden alltid schemaraden. Följande bild visar en CSV-inventeringsfil som öppnats i Microsoft Excel.

    Skärmbild av en CSV-inventeringsfil som öppnats i Microsoft Excel

    Viktigt!

    Blobsökvägarna som visas i en inventeringsfil kanske inte visas i någon viss ordning.

  • Checksum-fil: En kontrollsummafil innehåller MD5-kontrollsumman för innehållet i manifest.json fil. Namnet på checksum-filen är <ruleName>-manifest.checksum. Genereringen av kontrollsummafilen markerar slutförandet av en inventeringsregelkörning.

  • Manifestfil: En manifest.json fil innehåller information om de inventeringsfiler som genererats för den regeln. Namnet på filen är <ruleName>-manifest.json. Den här filen samlar också in regeldefinitionen som tillhandahålls av användaren och sökvägen till inventeringen för den regeln. Följande json visar innehållet i ett exempel manifest.json fil.

    {
    "destinationContainer" : "inventory-destination-container",
    "endpoint" : "https://testaccount.blob.core.windows.net",
    "files" : [
      {
        "blob" : "2021/05/26/13-25-36/Rule_1/Rule_1.csv",
        "size" : 12710092
      }
    ],
    "inventoryCompletionTime" : "2021-05-26T13:35:56Z",
    "inventoryStartTime" : "2021-05-26T13:25:36Z",
    "ruleDefinition" : {
      "filters" : {
        "blobTypes" : [ "blockBlob" ],
        "includeBlobVersions" : false,
        "includeSnapshots" : false,
        "prefixMatch" : [ "penner-test-container-100003" ]
      },
      "format" : "csv",
      "objectType" : "blob",
      "schedule" : "daily",
      "schemaFields" : [
        "Name",
        "Creation-Time",
        "BlobType",
        "Content-Length",
        "LastAccessTime",
        "Last-Modified",
        "Metadata",
        "AccessTier"
      ]
    },
    "ruleName" : "Rule_1",
    "status" : "Succeeded",
    "summary" : {
      "objectCount" : 110000,
      "totalObjectSize" : 23789775
    },
    "version" : "1.0"
    }
    

    Den här filen skapas när körningen börjar. Fältet status i den här filen är inställt på Pending tills körningen har slutförts. När körningen är klar är det här fältet inställt på en slutförandestatus (till exempel: Succeeded eller Failed).

Prissättning och fakturering

Prissättningen för inventering baseras på antalet blobar och containrar som genomsöks under faktureringsperioden. Prissidan för Azure Blob Storage visar priset per en miljon objekt som genomsöks. Om priset för att skanna en miljon objekt till exempel är $0.003innehåller ditt konto tre miljoner objekt och du skapar fyra rapporter under en månad, då blir 4 * 3 * $0.003 = $0.036din faktura .

När inventeringsfiler har skapats debiteras ytterligare standardavgifter för datalagring och åtgärder för lagring, läsning och skrivning av inventeringsgenererade filer i kontot.

Om en regel innehåller ett prefix som överlappar ett prefix för någon annan regel kan samma blob visas i mer än en inventeringsrapport. I det här fallet debiteras du för båda instanserna. Anta till exempel att elementet i prefixMatch en regel är inställt på och att ["inventory-blob-1", "inventory-blob-2"]elementet i prefixMatch en annan regel är inställt på ["inventory-blob-10", "inventory-blob-20"]. Ett objekt med namnet inventory-blob-200 visas i båda inventeringsrapporterna.

Ögonblicksbilder och versioner av en blob räknas också mot fakturering även om du har angett includeSnapshots och includeVersions filtrerat till false. Dessa filtervärden påverkar inte faktureringen. Du kan bara använda dem för att filtrera det som visas i rapporten.

Mer information om priser för Azure Storage-blobinventering finns i Prissättning för Azure Blob Storage.

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.

Kända problem och begränsningar

I det här avsnittet beskrivs begränsningar och kända problem med blobininventeringsfunktionen i Azure Storage.

Inventeringsjobb tar längre tid att slutföra i vissa fall

Ett inventeringsjobb kan ta längre tid i dessa fall:

  • En stor mängd nya data läggs till

  • En regel eller uppsättning regler körs för första gången

    Inventeringskörningen kan ta längre tid att köra jämfört med efterföljande inventeringskörningar.

  • En inventeringskörning bearbetar en stor mängd data i hierarkiska namnområdesaktiverade konton

    Ett inventeringsjobb kan ta mer än en dag att slutföra för hierarkiska namnområdesaktiverade konton som har hundratals miljoner blobar. Ibland misslyckas inventeringsjobbet och skapar ingen inventeringsfil. Om ett jobb inte har slutförts kontrollerar du efterföljande jobb för att se om de är slutförda innan du kontaktar supporten.

  • Det finns inget alternativ för att generera en rapport i efterhand för ett visst datum.

Inventeringsjobb kan inte skriva rapporter till containrar som har en princip för objektreplikering

En princip för objektreplikering kan förhindra att ett inventeringsjobb skriver inventeringsrapporter till målcontainern. Vissa andra scenarier kan arkivera rapporterna eller göra rapporterna oföränderliga när de är delvis slutförda, vilket kan leda till att inventeringsjobb misslyckas.

Inventering och oföränderlig lagring

Du kan inte konfigurera en inventeringsprincip i kontot om stöd för oföränderlighet på versionsnivå har aktiverats för det kontot, eller om stöd för oföränderlighet på versionsnivå är aktiverat på målcontainern som definieras i inventeringsprincipen.

Rapporter kan undanta mjuk borttagna blobar i konton som har ett hierarkiskt namnområde

Om en container eller katalog tas bort med mjuk borttagning aktiverad markeras containern eller katalogen och allt dess innehåll som mjukt borttaget. Men endast containern eller katalogen (rapporteras som en blob med noll längd) visas i en inventeringsrapport och inte de mjukt borttagna blobarna i containern eller katalogen även om du anger includeDeleted fältet för principen till true. Detta kan leda till en skillnad mellan vad som visas i kapacitetsmått som du får i Azure-portalen och vad som rapporteras av en inventeringsrapport.

Endast blobar som uttryckligen tas bort visas i rapporter. För att få en fullständig lista över alla mjukt borttagna blobar (katalog och alla underordnade blobar) bör arbetsbelastningar därför ta bort varje blob i en katalog innan själva katalogen tas bort.

Nästa steg