Een blobcontainer verwijderen en herstellen met Python
In dit artikel wordt beschreven hoe u containers verwijdert met de Azure Storage-clientbibliotheek voor Python. Als u voorlopig verwijderen van containers hebt ingeschakeld, kunt u verwijderde containers herstellen.
Zie Een container asynchroon verwijderen voor meer informatie over het verwijderen van een blobcontainer met behulp van asynchrone API's.
Vereisten
- Azure-abonnement: u kunt een gratis abonnement nemen
- Azure Storage-account: maak een opslagaccount
- Python 3.8+
Uw omgeving instellen
Als u geen bestaand project hebt, ziet u in deze sectie hoe u een project instelt voor gebruik met de Azure Blob Storage-clientbibliotheek voor Python. Zie Aan de slag met Azure Blob Storage en Python voor meer informatie.
Als u wilt werken met de codevoorbeelden in dit artikel, volgt u deze stappen om uw project in te stellen.
Pakketten installeren
Installeer de volgende pakketten met behulp van pip install
:
pip install azure-storage-blob azure-identity
Importinstructies toevoegen
Voeg de volgende import
instructies toe:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Autorisatie
Het autorisatiemechanisme moet over de benodigde machtigingen beschikken om een container te verwijderen of te herstellen. Voor autorisatie met Microsoft Entra ID (aanbevolen) hebt u ingebouwde Azure RBAC-rol Opslagblobgegevensbijdrager of hoger nodig. Zie de autorisatierichtlijnen voor Delete Container (REST API) en Restore Container (REST API) voor meer informatie.
Een clientobject maken
Als u een app wilt verbinden met Blob Storage, maakt u een exemplaar van BlobServiceClient. In het volgende voorbeeld ziet u hoe u een clientobject maakt met behulp van DefaultAzureCredential
autorisatie:
# 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)
U kunt ook clientobjecten maken voor specifieke containers of blobs, rechtstreeks of vanuit het BlobServiceClient
object. Zie Clientobjecten maken en beheren die interactie hebben met gegevensbronnen voor meer informatie over het maken en beheren van clientobjecten.
Een container verwijderen
Als u een container in Python wilt verwijderen, gebruikt u de volgende methode uit de klasse BlobServiceClient :
U kunt ook een container verwijderen met behulp van de volgende methode uit de klasse ContainerClient :
Nadat u een container hebt verwijderd, kunt u gedurende ten minste 30 seconden geen container met dezelfde naam maken. Als u probeert een container met dezelfde naam te maken, mislukt de HTTP-foutcode 409 (Conflict)
. Alle andere bewerkingen in de container of de blobs die deze bevat, mislukken met HTTP-foutcode 404 (Not Found)
.
In het volgende voorbeeld wordt een BlobServiceClient
object gebruikt om de opgegeven container te verwijderen:
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()
In het volgende voorbeeld ziet u hoe u alle containers verwijdert die beginnen met een opgegeven voorvoegsel:
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()
Een verwijderde container herstellen
Wanneer voorlopig verwijderen van containers is ingeschakeld voor een opslagaccount, kunnen een verwijderde container en de inhoud ervan worden hersteld binnen een opgegeven bewaarperiode. Zie Voorlopig verwijderen voor containers inschakelen en beheren voor meer informatie over voorlopig verwijderen van containers. U kunt een voorlopig verwijderde container herstellen door de volgende methode van de BlobServiceClient
klasse aan te roepen:
In het volgende voorbeeld wordt een verwijderde container gevonden, de versie van die verwijderde container ophaalt en vervolgens de versie doorgegeven aan de undelete_container
methode om de container te herstellen.
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)
Een container asynchroon verwijderen
De Azure Blob Storage-clientbibliotheek voor Python ondersteunt het asynchroon verwijderen van een blobcontainer. Zie Asynchrone programmering voor meer informatie over de vereisten voor het instellen van projecten.
Volg deze stappen om een container te verwijderen met behulp van asynchrone API's:
Voeg de volgende importinstructies toe:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Voeg code toe om het programma uit te voeren met behulp van
asyncio.run
. Met deze functie wordt de doorgegeven coroutine uitgevoerd inmain()
ons voorbeeld en wordt deasyncio
gebeurtenislus beheerd. Coroutines worden gedeclareerd met de syntaxis async/await. In dit voorbeeld maakt demain()
coroutine eerst het hoogste niveauBlobServiceClient
met behulp vanasync with
en roept vervolgens de methode aan waarmee de container wordt verwijderd. Houd er rekening mee dat alleen de client op het hoogste niveau moet worden gebruiktasync with
, omdat andere clients die ermee zijn gemaakt, dezelfde verbindingsgroep delen.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())
Voeg code toe om de container te verwijderen. De code is hetzelfde als het synchrone voorbeeld, behalve dat de methode wordt gedeclareerd met het
async
trefwoord en hetawait
trefwoord wordt gebruikt bij het aanroepen van dedelete_container
methode.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()
Met deze basisinstallatie kunt u andere voorbeelden in dit artikel implementeren als coroutines met behulp van async/await syntaxis.
Resources
Zie de volgende resources voor meer informatie over het verwijderen van een container met behulp van de Azure Blob Storage-clientbibliotheek voor Python.
Codevoorbeelden
- Synchrone of asynchrone codevoorbeelden weergeven uit dit artikel (GitHub)
REST API-bewerkingen
De Azure SDK voor Python bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende Python-paradigma's. De clientbibliotheekmethoden voor het verwijderen of herstellen van een container maken gebruik van de volgende REST API-bewerkingen:
Clientbibliotheekbronnen
Zie ook
Gerelateerde inhoud
- Dit artikel maakt deel uit van de ontwikkelaarshandleiding voor Blob Storage voor Python. Zie de volledige lijst met artikelen over ontwikkelaarshandleidingen in Uw Python-app bouwen voor meer informatie.