Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak usunąć kontenery z biblioteką klienta usługi Azure Storage dla języka Python. Jeśli włączono miękkie usuwanie kontenera, możesz przywrócić usunięte kontenery.
Aby dowiedzieć się więcej o usuwaniu kontenera obiektów blob przy użyciu asynchronicznych interfejsów API, zobacz Usuwanie kontenera asynchronicznie.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz jedną bezpłatnie
- Konto usługi Azure Storage — utwórz konto magazynowe
- Python 3.8+
Konfigurowanie środowiska
Jeśli nie masz istniejącego projektu, w tej sekcji pokazano, jak skonfigurować projekt do pracy z biblioteką klienta usługi Azure Blob Storage dla języka Python. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z usługami Azure Blob Storage i Python.
Aby pracować z przykładami kodu w tym artykule, wykonaj następujące kroki, aby skonfigurować projekt.
Instalowanie pakietów
Zainstaluj następujące pakiety przy użyciu polecenia pip install:
pip install azure-storage-blob azure-identity
Dodaj instrukcje importu
Dodaj następujące instrukcje import:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Autoryzacja
Mechanizm autoryzacji musi mieć niezbędne uprawnienia do usuwania lub przywracania kontenera. Aby uzyskać autoryzację przy użyciu Microsoft Entra ID (zalecane), potrzebujesz wbudowanej roli Azure RBAC Storage Blob Data Contributor lub wyższej. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dotyczące usuwania kontenera (interfejsu API REST) i przywracania kontenera (interfejs API REST).
Tworzenie obiektu klienta
Aby połączyć aplikację z usługą Blob Storage, utwórz instancję BlobServiceClient. W poniższym przykładzie pokazano, jak utworzyć obiekt klienta przy użyciu DefaultAzureCredential autoryzacji:
# 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)
Można również tworzyć obiekty klienta dla określonych kontenerów lub obiektów blob, albo bezpośrednio, albo na podstawie obiektu BlobServiceClient. Aby dowiedzieć się więcej na temat tworzenia obiektów klienta i zarządzania nimi, zobacz Tworzenie obiektów klienta korzystających z zasobów danych i zarządzanie nimi.
Usuwanie kontenera
Aby usunąć kontener w języku Python, użyj następującej metody z klasy BlobServiceClient :
Kontener można również usunąć przy użyciu następującej metody z klasy ContainerClient :
Po usunięciu kontenera nie można utworzyć kontenera o tej samej nazwie przez co najmniej 30 sekund. Próba utworzenia kontenera o tej samej nazwie zakończy się niepowodzeniem z kodem 409 (Conflict)błędu HTTP . Wszelkie inne operacje na kontenerze lub blobach, które zawiera, zakończą się niepowodzeniem z kodem błędu HTTP 404 (Not Found).
W poniższym przykładzie użyto BlobServiceClient obiektu do usunięcia określonego kontenera:
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()
W poniższym przykładzie pokazano, jak usunąć wszystkie kontenery rozpoczynające się od określonego prefiksu:
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()
Przywracanie usuniętego kontenera
Po włączeniu usuwania miękkiego kontenera dla konta przechowywania usunięty kontener i jego zawartość mogą zostać odzyskane w określonym okresie retencji. Aby dowiedzieć się więcej na temat miękkiego usuwania kontenerów, zobacz Włączanie i zarządzanie miękkim usuwaniem kontenerów. Kontener usunięty tymczasowo można przywrócić, wywołując następującą metodę BlobServiceClient klasy.
Poniższy przykład znajduje usunięty kontener, pobiera wersję usuniętego kontenera, a następnie przekazuje wersję do undelete_container metody w celu przywrócenia kontenera.
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)
Asynchroniczne usuwanie kontenera
Biblioteka klienta usługi Azure Blob Storage dla języka Python obsługuje asynchroniczne usuwanie kontenera obiektów blob. Aby dowiedzieć się więcej na temat wymagań dotyczących konfiguracji projektu, zobacz Programowanie asynchroniczne.
Wykonaj następujące kroki, aby usunąć kontener przy użyciu asynchronicznych interfejsów API:
Dodaj następujące instrukcje importowania:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClientDodaj kod, aby uruchomić program przy użyciu polecenia
asyncio.run. Ta funkcja uruchamia przekazaną korutynę w naszym przykładziemain()i zarządza pętlą zdarzeńasyncio. Coroutines są deklarowane za pomocą składni async/await. W tym przykładziemain()coroutine najpierw tworzy najwyższy poziomBlobServiceClientprzy użyciu metodyasync with, a następnie wywołuje metodę, która usuwa kontener. Należy pamiętać, że tylko klient najwyższego poziomu musi używać programuasync with, ponieważ inni klienci utworzoni na jego podstawie współużytkować tę samą pulę połączeń.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())Dodaj kod, aby usunąć kontener. Kod jest taki sam jak w przykładzie synchronicznym, z tą różnicą, że metoda jest zadeklarowana z użyciem słowa kluczowego
async, a słowo kluczoweawaitjest używane podczas wywoływania metodydelete_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()
Dzięki tej podstawowej konfiguracji możesz zaimplementować inne przykłady w tym artykule jako korutyny przy użyciu składni async/await.
Zasoby
Aby dowiedzieć się więcej na temat usuwania kontenera przy użyciu biblioteki klienta usługi Azure Blob Storage dla języka Python, zobacz następujące zasoby.
Przykłady kodu
- Wyświetlanie synchronicznych lub asynchronicznych przykładów kodu z tego artykułu (GitHub)
Operacje interfejsu API REST
Zestaw Azure SDK dla języka Python zawiera biblioteki, które bazują na interfejsie API REST platformy Azure, umożliwiając interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów języka Python. Metody biblioteki klienta do usuwania lub przywracania kontenera używają następujących operacji interfejsu API REST:
- Usuwanie kontenera (interfejs API REST)
- Przywracanie kontenera (interfejs API REST)
Zasoby biblioteki klienta
Zobacz też
Powiązana zawartość
- Ten artykuł jest częścią przewodnika dla deweloperów usługi Blob Storage dla języka Python. Aby dowiedzieć się więcej, zobacz pełną listę artykułów z przewodnika dla deweloperów w temacie Tworzenie aplikacji w języku Python.