Ta bort och återställa en blob med .NET
Den här artikeln visar hur du tar bort blobar med Azure Storage-klientbiblioteket för .NET och hur du återställer mjuk borttagna blobar under kvarhållningsperioden.
Förutsättningar
- Azure-prenumeration – skapa en kostnadsfritt
- Azure Storage-konto – skapa ett lagringskonto
- Senaste .NET SDK för operativsystemet. Se till att hämta SDK:et och inte körningen.
Konfigurera din miljö
Om du inte har ett befintligt projekt visar det här avsnittet hur du konfigurerar ett projekt för att arbeta med Azure Blob Storage-klientbiblioteket för .NET. Stegen omfattar paketinstallation, tillägg av using
direktiv och skapande av ett auktoriserat klientobjekt. Mer information finns i Kom igång med Azure Blob Storage och .NET.
Installera paket
Från projektkatalogen installerar du paket för Azure Blob Storage- och Azure Identity-klientbiblioteken med hjälp av dotnet add package
kommandot . Azure.Identity-paketet behövs för lösenordslösa anslutningar till Azure-tjänster.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Lägga till using
direktiv
Lägg till dessa using
direktiv överst i kodfilen:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Vissa kodexempel i den här artikeln kan kräva ytterligare using
direktiv.
Skapa ett klientobjekt
Om du vill ansluta en app till Blob Storage skapar du en instans av BlobServiceClient. I följande exempel visas hur du skapar ett klientobjekt med hjälp av DefaultAzureCredential
för auktorisering:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Du kan registrera en tjänstklient för beroendeinmatning i en .NET-app.
Du kan också skapa klientobjekt för specifika containrar eller blobar. Mer information om hur du skapar och hanterar klientobjekt finns i Skapa och hantera klientobjekt som interagerar med dataresurser.
Auktorisering
Auktoriseringsmekanismen måste ha de behörigheter som krävs för att ta bort en blob eller återställa en mjuk borttagen blob. För auktorisering med Microsoft Entra-ID (rekommenderas) behöver du den inbyggda rollen Storage Blob Data Contributor eller senare. Mer information finns i auktoriseringsvägledningen för Ta bort blob (REST API) och REST-API (Undelete Blob).
Ta bort en blob
Kommentar
När mjuk borttagning av blobar är aktiverat för ett lagringskonto kan du inte utföra en permanent borttagning med hjälp av klientbiblioteksmetoder. Med hjälp av metoderna i den här artikeln förblir en mjuk borttagen blob, blobversion eller ögonblicksbild tillgänglig tills kvarhållningsperioden upphör att gälla, då den tas bort permanent. Mer information om den underliggande REST API-åtgärden finns i Ta bort blob (REST API).
Om du vill ta bort en blob anropar du någon av följande metoder:
I följande exempel tas en blob bort:
public static async Task DeleteBlobAsync(BlobClient blob)
{
await blob.DeleteAsync();
}
Om bloben har några associerade ögonblicksbilder måste du ta bort alla dess ögonblicksbilder för att ta bort bloben. I följande exempel tas en blob och dess ögonblicksbilder bort:
public static async Task DeleteBlobSnapshotsAsync(BlobClient blob)
{
// Delete a blob and all of its snapshots
await blob.DeleteAsync(snapshotsOption: DeleteSnapshotsOption.IncludeSnapshots);
// Delete only the blob's snapshots
//await blob.DeleteAsync(snapshotsOption: DeleteSnapshotsOption.OnlySnapshots);
}
Om du bara vill ta bort ögonblicksbilderna och inte själva bloben kan du skicka parametern DeleteSnapshotsOption.OnlySnapshots
.
Återställa en borttagen blob
Mjuk borttagning av blobar skyddar en enskild blob, versioner, ögonblicksbilder och metadata från oavsiktliga borttagningar eller överskrivningar genom att spara borttagna data i systemet under en angiven tidsperiod. Under kvarhållningsperioden kan du återställa bloben till dess tillstånd när den togs bort. När kvarhållningsperioden har gått ut tas bloben bort permanent. Mer information om mjuk borttagning av blobar finns i Mjuk borttagning för blobar.
Du kan använda Azure Storage-klientbiblioteken för att återställa en mjuk borttagen blob eller ögonblicksbild.
Hur du återställer en mjuk borttagen blob beror på om ditt lagringskonto har blobversionshantering aktiverat eller inte. Mer information om blobversioner finns i Blob-versionshantering. Se något av följande avsnitt, beroende på ditt scenario:
Återställa mjukt borttagna objekt när versionshantering är inaktiverat
Om du vill återställa borttagna blobar när versionshantering inte är aktiverat anropar du någon av följande metoder:
Dessa metoder återställer mjukt borttagna blobar och eventuella borttagna ögonblicksbilder som är associerade med dem. Att anropa någon av dessa metoder för en blob som inte har tagits bort har ingen effekt. I följande exempel återställs alla mjukt borttagna blobar och deras ögonblicksbilder i en container:
public static async Task RestoreBlobsAsync(BlobContainerClient container)
{
foreach (BlobItem blob in container.GetBlobs(BlobTraits.None, BlobStates.Deleted))
{
await container.GetBlockBlobClient(blob.Name).UndeleteAsync();
}
}
Om du vill återställa en specifik ögonblicksbild med mjuk borttagning anropar du först Undelete eller UndeleteAsync på basbloben och kopierar sedan den önskade ögonblicksbilden över basbloben. I följande exempel återställs en blockblob till den senast genererade ögonblicksbilden:
public static async Task RestoreSnapshotsAsync(
BlobContainerClient container,
BlobClient blob)
{
// Restore the deleted blob
await blob.UndeleteAsync();
// List blobs in this container that match prefix
// Include snapshots in listing
Pageable<BlobItem> blobItems = container.GetBlobs(
BlobTraits.None,
BlobStates.Snapshots,
prefix: blob.Name);
// Get the URI for the most recent snapshot
BlobUriBuilder blobSnapshotUri = new BlobUriBuilder(blob.Uri)
{
Snapshot = blobItems
.OrderByDescending(snapshot => snapshot.Snapshot)
.ElementAtOrDefault(0)?.Snapshot
};
// Restore the most recent snapshot by copying it to the blob
await blob.StartCopyFromUriAsync(blobSnapshotUri.ToUri());
}
Återställa mjuk borttagna blobar när versionshantering är aktiverat
Om ett lagringskonto har konfigurerats för att aktivera blobversionshantering blir den aktuella versionen av bloben den tidigare versionen om du tar bort en blob. Om du vill återställa en mjuk borttagen blob när versionshantering är aktiverat kopierar du en tidigare version över basbloben. Du kan använda någon av följande metoder:
Följande kodexempel visar hur du hämtar den senaste versionen av en borttagen blob och återställer den senaste versionen genom att kopiera den till basbloben:
public static void RestoreBlobWithVersioning(
BlobContainerClient container,
BlobClient blob)
{
// List blobs in this container that match prefix
// Include versions in listing
Pageable<BlobItem> blobItems = container.GetBlobs(
BlobTraits.None,
BlobStates.Version,
prefix: blob.Name);
// Get the URI for the most recent version
BlobUriBuilder blobVersionUri = new BlobUriBuilder(blob.Uri)
{
VersionId = blobItems.
OrderByDescending(version => version.VersionId).
ElementAtOrDefault(0)?.VersionId
};
// Restore the most recently generated version by copying it to the base blob
blob.StartCopyFromUri(blobVersionUri.ToUri());
}
Resurser
Mer information om hur du tar bort blobar och återställer borttagna blobar med hjälp av Azure Blob Storage-klientbiblioteket för .NET finns i följande resurser.
Kodexempel
REST API-åtgärder
Azure SDK för .NET innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta .NET-paradigm. Klientbiblioteksmetoderna för att ta bort blobar och återställa borttagna blobar använder följande REST API-åtgärder:
- Ta bort blob (REST API)
- Ta bort blob ( REST API)
Klientbiblioteksresurser
Se även
Relaterat innehåll
- Den här artikeln är en del av utvecklarguiden för Blob Storage för .NET. Mer information finns i den fullständiga listan över utvecklarguideartiklar i Skapa din .NET-app.