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:
Přidejte následující příkazy importu:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Přidejte kód pro spuštění programu pomocí
asyncio.run
. Tato funkce spustí předanou korutinu vmain()
našem příkladu a spravuje smyčkuasyncio
událostí. Koroutiny jsou deklarovány syntaxí async/await. V tomto příkladumain()
korutin nejprve vytvoří nejvyšší úroveňBlobServiceClient
pomocíasync with
a 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ří 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())
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éhoawait
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:
- Odstranění kontejneru (REST API)
- Obnovení kontejneru (REST API)
Ukázky kódu
- Zobrazení synchronních nebo asynchronních ukázek kódu z tohoto článku (GitHub)
Prostředky klientské knihovny
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro