Eliminare e ripristinare un contenitore BLOB con Python
Questo articolo illustra come eliminare i contenitori con la libreria client di Archiviazione di Azure per Python. Se è stata abilitata l'eliminazione temporanea del contenitore, è possibile ripristinare i contenitori eliminati.
Per informazioni sull'eliminazione di un contenitore BLOB tramite API asincrone, vedere Eliminare un contenitore in modo asincrono.
Prerequisiti
- Sottoscrizione di Azure: creare un account gratuito
- Account di archiviazione di Azure: creare un account di archiviazione
- Python 3.8+
Configurazione dell'ambiente
Se non si dispone di un progetto esistente, questa sezione illustra come configurare un progetto per l’uso con la libreria client di Archiviazione BLOB di Azure per Python. Per altre informazioni, vedere Introduzione ad Archiviazione BLOB di Azure e Python.
Per usare gli esempi di codice in questo articolo, seguire questa procedura per configurare il progetto.
Installare i pacchetti
Installare i pacchetti seguenti tramite pip install
:
pip install azure-storage-blob azure-identity
Aggiungere le istruzioni di importazione
Aggiungere le istruzioni import
seguenti:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Autorizzazione
Il meccanismo di autorizzazione deve disporre delle autorizzazioni necessarie per eliminare o ripristinare un contenitore. Per l'autorizzazione con Microsoft Entra ID (scelta consigliata), è necessario disporre del ruolo predefinito di Controllo degli accessi in base al ruolo di Azure Collaboratore ai dati del BLOB di archiviazione o ruolo superiore. Per altre informazioni, vedere le indicazioni sulle autorizzazioni per Delete Container (API REST) e Restore Container (API REST).
Creare un oggetto client
Per connettere un'app ad Archiviazione BLOB, creare un'istanza di BlobServiceClient. Nell'esempio seguente viene illustrato come creare un oggetto client usando DefaultAzureCredential
per l'autorizzazione:
# 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)
È anche possibile creare oggetti client per contenitori o BLOB specifici, direttamente o dall'oggetto BlobServiceClient
. Per altre informazioni sulla creazione e la gestione di oggetti client, vedere Creare e gestire oggetti client che interagiscono con le risorse dati.
Eliminare un contenitore
Per eliminare un contenitore in Python, usare il metodo seguente dalla classe BlobServiceClient:
È anche possibile eliminare un contenitore usando il metodo seguente dalla classe ContainerClient:
Dopo aver eliminato un contenitore, non è possibile creare un contenitore con lo stesso nome per almeno 30 secondi. Il tentativo di creare un contenitore con lo stesso nome avrà esito negativo con codice di errore HTTP 409 (Conflict)
. Qualsiasi altra operazione sul contenitore o sui BLOB in esso contenuti avrà esito negativo con codice di errore HTTP 404 (Not Found)
.
Nell'esempio seguente viene usato un oggetto BlobServiceClient
per eliminare il contenitore specificato:
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()
Nell'esempio seguente viene illustrato come eliminare tutti i contenitori che iniziano con un prefisso specificato:
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()
Ripristinare un contenitore eliminato
Quando l'eliminazione temporanea del contenitore è abilitata per un account di archiviazione, un contenitore eliminato e il relativo contenuto possono essere recuperati entro un periodo di conservazione specificato. Per altre informazioni sull'eliminazione temporanea dei contenitori, vedere Abilitare e gestire l'eliminazione temporanea per i contenitori. È possibile ripristinare un contenitore eliminato predefinito chiamando il metodo seguente della classe BlobServiceClient
:
L'esempio seguente trova un contenitore eliminato, ottiene la versione del contenitore eliminato e quindi passa la versione nel metodo undelete_container
per ripristinare il contenitore.
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)
Eliminare un contenitore in modo asincrono
La libreria client di Archiviazione BLOB di Azure per Python supporta l'eliminazione asincrona di un contenitore BLOB. Per altre informazioni sui requisiti di configurazione del progetto, vedere Programmazione asincrona.
Seguire questa procedura per eliminare un contenitore usando le API asincrone:
Aggiungere le seguenti istruzioni Import:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Aggiungere il codice per eseguire il programma utilizzando
asyncio.run
. Questa funzione esegue la coroutine passata,main()
nell'esempio, e gestisce il ciclo di eventiasyncio
. Le coroutine vengono dichiarate con la sintassi async/await. In questo esempio, la coroutinemain()
crea innanzitutto ilBlobServiceClient
di primo livello usandoasync with
, quindi chiama il metodo che elimina il contenitore. Si noti che solo il client di primo livello deve usareasync with
, poiché gli altri client creati da esso condividono lo stesso pool di connessioni.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())
Aggiungere codice per eliminare il contenitore. Il codice è uguale all'esempio sincrono, ad eccezione del fatto che il metodo viene dichiarato con la parola chiave
async
e la parola chiaveawait
viene usata quando si chiama il metododelete_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()
Con questa configurazione di base, è possibile implementare altri esempi in questo articolo come coroutine usando la sintassi async/await.
Risorse
Per altre informazioni sull'eliminazione di un contenitore usando la libreria client di Archiviazione BLOB di Azure per Python, vedere le risorse seguenti.
Esempi di codice
Operazioni dell'API REST
Azure SDK per Python contiene librerie basate sull'API REST di Azure, che consentono di interagire con le operazioni dell'API REST tramite paradigmi Python noti. I metodi della libreria client per eliminare o ripristinare un contenitore usano le operazioni API REST seguenti:
- Delete Container (API REST)
- Restore Container (API REST)
Risorse per la libreria client
- Documentazione di riferimento della libreria client
- Codice sorgente della libreria client
- Pacchetto (PyPi)
Vedi anche
- Eliminazione temporanea per i contenitori
- Abilitare e gestire l'eliminazione temporanea per i contenitori
Contenuto correlato
- Questo articolo fa parte della Guida per sviluppatori di Archiviazione BLOB per Python. Per altre informazioni, vedere l’elenco completo degli articoli della Guida per sviluppatori in Creare la propria app Python.