使用 Go 刪除和還原 Blob 容器
本文說明如何使用適用於 Go 的 Azure 儲存體用戶端模組來刪除容器。 如果您已啟用容器虛刪除,則可以還原已刪除的容器。
必要條件
設定您的環境
如果沒有現有的專案,本節說明如何設定專案以使用適用於 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 儲存體用戶端模組刪除容器,請參閱下列資源。
程式碼範例
- 檢視本文中的程式碼範例 (GitHub)
REST API 操作
適用於 Go 的 Azure SDK 包含建置在 Azure REST API 之上的程式庫,可讓您透過熟悉的 Go 典範與 REST API 作業進行互動。 用來刪除或還原容器的用戶端程式庫方法會使用下列 REST API 作業:
用戶端模組資源
另請參閱
相關內容
- 本文是適用於 Go 的 Blob 儲存體開發人員指南的一部分。 若要深入了解,請參閱位於建置 Go 應用程式的完整開發人員指南文章清單。