Partager via


Supprimer et restaurer un blob avec .NET

Cet article montre comment supprimer des objets blob avec la bibliothèque de client Stockage Azure pour .NET et restaurer des objets blob supprimés de manière réversible pendant la période de rétention.

Prérequis

Paramétrer votre environnement

Si vous n’avez pas de projet existant, cette section vous montre comment configurer un projet pour travailler avec la bibliothèque de client Stockage Blob Azure pour .NET. Les étapes comprennent l’installation du package, l’ajout de directives using et la création d’un objet client autorisé. Pour plus d’informations, consultez Prise en main du Stockage Blob Azure et de .NET.

Installer des packages

À partir du répertoire du projet, installez les packages des bibliothèques de client Stockage Blob Azure et Azure Identity à l’aide de la commande dotnet add package. Le package Azure.Identity est nécessaire pour les connexions sans mot de passe aux services Azure.

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

Ajoutez des directives using.

Ajoutez ces directives using au début de votre fichier de code :

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

Certains exemples de code de cet article peuvent nécessiter des directives using supplémentaires.

Créer un objet client

Pour connecter une application au Stockage Blob, créez une instance de BlobServiceClient. L’exemple suivant montre comment créer un objet client à l’aide de DefaultAzureCredential pour l’autorisation :

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

    return client;
}

Vous pouvez inscrire un client de service pour l’injection de dépendances dans une application .NET.

Vous pouvez également créer des objets clients pour des conteneurs ou des objets blob spécifiques. Pour en savoir plus sur la création et la gestion d’objets clients, consultez Créer et gérer des objets clients qui interagissent avec des ressources de données.

Autorisation

Le mécanisme d’autorisation doit disposer des autorisations nécessaires pour supprimer un blob ou restaurer un blob supprimé de manière réversible. Pour l’autorisation avec Microsoft Entra ID (recommandé), vous devez disposer au minimum du rôle RBAC Azure intégré Contributeur aux données Blob du stockage. Pour en savoir plus, consultez les conseils d’autorisation pour les opérations Delete Blob (API REST) et Undelete Blob (API REST).

Supprimer un objet blob

Remarque

Lorsque la suppression réversible d’objets blob est activée pour un compte de stockage, vous ne pouvez pas effectuer de suppression définitive en utilisant des méthodes de bibliothèque de client. L’utilisation des méthodes de cet article permet de conserver une capture instantanée, une version d’objet blob ou un objet blob supprimé de manière réversible disponible jusqu’à l’expiration de la période de rétention, après quoi ils sont définitivement supprimés. Pour en savoir plus sur l’opération d’API REST sous-jacente, consultez Supprimer un blob (API REST).

Pour supprimer un blob, appelez l’une des méthodes suivantes :

L’exemple suivant supprime un blob :

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

Si le blob a des instantanés associés, vous devez supprimer tous ses instantanés pour le supprimer. L’exemple suivant supprime un blob et ses instantanés :

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

Pour supprimer uniquement les instantanés et non le blob lui-même, vous pouvez passer le paramètre DeleteSnapshotsOption.OnlySnapshots.

Restaurer un objet blob supprimé

La suppression réversible d’objets blob protège un objet blob et ses versions, instantanés et métadonnées contre les suppressions ou les remplacements accidentels en conservant les données supprimées dans le système pendant un laps de temps spécifié. Pendant la période de rétention, vous pouvez restaurer l’objet blob à son état au moment de la suppression. Une fois la période de conservation expirée, l’objet est supprimé définitivement. Pour plus d’informations sur la suppression réversible d’objets blob, consultez Suppression réversible pour les objets blob.

Vous pouvez utiliser les bibliothèques de client de Stockage Azure pour restaurer un objet blob ou une capture instantanée supprimés de manière réversible.

La façon de restaurer un objet blob supprimé de manière réversible dépend de l’activation du contrôle de version d’objets blob de votre compte de stockage. Pour plus d’informations sur la gestion de versions des objets blob, consultez Gestion de versions des objets blob. Consultez l’une des sections suivantes en fonction de votre scénario :

Restaurer des objets supprimés de manière réversible quand le contrôle de version est désactivé

Pour restaurer des blobs supprimés quand le versioning n’est pas activé, appelez l’une des méthodes suivantes :

Ces méthodes restaurent les blobs supprimés de manière réversible et les instantanés supprimés qui leur sont associés. L’appel de l’une de ces méthodes pour un blob qui n’a pas été supprimé n’a aucun effet. L’exemple suivant restaure tous les blobs supprimés de manière réversible et leurs instantanés dans un conteneur :

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

Pour restaurer un instantané supprimé de manière réversible, commencez par appeler la méthode Undelete ou UndeleteAsync sur le blob de base, puis copiez l’instantané souhaité sur le blob de base. Dans l’exemple suivant, un objet blob de blocs est restauré avec la dernière capture instantanée générée :

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

Restaurer des objets blob supprimés de manière réversible lorsque le contrôle de version est activé

Si un compte de stockage est configuré pour activer le contrôle de version de blobs, la suppression d’un blob définit la version actuelle du blob comme version précédente. Pour restaurer un blob supprimé de manière réversible quand le versioning est activé, copiez une version précédente sur le blob de base. Vous pouvez utiliser l’une des méthodes suivantes :

L’exemple de code suivant montre comment obtenir la dernière version d’un blob supprimé et la restaurer en la copiant dans le blob de base :

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

Ressources

Pour en savoir plus sur la suppression d’objets blob et la restauration d’objets blob supprimés en utilisant la bibliothèque de client du Stockage Blob Azure pour .NET, consultez les ressources suivantes.

Exemples de code

Opérations de l'API REST

Le Kit de développement logiciel (SDK) Azure pour .NET contient des bibliothèques qui s'appuient sur l'API REST Azure, vous permettant d’interagir avec les opérations de l’API REST par le biais de paradigmes .NET familiers. Les méthodes de la bibliothèque de client pour supprimer des objets blob et restaurer des objets blob supprimés utilisent les opérations d’API REST suivantes :

Ressources de bibliothèque cliente

Voir aussi

  • Cet article fait partie du guide du développeur Stockage Blob pour .NET. Pour en savoir plus, consultez la liste complète des articles du guide du développeur dans Générer votre application .NET.