Вывод списка контейнеров BLOB-объектов с помощью Go
При перечислении контейнеров в учетной записи служба хранилища Azure из кода можно указать несколько вариантов управления возвратом результатов из служба хранилища Azure. В этой статье показано, как перечислить контейнеры с помощью клиентского модуля служба хранилища 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
}
Авторизация
Механизм авторизации должен иметь необходимые разрешения для перечисления контейнеров BLOB-объектов. Для авторизации с помощью идентификатора Microsoft Entra (рекомендуется), требуется встроенный участник данных хранилища BLOB-объектов хранилища ролей или более поздней версии. Дополнительные сведения см. в руководстве по авторизации для контейнеров списка (REST API).
Сведения о параметрах перечисления контейнеров
При перечислении контейнеров из кода можно указать параметры для управления возвратом результатов из служба хранилища Azure. Можно указать число возвращаемых результатов в каждом наборе результатов, а затем извлечь последующие наборы. Вы также можете фильтровать результаты по префиксу и возвращать метаданные контейнера с результатами. Описание этих параметров приводится в следующих разделах.
Чтобы перечислить контейнеры в учетной записи хранения, вызовите следующий метод:
Этот метод возвращает pager, который позволяет приложению обрабатывать одну страницу результатов одновременно. Контейнеры упорядочены лексографически по имени.
Вы можете указать параметры для перечисления контейнеров с помощью структуры ListContainersOptions . Эта структура содержит поля для управления числом результатов, фильтрацией по префиксу и включая сведения о контейнере с помощью ListContainersInclude.
Управление количеством возвращаемых результатов
По умолчанию операция перечисления возвращает до 5000 результатов за раз. Чтобы вернуть меньший набор результатов, укажите ненулевое значение для MaxResults
поля в структуре ListContainersOptions .
Фильтрация результатов с помощью префикса
Чтобы отфильтровать список контейнеров, укажите строку или символ для Prefix
поля в ListContainersOptions. Строка префикса может содержать один или несколько символов. Служба хранилища Azure возвращает только те контейнеры, имена которых начинаются с этого префикса.
Включение метаданных контейнера
Чтобы включить метаданные контейнера с результатами, задайте Metadata
для поля значение true
ListContainersInclude. служба хранилища Azure включает метаданные с каждым возвращенным контейнером, поэтому вам не нужно отдельно получить метаданные контейнера.
Включение удаленных контейнеров
Чтобы включить обратимо удаленные контейнеры с результатами, задайте Deleted
для поля значение true
ListContainersInclude.
Примеры кода
В следующем примере перечислены все контейнеры и метаданные:
func listContainers(client *azblob.Client) {
// List the containers in the storage account and include metadata
pager := client.NewListContainersPager(&azblob.ListContainersOptions{
Include: azblob.ListContainersInclude{Metadata: true},
})
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, container := range resp.ContainerItems {
fmt.Println(*container.Name)
for k, v := range container.Metadata {
fmt.Printf("%v: %v\n", k, *v)
}
}
}
}
В следующем примере перечислены только контейнеры, начинающиеся с указанного префикса:
func listContainersWithPrefix(client *azblob.Client, prefix string) {
// List the containers in the storage account with a prefix
pager := client.NewListContainersPager(&azblob.ListContainersOptions{
Prefix: &prefix,
})
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, container := range resp.ContainerItems {
fmt.Println(*container.Name)
}
}
}
Можно также указать ограничение количества результатов на страницу. В этом примере передается значение для MaxResults
результатов и выполняется разбивка на страницы.
func listContainersWithMaxResults(client *azblob.Client, maxResults int32) {
// List the containers in the storage account with a maximum number of results
pager := client.NewListContainersPager(&azblob.ListContainersOptions{
MaxResults: &maxResults,
})
i := 0
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
// Show page number to demonstrate pagination with max results
i++
fmt.Printf("Page %d:\n", i)
for _, container := range resp.ContainerItems {
fmt.Println(*container.Name)
}
}
}
Примечание.
Примеры кода в этом руководстве предназначены для начала работы с Хранилище BLOB-объектов Azure и Go. Необходимо изменить обработку ошибок и Context
значения в соответствии с потребностями приложения.
Ресурсы
Дополнительные сведения о перечислении контейнеров с помощью клиентского модуля Хранилище BLOB-объектов Azure для Go см. в следующих ресурсах.
Примеры кода
- Просмотр примеров кода из этой статьи (GitHub)
Операции REST API
Пакет SDK Azure для Go содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы Go. Методы клиентской библиотеки для перечисления контейнеров используют следующую операцию REST API:
- Список контейнеров (REST API)
Ресурсы модуля клиента
См. также
Связанный контент
- Эта статья является частью руководства разработчика хранилища BLOB-объектов для Go. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения Go.