Supprimer et restaurer un conteneur d’objets blob en Python
Cet article montre comment supprimer des conteneurs à l’aide de la bibliothèque de client Stockage Azure pour Python. Si vous avez activé la suppression réversible de conteneur, vous pouvez restaurer les conteneurs supprimés.
Pour en savoir plus sur la suppression d’un conteneur d’objets blob à l’aide d’API asynchrones, consultez Supprimer un conteneur de manière asynchrone.
Prérequis
- Abonnement Azure : créez-en un gratuitement
- Compte de stockage Azure : créez un compte de stockage
- Python 3.8+
Paramétrer votre environnement
Si vous n’avez aucun projet existant, cette section vous montre comment configurer un projet de façon à utiliser la bibliothèque de client Stockage Blob Azure pour Python. Pour plus d’informations, consultez Bien démarrer avec le service Stockage Blob Azure et Python.
Pour utiliser les exemples de code de cet article, effectuez les étapes suivantes pour configurer votre projet.
Installer des packages
Installez les packages suivants en utilisant pip install
:
pip install azure-storage-blob azure-identity
Ajouter des instructions import
Ajoutez les instructions import
suivantes :
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Autorisation
Le mécanisme d’autorisation doit disposer des autorisations nécessaires pour supprimer ou restaurer un conteneur. Pour l’autorisation avec Microsoft Entra ID (recommandé), il vous faut un rôle intégré RBAC Azure Contributeur aux données Stockage Blob ou version ultérieure. Pour plus d’informations, consultez les instructions d’autorisation pour supprimer un conteneur (API REST) et restaurer un conteneur (API REST).
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 :
# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()
# Create the BlobServiceClient object
blob_service_client = BlobServiceClient(account_url, credential=credential)
Vous pouvez également créer des objets clients pour des conteneurs ou des objets blob spécifiques, directement ou à partir de l’objet BlobServiceClient
. 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.
Supprimer un conteneur
Pour supprimer un conteneur en Python, utilisez la méthode suivante de la classe BlobServiceClient :
Vous pouvez également supprimer un conteneur en utilisant la méthode suivante de la classe ContainerClient :
Après avoir supprimé un conteneur, vous ne pouvez pas créer de conteneur avec le même nom pendant au moins 30 secondes. Si vous essayez de créer un conteneur du même nom, la tentative échoue avec le code d’erreur HTTP 409 (Conflict)
. Toutes les autres opérations sur le conteneur ou les blobs qu’il contient échouent avec le code d’erreur HTTP 404 (Not Found)
.
L’exemple suivant utilise un objet BlobServiceClient
pour supprimer le conteneur spécifié :
def delete_container(self, blob_service_client: BlobServiceClient, container_name):
container_client = blob_service_client.get_container_client(container=container_name)
container_client.delete_container()
L’exemple suivant montre comment supprimer tous les conteneurs qui commencent par un préfixe spécifié :
def delete_container_prefix(self, blob_service_client: BlobServiceClient):
container_list = list(blob_service_client.list_containers(name_starts_with="test-"))
assert len(container_list) >= 1
for container in container_list:
# Find containers with the specified prefix and delete
container_client = blob_service_client.get_container_client(container=container.name)
container_client.delete_container()
Restaurer un conteneur supprimé
Quand la suppression réversible de conteneur est activée pour un compte de stockage, un conteneur supprimé et son contenu peuvent être récupérés pendant la période de conservation spécifiée. Pour en savoir plus sur la suppression réversible de conteneur, consultez Activer et gérer la suppression réversible pour les conteneurs. Vous pouvez restaurer un conteneur supprimé de manière réversible en appelant la méthode suivante de la classe BlobServiceClient
:
L’exemple suivant recherche un conteneur supprimé, obtient la version de ce conteneur supprimé, puis passe la version dans la méthode undelete_container
pour restaurer le conteneur.
def restore_deleted_container(self, blob_service_client: BlobServiceClient, container_name):
container_list = list(
blob_service_client.list_containers(include_deleted=True))
assert len(container_list) >= 1
for container in container_list:
# Find the deleted container and restore it
if container.deleted and container.name == container_name:
restored_container_client = blob_service_client.undelete_container(
deleted_container_name=container.name, deleted_container_version=container.version)
Supprimer un conteneur de manière asynchrone
La bibliothèque de client Stockage Blob Azure pour Python prend en charge la suppression asynchrone d’un conteneur d’objets blob. Pour en savoir plus sur les exigences de configuration de projet, consultez programmation asynchrone.
Pour supprimer un conteneur à l’aide d’API asynchrones, effectuez les étapes suivantes :
Ajoutez les instructions d’importation suivantes :
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Ajoutez du code pour exécuter le programme à l’aide de
asyncio.run
. Cette fonction exécute la coroutine passée,main()
dans notre exemple et gère la boucle d’événementasyncio
. Les coroutines sont déclarées avec la syntaxe asynchrone/await. Dans cet exemple, la coroutinemain()
crée d’abord le niveau supérieurBlobServiceClient
avecasync with
, puis appelle la méthode qui supprime le conteneur. Notez que seul le client de niveau supérieur doit utiliserasync with
, car d’autres clients créés à partir de celui-ci partagent le même pool de connexions.async def main(): sample = ContainerSamples() # TODO: Replace <storage-account-name> with your actual storage account name account_url = "https://<storage-account-name>.blob.core.windows.net" credential = DefaultAzureCredential() async with BlobServiceClient(account_url, credential=credential) as blob_service_client: await sample.delete_container(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())
Ajoutez du code pour supprimer le conteneur. Le code est identique à l’exemple synchrone, sauf que la méthode est déclarée avec le mot clé
async
et que le mot cléawait
est utilisé lors de l’appel de la méthodedelete_container
.async def delete_container(self, blob_service_client: BlobServiceClient, container_name): container_client = blob_service_client.get_container_client(container=container_name) await container_client.delete_container()
Avec cette configuration de base en place, vous pouvez implémenter d’autres exemples dans cet article en tant que coroutines à l’aide de la syntaxe asynchrone/await.
Ressources
Pour en savoir plus sur la suppression d’un conteneur à l’aide de la bibliothèque de client Stockage Blob Azure pour Python, consultez les ressources suivantes.
Exemples de code
- Afficher synchrone ou exemples de code asynchrones de cet article (GitHub)
Opérations de l'API REST
Le kit SDK Azure pour Python contient des bibliothèques qui reposent sur l’API REST Azure, ce qui vous permet d’interagir avec les opérations de l’API REST via des paradigmes Python 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 :
- Delete Container (API REST)
- Restore Container (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 (PyPi)
Voir aussi
- Suppression réversible des conteneurs
- Activer et gérer la suppression réversible pour les conteneurs
Contenu connexe
- Cet article fait partie du guide Stockage Blob pour Python pour les développeurs. Pour découvrir plus d’informations, consultez la liste complète des articles du guide du développeur dans Générer votre application Python.