Удаление и восстановление контейнера BLOB-объектов с помощью Go
В этой статье показано, как удалить контейнеры с помощью модуля клиента служба хранилища Azure для Go. Если вы включили обратимое удаление контейнера, можно восстановить удаленные контейнеры.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Учетная запись хранения Azure — создайте такую учетную запись.
- Go 1.18+
Настройка среды
Если у вас нет существующего проекта, в этом разделе показано, как настроить проект для работы с клиентским модулем Хранилище BLOB-объектов Azure для Go. Ниже приведены действия по установке модуля, добавлению import
путей и созданию авторизованного клиентского объекта. Дополнительные сведения см. в статье "Начало работы с Хранилище BLOB-объектов Azure и Go".
Установка модулей
Установите модуль azblob с помощью следующей команды:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Чтобы выполнить проверку подлинности с помощью идентификатора Microsoft Entra (рекомендуется), установите 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 (рекомендуется), требуется встроенный участник данных хранилища BLOB-объектов хранилища ролей или более поздней версии. Дополнительные сведения см. в руководстве по авторизации для удаления контейнера (REST API) и восстановления контейнера (REST API).
Удаление контейнера
Чтобы удалить контейнер, вызовите следующий метод:
После удаления контейнера вы не сможете создать контейнер с тем же именем в течение как минимум 30 секунд. Попытка создать контейнер с тем же именем завершается ошибкой с кодом 409 (Conflict)
ошибки HTTP. Любые другие операции с контейнером или большими двоичными объектами, которые он содержит сбой с кодом 404 (Not Found)
ошибки HTTP.
В следующем примере показано, как удалить указанный контейнер:
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)
}
}
}
}
Примечание.
Примеры кода в этом руководстве предназначены для начала работы с Хранилище BLOB-объектов Azure и Go. Необходимо изменить обработку ошибок и Context
значения в соответствии с потребностями приложения.
Ресурсы
Дополнительные сведения об удалении контейнера с помощью клиентского модуля Хранилище BLOB-объектов Azure для Go см. в следующих ресурсах.
Примеры кода
- Просмотр примеров кода из этой статьи (GitHub)
Операции REST API
Пакет SDK Azure для Go содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы Go. Методы клиентской библиотеки для удаления или восстановления контейнера используют следующие операции REST API:
- Удаление контейнера (REST API)
- Восстановление контейнера (REST API)
Ресурсы модуля клиента
См. также
Связанный контент
- Эта статья является частью руководства разработчика хранилища BLOB-объектов для Go. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения Go.