Supprimer et restaurer un conteneur d’objets blob avec .NET

Cet article explique comment supprimer des conteneurs à l’aide de la bibliothèque de client de Stockage Azure pour .NET. Si vous avez activé la suppression réversible de conteneur, vous pouvez restaurer les conteneurs supprimés.

Prérequis

  • Cet article suppose que vous disposez déjà d'un projet configuré pour fonctionner avec la bibliothèque client Azure Blob Storage 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 Blob Azure et .NET.
  • Le mécanisme d’autorisation doit disposer des autorisations nécessaires pour supprimer un conteneur d’objets blob ou restaurer un conteneur 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 conteneur

Pour supprimer un conteneur dans .NET, utilisez l’une des méthodes suivantes :

Les méthodes Delete et DeleteAsync lèvent une exception si le conteneur n’existe pas.

Les méthodes DeleteIfExists et DeleteIfExistsAsync retournent une valeur booléenne indiquant si le conteneur a été supprimé. Si le conteneur spécifié n’existe pas, ces méthodes retournent la mention False pour indiquer que le conteneur n’a pas été supprimé.

Après avoir supprimé un conteneur, vous ne pouvez pas créer un conteneur portant le même nom pendant au moins 30 secondes. Une tentative de création d’un conteneur portant le même nom échoue avec le code d’erreur HTTP 409 (conflit). Toutes les autres opérations sur le conteneur ou les blobs qu’il contient échouent avec le code d’erreur HTTP 404 (introuvable).

L’exemple suivant supprime le conteneur spécifié et traite l’exception si le conteneur n’existe pas :

//-------------------------------------------------
// Delete a container
//-------------------------------------------------
private static async Task DeleteSampleContainerAsync(BlobServiceClient blobServiceClient, string containerName)
{
    BlobContainerClient container = blobServiceClient.GetBlobContainerClient(containerName);

    try
    {
        // Delete the specified container and handle the exception.
        await container.DeleteAsync();
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine("HTTP error code {0}: {1}",
                            e.Status, e.ErrorCode);
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

L’exemple suivant montre comment supprimer tous les conteneurs qui commencent par un préfixe spécifié.

//-------------------------------------------------
// Delete all containers with the specified prefix
//-------------------------------------------------
private static async Task DeleteContainersWithPrefixAsync(BlobServiceClient blobServiceClient, string prefix)
{
    Console.WriteLine("Delete all containers beginning with the specified prefix");

    try
    {
        foreach (BlobContainerItem container in blobServiceClient.GetBlobContainers())
        {
            if (container.Name.StartsWith(prefix))
            { 
                Console.WriteLine("\tContainer:" + container.Name);
                BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(container.Name);
                await containerClient.DeleteAsync();
            }
        }

        Console.WriteLine();
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

Restaurer un conteneur supprimé

Lorsque la suppression réversible de conteneur est activée pour un compte de stockage, un conteneur et son contenu peuvent être récupérés après suppression pendant la période de rétention que vous spécifiez. Vous pouvez restaurer un conteneur supprimé de manière réversible en appelant l’une des méthodes suivantes de la classe BlobServiceClient.

L’exemple suivant recherche un conteneur supprimé, obtient l’ID de version de ce conteneur supprimé, puis passe cet ID dans la méthode UndeleteBlobContainerAsync pour restaurer le conteneur.

public static async Task RestoreContainer(BlobServiceClient client, string containerName)
{
    await foreach (BlobContainerItem item in client.GetBlobContainersAsync
        (BlobContainerTraits.None, BlobContainerStates.Deleted))
    {
        if (item.Name == containerName && (item.IsDeleted == true))
        {
            try 
            { 
                await client.UndeleteBlobContainerAsync(containerName, item.VersionId);
            }
            catch (RequestFailedException e)
            {
                Console.WriteLine("HTTP error code {0}: {1}",
                e.Status, e.ErrorCode);
                Console.WriteLine(e.Message);
            }
        }
    }
}

Ressources

Pour en savoir plus sur la suppression d’un conteneur à l’aide de la bibliothèque de client 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 et vous permettant d’interagir avec des opérations de l’API REST par le biais de paradigmes .NET familiers. Les méthodes de bibliothèque de client pour la suppression ou la restauration d’un conteneur utilisent les opérations d’API REST suivantes :

Ressources de bibliothèque cliente

Voir aussi