Share via


Een blob verwijderen en herstellen met .NET

In dit artikel wordt beschreven hoe u blobs verwijdert met de Azure Storage-clientbibliotheek voor .NET en hoe u voorlopig verwijderde blobs tijdens de bewaarperiode herstelt.

Prerequisites

Uw omgeving instellen

Als u geen bestaand project hebt, ziet u in deze sectie hoe u een project instelt voor gebruik met de Azure Blob Storage-clientbibliotheek voor .NET. De stappen omvatten pakketinstallatie, het toevoegen van using instructies en het maken van een geautoriseerd clientobject. Zie Aan de slag met Azure Blob Storage en .NET voor meer informatie.

Pakketten installeren

Installeer vanuit uw projectmap pakketten voor de Azure Blob Storage- en Azure Identity-clientbibliotheken met behulp van de dotnet add package opdracht. Het Azure.Identity-pakket is nodig voor verbindingen zonder wachtwoord met Azure-services.

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

Voeg using-instructies toe

Voeg deze using instructies toe aan het begin van het codebestand:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

Voor sommige codevoorbeelden in dit artikel zijn mogelijk aanvullende using instructies vereist.

Een clientobject maken

Als u een app wilt verbinden met Blob Storage, maakt u een exemplaar van BlobServiceClient. In het volgende voorbeeld ziet u hoe u een clientobject maakt met behulp van DefaultAzureCredential autorisatie:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

U kunt een serviceclient registreren voor afhankelijkheidsinjectie in een .NET-app.

U kunt ook clientobjecten maken voor specifieke containers of blobs. Zie Clientobjecten maken en beheren die interactie hebben met gegevensbronnen voor meer informatie over het maken en beheren van clientobjecten.

Authorization

Het autorisatiemechanisme moet over de benodigde machtigingen beschikken om een blob te verwijderen of om een voorlopig verwijderde blob te herstellen. Voor autorisatie met Microsoft Entra ID (aanbevolen) heeft u de ingebouwde Azure RBAC-rol Storage Blob Data Contributor of hoger nodig. Zie de autorisatierichtlijnen voor Delete Blob (REST API) en Undelete Blob (REST API) voor meer informatie.

Een blob verwijderen

Note

Wanneer voorlopig verwijderen van blobs is ingeschakeld voor een opslagaccount, kunt u geen permanente verwijdering uitvoeren met behulp van clientbibliotheekmethoden. Met behulp van de methoden in dit artikel blijft een voorlopig verwijderde blob, blobversie of momentopname beschikbaar totdat de bewaarperiode verloopt, waarna deze definitief wordt verwijderd. Zie Blob (REST API) verwijderen voor meer informatie over de onderliggende REST API-bewerking.

Als u een blob wilt verwijderen, roept u een van de volgende methoden aan:

In het volgende voorbeeld wordt een blob verwijderd:

public static async Task DeleteBlobAsync(BlobClient blob)
{
    await blob.DeleteAsync();
}

Als de blob gekoppelde momentopnamen heeft, moet u alle momentopnamen verwijderen om de blob te verwijderen. In het volgende voorbeeld worden een blob en de bijbehorende momentopnamen verwijderd:

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);
}

Als u alleen de momentopnamen en niet de blob zelf wilt verwijderen, kunt u de parameter DeleteSnapshotsOption.OnlySnapshotsdoorgeven.

Een verwijderde blob herstellen

Voorlopig verwijderen van blobs beschermt een afzonderlijke blob en de bijbehorende versies, momentopnamen en metagegevens tegen onbedoelde verwijderingen of overschrijven door de verwijderde gegevens in het systeem gedurende een opgegeven periode te onderhouden. Tijdens de bewaarperiode kunt u de blob herstellen naar de staat waarin het zich bevond op het moment van verwijdering. Nadat de bewaarperiode is verlopen, wordt de blob definitief verwijderd. Zie Voorlopig verwijderen van blobs voor meer informatie over voorlopig verwijderen van blobs.

U kunt de Azure Storage-clientbibliotheken gebruiken om een voorlopig verwijderde blob of momentopname te herstellen.

Hoe u een voorlopig verwijderde blob herstelt, is afhankelijk van of voor uw opslagaccount blobversiebeheer is ingeschakeld. Zie Blob-versiebeheer voor meer informatie over blobversiebeheer. Bekijk een van de volgende secties, afhankelijk van uw scenario:

Voorlopig verwijderde objecten herstellen wanneer versiebeheer is uitgeschakeld

Als u verwijderde blobs wilt herstellen wanneer versiebeheer niet is ingeschakeld, roept u een van de volgende methoden aan:

Met deze methoden herstelt u voorlopig verwijderde blobs en eventuele verwijderde momentopnamen die eraan zijn gekoppeld. Het aanroepen van een van deze methoden voor een blob die niet is verwijderd, heeft geen effect. In het volgende voorbeeld worden alle softverwijderde blobs en hun momentopnamen in een container hersteld.

public static async Task RestoreBlobsAsync(BlobContainerClient container)
{
    foreach (BlobItem blob in container.GetBlobs(BlobTraits.None, BlobStates.Deleted))
    {
        await container.GetBlockBlobClient(blob.Name).UndeleteAsync();
    }
}

Als u een specifieke voorlopig verwijderde momentopname wilt herstellen, roept u eerst undelete of UndeleteAsync aan op de basis-blob en kopieert u vervolgens de gewenste momentopname over de basis-blob. In het volgende voorbeeld wordt een blokblob teruggezet naar de laatst gegenereerde momentopname.

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());
}

Zacht verwijderde blobs herstellen wanneer versiebeheer is ingeschakeld

Als een opslagaccount is geconfigureerd om blobversiebeheer in te schakelen, zorgt het verwijderen van een blob ervoor dat de huidige versie van de blob de vorige versie wordt. Als u een voorlopig verwijderde blob wilt herstellen wanneer versiebeheer is ingeschakeld, kopieert u een vorige versie over de basis-blob. U kunt een van de volgende methoden gebruiken:

In het volgende codevoorbeeld ziet u hoe u de nieuwste versie van een verwijderde blob kunt ophalen en de nieuwste versie kunt herstellen door deze naar de basis-blob te kopiƫren:

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());
}

Resources

Zie de volgende resources voor meer informatie over het verwijderen van blobs en het herstellen van verwijderde blobs met behulp van de Azure Blob Storage-clientbibliotheek voor .NET.

Codevoorbeelden

REST API-bewerkingen

De Azure SDK voor .NET bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende .NET-paradigma's. De clientbibliotheekmethoden voor het verwijderen van blobs en het herstellen van verwijderde blobs gebruiken de volgende REST API-bewerkingen:

Bronnen voor clientbibliotheken

Zie ook

  • Dit artikel maakt deel uit van de ontwikkelaarshandleiding voor Blob Storage voor .NET. Zie de volledige lijst met artikelen over ontwikkelaarshandleidingen in Uw .NET-app bouwen voor meer informatie.