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
- Abonnement Azure : créez-en un gratuitement
- Compte de stockage Azure : créez un compte de stockage
- Dernière version du Kit de développement logiciel (SDK) .NET pour votre système d’exploitation. Veillez à disposer du Kit de développement logiciel (SDK), et non du runtime.
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 :
- Le contrôle de version d’objets blob n’est pas activé
- Le contrôle de version d’objets blob est activé
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 :
- Delete Blob (API REST)
- Undelete Blob (API REST)
Ressources de bibliothèque cliente
- Documentation de référence sur la bibliothèque cliente
- Code source de la bibliothèque de client
- Package (NuGet)
Voir aussi
Contenu connexe
- 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.