Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek ukazuje, jak odstranit kontejnery pomocí klientské knihovny azure Storage pro Python. Pokud jste povolili obnovitelné odstranění kontejneru, můžete odstraněné kontejnery obnovit.
Další informace o odstranění kontejneru objektů blob pomocí asynchronních rozhraní API najdete v tématu Asynchronní odstranění kontejneru.
Prerequisites
- Předplatné Azure – vytvoření bezplatného předplatného
- Účet úložiště Azure – Vytvoření účtu úložiště
- Python 3.8 nebo novější
Nastavení prostředí
Pokud nemáte existující projekt, v této části se dozvíte, jak nastavit projekt pro práci s klientskou knihovnou Azure Blob Storage pro Python. Další podrobnosti najdete v tématu Začínáme se službou Azure Blob Storage a Pythonem.
Pokud chcete pracovat s příklady kódu v tomto článku, nastavte projekt pomocí následujícího postupu.
Instalace balíčků
Nainstalujte následující balíčky pomocí pip install:
pip install azure-storage-blob azure-identity
Přidejte příkazy importu
Přidejte následující import příkazy:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Authorization
Autorizační mechanismus musí mít potřebná oprávnění k odstranění nebo obnovení kontejneru. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete integrovanou roli Azure RBAC Storage Blob Data Contributor nebo vyšší. Další informace najdete v pokynech k autorizaci k odstranění kontejneru (REST API) a obnovení kontejneru (REST API).
Vytvoření objektu klienta
Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte instanci BlobServiceClient. Následující příklad ukazuje, jak pomocí DefaultAzureCredential vytvořit objekt klienta pro autorizaci.
# 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)
Můžete také vytvořit klientské objekty pro konkrétní kontejnery nebo objekty blob, a to buď přímo, nebo z objektu BlobServiceClient . Další informace o vytváření a správě klientských objektů najdete v tématu Vytváření a správa klientských objektů, které pracují s datovými prostředky.
Odstranění kontejneru
Pokud chcete odstranit kontejner v Pythonu, použijte následující metodu z třídy BlobServiceClient :
Kontejner můžete také odstranit pomocí následující metody z třídy ContainerClient :
Po odstranění kontejneru nemůžete vytvořit kontejner se stejným názvem alespoň po dobu 30 sekund. Pokus o vytvoření kontejneru se stejným názvem selže s kódem 409 (Conflict)chyby HTTP . Jakékoli jiné operace na kontejner nebo objekty blob, které obsahuje, selžou s kódem 404 (Not Found) chyby HTTP.
Následující příklad používá BlobServiceClient objekt k odstranění zadaného kontejneru:
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()
Následující příklad ukazuje, jak odstranit všechny kontejnery, které začínají zadanou předponou:
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()
Obnovení odstraněného kontejneru
Pokud je pro účet úložiště povolené obnovitelné odstranění kontejneru, může se odstraněný kontejner a jeho obsah obnovit během zadané doby uchovávání. Další informace o obnovitelném odstranění kontejnerů najdete v tématu Povolení a správa obnovitelného odstranění kontejnerů. Měkce odstraněný kontejner můžete obnovit voláním následující metody třídy BlobServiceClient.
Následující příklad najde odstraněný kontejner, získá verzi tohoto odstraněného kontejneru a pak předá verzi do undelete_container metody pro obnovení kontejneru.
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)
Asynchronní odstranění kontejneru
Klientská knihovna Azure Blob Storage pro Python podporuje asynchronní odstranění kontejneru objektů blob. Další informace o požadavcích na nastavení projektu najdete v tématu Asynchronní programování.
Pomocí následujících kroků odstraňte kontejner pomocí asynchronních rozhraní API:
Přidejte následující příkazy importu:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClientPřidejte kód pro spuštění programu pomocí
asyncio.run. Tato funkce spustí předanou korutinu v našem příkladumain()a spravuje událostní smyčkuasyncio. Koroutiny jsou deklarovány syntaxí async/await. V tomto příkladumain()korutin nejprve vytvoří nejvyšší úroveňBlobServiceClientpomocíasync witha pak zavolá metodu, která odstraní kontejner. Mějte na paměti, že pouze klient nejvyšší úrovně musí používatasync with, protože ostatní klienti, kteří jsou z něj vytvořeni, sdílejí stejný fond připojení.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())Přidejte kód pro odstranění kontejneru. Kód je stejný jako synchronní příklad, s výjimkou toho, že metoda je deklarována s použitím klíčového slova
asynca při volání metodyawaitse používá klíčové slovodelete_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()
S tímto základním nastavením můžete další příklady v tomto článku implementovat jako korutiny pomocí syntaxe async/await.
Resources
Další informace o odstranění kontejneru pomocí klientské knihovny Azure Blob Storage pro Python najdete v následujících zdrojích informací.
Ukázky kódu
- Zobrazení synchronních nebo asynchronních ukázek kódu z tohoto článku (GitHub)
Operace rozhraní REST API
Sada Azure SDK pro Python obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat Pythonu. Metody klientské knihovny pro odstranění nebo obnovení kontejneru používají následující operace rozhraní REST API:
- Odstranění kontejneru (REST API)
- Obnovení kontejneru (REST API)
Prostředky klientské knihovny
Viz také
Související obsah
- Tento článek je součástí příručky pro vývojáře služby Blob Storage pro Python. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace v Pythonu.