Supprimer et restaurer un blob avec Python
Cet article explique comment supprimer des blobs avec la bibliothèque de client du Stockage Azure pour Python. Si vous avez activé la suppression réversible pour les blobs, vous pouvez restaurer les blobs supprimés pendant la période de conservation.
Pour en savoir plus sur la suppression d’un blob à l’aide d’API asynchrones, consultez Supprimer un blob de manière asynchrone.
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 Python. Pour en savoir plus sur la configuration de votre projet, y compris l'installation du package, l'ajout d'instructions
import
et la création d'un objet client autorisé, consultez Bien démarrer avec Azure Blob Storage et Python. - Pour utiliser des API asynchrones dans votre code, consultez les conditions requises dans la section programmation asynchrone.
- 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 la méthode suivante :
L’exemple suivant supprime un blob :
def delete_blob(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str):
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)
blob_client.delete_blob()
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 :
def delete_blob_snapshots(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str):
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)
blob_client.delete_blob(delete_snapshots="include")
Pour supprimer uniquement les instantanés et non le blob lui-même, vous pouvez passer le paramètre delete_snapshots="only"
.
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 est désactivé, appelez l’une des méthodes suivantes :
Cette méthode restaure le contenu et les métadonnées d’un blob supprimé de manière réversible et de tous les instantanés associés supprimés de manière réversible. L’appel de cette méthode pour un blob qui n’a pas été supprimé est sans effet.
def restore_blob(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str):
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)
blob_client.undelete_blob()
Restaurer des objets supprimés de manière réversible quand le versioning 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 la méthode suivante :
L’exemple de code suivant obtient la dernière version d’un blob supprimé et la restaure en la copiant dans le blob de base :
def restore_blob_version(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str):
container_client = blob_service_client.get_container_client(container=container_name)
# Get a reference to the soft-deleted base blob and list all the blob versions
blob_client = container_client.get_blob_client(blob=blob_name)
blob_list = container_client.list_blobs(name_starts_with=blob_name, include=['deleted','versions'])
blob_versions = []
for blob in blob_list:
blob_versions.append(blob.version_id)
# Get the latest version of the soft-deleted blob
blob_versions.sort(reverse=True)
latest_version = blob_versions[0]
# Build the blob URI and add the version ID as a query string
versioned_blob_url = f"{blob_client.url}?versionId={latest_version}"
# Restore the latest version by copying it to the base blob
blob_client.start_copy_from_url(versioned_blob_url)
Supprimer un blob de manière asynchrone
La bibliothèque cliente Stockage Blob Azure pour Python prend en charge la suppression asynchrone d’un blob. Pour en savoir plus sur les exigences de configuration de projet, consultez programmation asynchrone.
Procédez comme suit pour supprimer un blob à l’aide d’API asynchrones :
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’abordBlobServiceClient
de niveau supérieur à l’aide deasync with
, puis appelle la méthode qui supprime le blob. 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 = BlobSamples() # 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_blob(blob_service_client, "sample-container", "sample-blob.txt") if __name__ == '__main__': asyncio.run(main())
Ajoutez du code pour supprimer le blob. 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_blob
.async def delete_blob(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str): blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name) await blob_client.delete_blob()
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 de blobs et la restauration de blobs supprimés en utilisant la bibliothèque de client du Stockage Blob Azure pour Python, consultez les ressources suivantes.
Opérations de l'API REST
Le 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 d’API REST en utilisant des paradigmes Python familiers. Les méthodes de bibliothèque de client pour supprimer des blobs et restaurer des blob supprimés utilisent les opérations d’API REST suivantes :
- Delete Blob (API REST)
- Undelete Blob (API REST)
Exemples de code
- Afficher synchrone ou exemples de code asynchrones de cet article (GitHub)
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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour