Supprimer et restaurer un blob avec .NET

Cet article explique comment supprimer des blobs avec la bibliothèque de client Stockage Azure pour .NET. Si vous avez activé la suppression réversible pour les objets blob, vous pouvez restaurer les objets blob supprimés pendant la période de rétention.

Prérequis

  • Cet article suppose qu’un projet est déjà configuré pour fonctionner avec la bibliothèque de client Stockage Blob Azure pour .NET. Pour en savoir plus sur la configuration de votre projet, y compris l'installation du package, l'ajout de directives using et la création d'un objet client autorisé, consultez Bien démarrer avec Stockage Microsoft Azure et .NET.
  • Le mécanisme d'autorisation doit avoir des autorisations pour supprimer un blob ou pour restaurer un blob supprimé de manière réversible. Pour plus d’informations, consultez les conseils d’autorisation pour les opérations d’API REST suivantes :

Supprimer un objet blob

Pour supprimer un blob, appelez l’une de ces méthodes :

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.

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 :

Exemples de code

Ressources de bibliothèque cliente

Voir aussi