このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
この記事では、Python 用 Azure Storage クライアント ライブラリを使用してコンテナーを削除する方法について説明します。コンテナーの論理的な削除を有効にしている場合は、削除されたコンテナーを復元できます。
非同期 API を使用して BLOB コンテナーを削除する方法については、「コンテナーを非同期的に削除する」を参照してください。
既存のプロジェクトがない場合、Python 用 Azure Blob Storage クライアント ライブラリを操作するためのプロジェクトをセットアップする方法についてこのセクションで説明します。 詳細については、「Azure Blob Storage と Python で作業を開始する」を参照してください。
この記事のコード例を使用するには、次の手順に従ってプロジェクトを設定します。
pip install
を使用して次のパッケージをインストールしてください。
pip install azure-storage-blob azure-identity
次のimport
ステートメントを追加します。
from azure.identity import DefaultAzureCredentialfrom azure.storage.blob import BlobServiceClient
認可メカニズムには、コンテナーを削除または復元するために必要なアクセス許可が必要です。 Microsoft Entra ID を使用した認可 (推奨) には、Azure RBAC 組み込みロールのストレージ BLOB データ共同作成者以上が必要です。 詳細については、「コンテナーを削除する (REST API)」と「コンテナーを復元する (REST API)」に関する認可ガイダンスを参照してください。
アプリを Blob Storage に接続するには、BlobServiceClientのインスタンスを作成します。 次の例では、認可のためにDefaultAzureCredential
を使用してクライアント オブジェクトを作成する方法を示します。
# TODO: Replace <storage-account-name> with your actual storage account nameaccount_url = "https://<storage-account-name>.blob.core.windows.net"credential = DefaultAzureCredential()# Create the BlobServiceClient objectblob_service_client = BlobServiceClient(account_url, credential=credential)
また、特定のコンテナーまたはBLOB 用のクライアント オブジェクトを、直接またはBlobServiceClient
オブジェクトから作成することもできます。 クライアント オブジェクトの作成と管理の詳細については、「データ リソースを操作するクライアント オブジェクトを作成および管理する」を参照してください。
Python でコンテナーを削除するには、BlobServiceClient クラスの次のメソッドを使用します。
また、ContainerClient クラスの次のメソッドを使用してコンテナーを削除することもできます。
コンテナーを削除した後、"少なくとも" 30 秒間は同じ名前のコンテナーを作成できません。 同じ名前のコンテナーを作成しようとすると、HTTP エラー コード409 (Conflict)
が返されて処理が失敗します。 コンテナーまたはそれに含まれる BLOB に対して他の操作を実行しようとすると、HTTP エラー コード404 (Not Found)
が返されて処理が失敗します。
次の例では、BlobServiceClient
オブジェクトを使用して、指定したコンテナーを削除しています。
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()
次の例は、指定したプレフィックスで始まるすべてのコンテナーを削除する方法を示しています。
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()
ストレージ アカウントに対してコンテナーの論理的な削除が有効になっているとき、指定した保持期間中はコンテナーとその内容を復旧できます。 コンテナーの論理的な削除の詳細については、「コンテナーの論理的な削除を有効にして管理する」をご覧ください。BlobServiceClient
クラスの次のメソッドを呼び出すことで、論理的に削除されたコンテナーを復元できます。
次の例では、削除されたコンテナーを検索し、その削除されたコンテナーのバージョンを取得し、次にそのバージョンをundelete_container
メソッドに渡してコンテナーを復元します。
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)
Python 用 Azure Blob Storage クライアント ライブラリでは、BLOB コンテナーの非同期削除がサポートされています。 プロジェクトのセットアップ要件の詳細については、「非同期プログラミング」を参照してください。
非同期 API を使用してコンテナーを削除するには、次の手順に従います。
次の import ステートメントを追加します。
import asynciofrom azure.identity.aio import DefaultAzureCredentialfrom azure.storage.blob.aio import BlobServiceClient
asyncio.run
を使ってプログラムを実行するコードを追加します。 この関数では、この例で渡されたコルーチンmain()
を実行し、asyncio
イベント ループを管理します。 コルーチンは、async/await 構文で宣言されます。 この例のmain()
コルーチンでは、最初にasync with
を使用して最上位のBlobServiceClient
を作成し、次にコンテナーを削除するメソッドを呼び出します。 最上位のクライアントのみでasync with
を使う必要があることに注意してください。ここから作成された他のクライアントでは同じ接続プールを共有するためです。
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())
コンテナーを削除するコードを追加します。 このコードは同期の例と同じですが、async
キーワードを使用してメソッドが宣言され、delete_container
メソッドを呼び出すときにawait
キーワードが使用される点が異なります。
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()
この基本的なセットアップが実施されている場合、async/await 構文を使用して、この記事の他の例をコルーチンとして実装できます。
Python 用 Azure Blob Storage クライアント ライブラリを使用したコンテナーの削除について詳しくは、次のリソースを参照してください。
Azure SDK for Python には Azure REST API に基づき構築されたライブラリが含まれるため、使い慣れた Python パラダイムを通じて REST API 操作を実施できます。 コンテナーを削除または復元するためのクライアント ライブラリ メソッドでは、次の REST API 操作が使用されます。
このページはお役に立ちましたか?
このページはお役に立ちましたか?