共用方式為


使用 Go 刪除和還原 Blob 容器

本文說明如何使用適用於 GoAzure 儲存體 用戶端模組刪除容器。 如果您已啟用容器虛刪除,則可以還原已刪除的容器。

必要條件

設定您的環境

如果您沒有現有的專案,本節說明如何設定專案以使用適用於 Go 的 Azure Blob 儲存體 客戶端模組。 這些步驟包括模組安裝、新增 import 路徑,以及建立授權的客戶端物件。 如需詳細資訊,請參閱開始使用 Azure Blob 儲存體 和 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 記憶體,請使用 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)
            }
        }
    }
}

注意

本指南中的程式碼範例旨在協助您開始使用 Azure Blob 儲存體和 Go。 您應該修改錯誤處理和 Context 值,以符合應用程式的需求。

資源

若要深入瞭解如何使用適用於 Go 的 Azure Blob 儲存體 用戶端模組刪除容器,請參閱下列資源。

程式碼範例

REST API 操作

Azure SDK for Go 包含以 Azure REST API 為基礎的連結庫,可讓您透過熟悉的 Go 架構與 REST API 作業互動。 用來刪除或還原容器的用戶端程式庫方法會使用下列 REST API 作業:

用戶端模組資源

另請參閱