次の方法で共有


Go を使用して BLOB コンテナーを削除して復元する

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

前提条件

環境を設定する

既存のプロジェクトがない場合、Go 用 Azure Blob Storage クライアント モジュールを操作するためのプロジェクトを設定する方法についてこのセクションで説明します。 この手順には、モジュールのインストール、import パスの追加、認可されているクライアント オブジェクトの作成が含まれます。 詳細については、Azure Blob Storage および Go の概要に関するページを参照してください。

モジュールのインストール

次のコマンドを使用して、azblob モジュールをインストールします。

go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

Microsoft Entra ID で認証するには (推奨)、次のコマンドを使用して azidentity モジュールをインストールします。

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

インポート パスの追加

コード ファイルに、次のインポートを追加します。

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

この記事の一部のコード例では、追加のインポート パスが必要な場合があります。 具体的な詳細と使用例についてはコード サンプルに関するページを参照してください。

クライアント オブジェクトの作成

アプリを Blob Storage に接続するには、azblob.NewClient を使用してクライアント オブジェクトを作成します。 次の例では、認可のために DefaultAzureCredential を使用してクライアント オブジェクトを作成する方法を示します。

func getServiceClientTokenCredential(accountURL string) *azblob.Client {
    // Create a new service client with token credential
    credential, err := azidentity.NewDefaultAzureCredential(nil)
    handleError(err)

    client, err := azblob.NewClient(accountURL, credential, nil)
    handleError(err)

    return client
}

承認

認可メカニズムには、コンテナーを削除または復元するために必要なアクセス許可が必要です。 Microsoft Entra ID を使用した認可 (推奨) には、Azure RBAC 組み込みロールのストレージ BLOB データ共同作成者以上が必要です。 詳細については、「コンテナーを削除する (REST API)」と「コンテナーを復元する (REST API)」に関する認可ガイダンスを参照してください。

コンテナーを削除する

コンテナーを削除するには、次のメソッドを呼び出します。

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

次の例は、コンテナーを削除する方法を示しています。

func deleteContainer(client *azblob.Client, containerName string) {
    // Delete the container
    _, err := client.DeleteContainer(context.TODO(), containerName, nil)
    handleError(err)
}

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

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

次の例では、論理的に削除されたコンテナーを含むコンテナーを一覧表示し、一覧に対して反復処理し、指定した論理的に削除されたコンテナーを復元します。

func restoreDeletedContainer(client *azblob.Client, containerName string) {
    // List containers, included deleted ones
    pager := client.NewListContainersPager(&azblob.ListContainersOptions{
        Include: azblob.ListContainersInclude{Deleted: true},
    })

    for pager.More() {
        resp, err := pager.NextPage(context.TODO())
        handleError(err)

        for _, container := range resp.ContainerItems {
            if *container.Name == containerName && *container.Deleted {
                // Restore the deleted container
                _, err := client.ServiceClient().RestoreContainer(context.TODO(), containerName, *container.Version, nil)
                handleError(err)
            }
        }
    }
}

Note

このガイドのコード サンプルは、Azure Blob Storage と Go の使用を開始するのに役立つことを目的としています。 エラー処理と Context の値は、アプリケーションのニーズに合わせて変更する必要があります。

リソース

Go 用 Azure Blob Storage クライアント モジュールを使用してコンテナーを削除する方法の詳細については、次のリソースを参照してください。

コード サンプル

REST API の操作

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

クライアント モジュール リソース

関連項目