Java を使用して BLOB コンテナーを削除および復元する

この記事では、Java 用の Azure Storage クライアント ライブラリを使ってコンテナーを削除する方法について説明します。 コンテナーの論理的な削除を有効にしている場合は、削除されたコンテナーを復元できます。

前提条件

  • この記事では、Java 用の Azure Blob Storage クライアント ライブラリを操作するようにプロジェクトが既に設定されていることを前提としています。 パッケージのインストール、import ディレクティブの追加、クライアント オブジェクトの承認など、プロジェクトの設定については、「Azure Storage と Java での作業開始」をご覧ください。
  • 承認メカニズムには、BLOB コンテナーを削除するか、論理的に削除されたコンテナーを復元するためのアクセス許可が必要です。 詳細については、次の REST API 操作の認可ガイダンスを参照してください。

コンテナーを削除する

Java でコンテナーを削除するには、BlobServiceClient クラスの次のいずれかのメソッドを使用します。

次に示す BlobContainerClient クラスのメソッドのいずれかを使用してコンテナーを削除することもできます。

コンテナーを削除した後、"少なくとも" 30 秒間は同じ名前のコンテナーを作成できません。 同じ名前のコンテナーを作成しようとすると、HTTP エラー コード 409 (Conflict) が返されて処理が失敗します。 コンテナーまたはそれに含まれる BLOB に対して他の操作を実行しようとすると、HTTP エラー コード 404 (Not Found) が返されて処理が失敗します。

次の例では、BlobServiceClient オブジェクトを使用して、指定したコンテナーを削除しています。

public void deleteContainer(BlobServiceClient blobServiceClient, String containerName) {
    // Delete the container using the service client
    blobServiceClient.deleteBlobContainer(containerName);
}

次の例は、指定したプレフィックスで始まるすべてのコンテナーを削除する方法を示しています。

public void deleteContainersWithPrefix(BlobServiceClient blobServiceClient) {
    ListBlobContainersOptions options = new ListBlobContainersOptions()
            .setPrefix("container-");

    // Delete the container with the specified prefix using the service client
    for (BlobContainerItem containerItem : blobServiceClient.listBlobContainers(options, null)) {
        BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerItem.getName());
        containerClient.delete();
    }
}

削除されたコンテナーを復元する

ストレージ アカウントに対してコンテナーの論理的な削除が有効になっているとき、指定した保持期間中はコンテナーとその内容を復旧できます。 コンテナーの論理的な削除の詳細については、「コンテナーの論理的な削除を有効にして管理する」をご覧ください。 BlobServiceClient クラスの次のメソッドを呼び出すことで、論理的に削除されたコンテナーを復元できます。

次の例では、削除されたコンテナーを検索し、その削除されたコンテナーのバージョンを取得し、次にそのバージョンを undeleteBlobContainer メソッドに渡してコンテナーを復元します。

public void restoreContainer(BlobServiceClient blobServiceClient) {
    ListBlobContainersOptions options = new ListBlobContainersOptions();
    options.getDetails().setRetrieveDeleted(true);

    // Delete the container with the specified prefix using the service client
    for (BlobContainerItem deletedContainerItem : blobServiceClient.listBlobContainers(options, null)) {
        BlobContainerClient containerClient = blobServiceClient
                .undeleteBlobContainer(deletedContainerItem.getName(), deletedContainerItem.getVersion());
    }
}

リソース

Java 用 Azure Blob Storage クライアント ライブラリを使用したコンテナーの削除の詳細については、次のリソースを参照してください。

REST API の操作

Azure SDK for Java には Azure REST API に基づき構築されたライブラリが含まれるため、使い慣れた Java パラダイムを通じて REST API 操作を実施できます。 コンテナーを削除または復元するためのクライアント ライブラリ メソッドでは、次の REST API 操作が使用されます。

コード サンプル

クライアント ライブラリのリソース

関連項目