Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этой статье показано, как удалить контейнеры с помощью клиентского модуля службы хранилища Azure для Go. Если вы включили обратимое удаление контейнера, можно восстановить удаленные контейнеры.
Prerequisites
- Подписка 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
}
Authorization
Механизм авторизации должен иметь необходимые разрешения для удаления или восстановления контейнера. Для авторизации с помощью идентификатора Microsoft Entra (рекомендуется) требуется встроенная роль управления доступом на основе ролей (RBAC) Сотрудник данных BLOB-объектов хранилища или более высокая. Дополнительные сведения см. в руководстве по авторизации для удаления контейнера (REST API) и восстановления контейнера (REST API).
Удаление контейнера
Чтобы удалить контейнер, вызовите следующий метод:
После удаления контейнера невозможно создать контейнер с тем же именем не менее 30 секунд. Попытка создать контейнер с тем же именем завершается ошибкой с кодом 409 (Conflict)ошибки HTTP. Любые другие операции с контейнером или большими двоичными объектами, которые он содержит, завершаются неудачей с кодом ошибки 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
Примеры кода в этом руководстве предназначены для начала работы с Хранилище BLOB-объектов Azure и Go. Необходимо изменить обработку ошибок и Context значения в соответствии с потребностями приложения.
Resources
Дополнительные сведения об удалении контейнера с помощью клиентского модуля хранилища BLOB-объектов Azure для Go см. в следующих ресурсах.
Примеры кода
- Просмотр примеров кода из этой статьи (GitHub)
Операции REST API
Пакет SDK Azure для Go содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы Go. Методы клиентской библиотеки для удаления или восстановления контейнера используют следующие операции REST API:
- Удаление контейнера (REST API)
- Восстановление контейнера (REST API)
Ресурсы модуля клиента
См. также
Связанный контент
- Эта статья является частью руководства разработчика хранилища BLOB-объектов для Go. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения Go.