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 Portal.
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 , appendBlob och 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/folder ska 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 Portal. 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 visar stöd för konton som har funktionen hierarkisk namnrymd aktiverad.
Fält | Blob Storage (standardstöd) | Data Lake Storage |
---|---|---|
Namn (krävs) | ||
Skapandetid | ||
Senast ändrad | ||
LastAccessTime1 | ||
ETag | ||
Innehållslängd | ||
Innehållstyp | ||
Content-Encoding | ||
Content-Language | ||
Content-CRC64 | ||
Content-MD5 | ||
Cache-Control | ||
Cachedisposition | ||
BlobType | ||
AccessTier | ||
AccessTierChangeTime | ||
LeaseStatus | ||
LeaseState | ||
ServerEncrypted | ||
CustomerProvidedKeySHA256 | ||
Metadata | ||
Förfallotid | ||
hdi_isfolder | ||
Ägare | ||
Grupp | ||
Behörigheter | ||
Åtkomstkontrollista | ||
Ögonblicksbild (tillgänglig och obligatorisk när du väljer att inkludera ögonblicksbilder i rapporten) | ||
Borttagen | ||
DeletedId | ||
DeletedTime | ||
RemainingRetentionDays | ||
VersionId (Tillgängligt och obligatoriskt när du väljer att inkludera blobversioner i rapporten) | ||
IsCurrentVersion (tillgängligt och obligatoriskt när du väljer att inkludera blobversioner i rapporten) | ||
TagCount | ||
Taggar | ||
CopyId | ||
CopySource | ||
CopyStatus | ||
CopyProgress | ||
CopyCompletionTime | ||
CopyStatusDescription | ||
ImmutabilityPolicyUntilDate | ||
OföränderlighetPolicyMode | ||
LegalHold | ||
RehydratePriority | ||
ArchiveStatus | ||
EncryptionScope | ||
IncrementalCopy | ||
x-ms-blob-sequence-number |
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 visar stöd för konton som har funktionen hierarkisk namnrymd aktiverad.
Fält | Blob Storage (standardstöd) | Data Lake Storage |
---|---|---|
Namn (krävs) | ||
Senast ändrad | ||
ETag | ||
LeaseStatus | ||
LeaseState | ||
LeaseDuration | ||
Metadata | ||
PublicAccess | ||
DefaultEncryptionScope | ||
DenyEncryptionScopeOverride | ||
HasImmutabilityPolicy | ||
HasLegalHold | ||
OföränderligStorageWithVersioningEnabled | ||
Borttagen (visas endast om ta med borttagna containrar har valts) | ||
Version (visas endast om ta med borttagna containrar har valts) | ||
DeletedTime (visas endast om ta med borttagna containrar är markerat) | ||
RemainingRetentionDays (visas endast om ta med borttagna containrar har valts) |
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.
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 , PartiallySucceeded och 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.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
ellerFailed
).
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.003
innehåller ditt konto tre miljoner objekt och du skapar fyra rapporter under en månad, då blir 4 * 3 * $0.003 = $0.036
din 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.
Antal inventeringsobjekt och datastorlek ska inte jämföras med fakturering
En inventeringsrapport innehåller inte metadata, systemloggar och egenskaper, så den bör inte jämföras med antalet fakturerade objekt och datastorleken för lagringskontot.
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 Portal 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.