Sdílet prostřednictvím


Odstranění a obnovení kontejneru objektů blob pomocí Pythonu

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.

Požadavky

  • Tento článek předpokládá, že už máte projekt nastavený tak, aby fungoval s klientskou knihovnou služby Azure Blob Storage pro Python. Další informace o nastavení projektu, včetně instalace balíčku, přidání import příkazů a vytvoření autorizovaného klientského objektu, najdete v tématu Začínáme se službou Azure Blob Storage a Pythonem.
  • Autorizační mechanismus musí mít oprávnění k odstranění kontejneru objektů blob nebo obnovení obnovitelného odstraněného kontejneru. Další informace najdete v pokynech k autorizaci pro následující operace rozhraní REST API:

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 v kontejneru nebo objektech 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ů. Obnovitelně odstraněný kontejner můžete obnovit voláním následující metody BlobServiceClient třídy:

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:

  1. Přidejte následující příkazy importu:

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient
    
  2. Přidejte kód pro spuštění programu pomocí asyncio.run. Tato funkce spustí předanou korutinu v main() našem příkladu a spravuje smyčku asyncio událostí. Koroutiny jsou deklarovány syntaxí async/await. V tomto příkladu main() korutin nejprve vytvoří nejvyšší úroveň BlobServiceClient pomocí async witha pak zavolá metodu, která odstraní kontejner. Mějte na paměti, že pouze klient nejvyšší úrovně musí používat async with, protože ostatní klienti, kteří z něj vytvořili, 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())
    
  3. Přidejte kód pro odstranění kontejneru. Kód je stejný jako synchronní příklad s tím rozdílem, že metoda je deklarována pomocí async klíčového await slova a klíčové slovo se používá při volání delete_container metody.

    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 implementovat další příklady v tomto článku jako koruty pomocí syntaxe async/await.

Zdroje informací

Další informace o odstranění kontejneru pomocí klientské knihovny Azure Blob Storage pro Python najdete v následujících zdrojích informací.

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:

Ukázky kódu

Prostředky klientské knihovny

Viz také