Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При перечислении контейнеров в учетной записи службы хранилища Azure из вашего кода можно указать несколько параметров для управления тем, как возвращаются результаты из службы хранилища Azure. В этой статье показано, как перечислить контейнеры с помощью клиентской библиотеки Azure Storage для Python.
Сведения о перечислении контейнеров BLOB с использованием асинхронного API см. в разделе Асинхронное перечисление контейнеров.
Требования
- Подписка Azure — создайте бесплатную учетную запись.
- Учетная запись хранения Azure — создайте такую учетную запись.
- Python 3.8+
Настройка среды
Если у вас нет существующего проекта, в этом разделе показано, как настроить проект для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для Python. Дополнительные сведения см. в статье «Начало работы с хранилищем BLOB-объектов Azure и Python».
Чтобы работать с примерами кода в этой статье, выполните следующие действия, чтобы настроить проект.
Установка пакетов
Установите следующие пакеты с помощью pip install
:
pip install azure-storage-blob azure-identity
Добавьте инструкции импорта
Добавьте операторы import
, перечисленные ниже:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Авторизация
Механизм авторизации должен иметь необходимые разрешения для перечисления контейнеров блобов. Для авторизации с помощью идентификатора Microsoft Entra (рекомендуется) вам необходима встроенная роль Azure RBAC Storage Blob Data Contributor или выше. Дополнительные сведения см. в руководстве по авторизации для контейнеров списка (REST API).
Создание клиентского объекта
Чтобы подключить приложение к хранилищу BLOB-объектов, создайте экземпляр BLOBServiceClient. В следующем примере показано, как создать клиентский объект с помощью DefaultAzureCredential
авторизации:
# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()
# Create the BlobServiceClient object
blob_service_client = BlobServiceClient(account_url, credential=credential)
Можно также создавать клиентские объекты для определенных контейнеров или объектов BLOB, напрямую или из BlobServiceClient
. Дополнительные сведения о создании клиентских объектов и управлении ими см. в статье "Создание клиентских объектов и управление ими", взаимодействующих с ресурсами данных.
Сведения о параметрах перечисления контейнеров
При перечислении контейнеров из кода можно указать параметры для управления возвратом результатов из службы хранилища Azure. Можно указать число возвращаемых результатов в каждом наборе результатов, а затем извлечь последующие наборы. Вы также можете фильтровать результаты по префиксу и возвращать метаданные контейнера с результатами. Описание этих параметров приводится в следующих разделах.
Чтобы перечислить контейнеры в учетной записи хранения, вызовите следующий метод:
Этот метод возвращает итератор типа ContainerProperties. Контейнеры упорядочены лексографически по имени.
Управление количеством возвращаемых результатов
По умолчанию операция перечисления возвращает до 5000 результатов за раз. Чтобы вернуть меньший набор результатов, укажите ненулевое значение для аргумента ключевого results_per_page
слова.
Фильтрация результатов с помощью префикса
Чтобы отфильтровать список контейнеров, укажите строку или символ для аргумента ключевого name_starts_with
слова. Строка префикса может содержать один или несколько символов. Служба хранилища Azure возвращает только те контейнеры, имена которых начинаются с этого префикса.
Включение метаданных контейнера
Чтобы включить метаданные контейнера с результатами, задайте для аргумента ключевого include_metadata
слова значение True
. служба хранилища Azure включает метаданные с каждым возвращенным контейнером, поэтому вам не нужно отдельно получить метаданные контейнера.
Включить удаленные контейнеры
Чтобы включить удаленные с возможностью восстановления контейнеры в результаты, задайте ключевой аргумент include_deleted
значением True
.
Примеры кода
В следующем примере перечислены все контейнеры и метаданные. Можно включить метаданные контейнера, задав значение include_metadata
True
:
def list_containers(self, blob_service_client: BlobServiceClient):
containers = blob_service_client.list_containers(include_metadata=True)
for container in containers:
print(container['name'], container['metadata'])
В следующем примере перечислены только контейнеры, начинающиеся с префикса, указанного в параметре name_starts_with
:
def list_containers_prefix(self, blob_service_client: BlobServiceClient):
containers = blob_service_client.list_containers(name_starts_with='test-')
for container in containers:
print(container['name'])
Можно также указать ограничение количества результатов на страницу. В этом примере передается results_per_page
, и результаты разбиваются на страницы:
def list_containers_pages(self, blob_service_client: BlobServiceClient):
i=0
all_pages = blob_service_client.list_containers(results_per_page=5).by_page()
for container_page in all_pages:
i += 1
print(f"Page {i}")
for container in container_page:
print(container['name'])
Асинхронное перечисление контейнеров
Клиентская библиотека для работы с хранилищем BLOB-объектов Azure на Python поддерживает асинхронное перечисление контейнеров. Дополнительные сведения о требованиях к настройке проекта см. в статье асинхронное программирование.
Выполните следующие действия, чтобы перечислить контейнеры с помощью асинхронных API:
Добавьте в файл следующие операторы импорта:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Добавьте код для запуска программы с помощью
asyncio.run
. Эта функция в нашем примере запускает переданную корутинуmain()
и управляет циклом событийasyncio
. Корутины объявляются с использованием синтаксиса async/await. В этом примереmain()
корутина сначала создаёт верхний уровеньBlobServiceClient
с использованиемasync with
, а затем вызывает метод, который показывает список контейнеров. Обратите внимание, чтоasync with
необходимо использовать только клиенту верхнего уровня, так как другие клиенты, созданные из него, используют тот же пул подключений.async def main(): sample = ContainerSamples() # TODO: Replace <storage-account-name> with your actual storage account name account_url = "https://<storage-account-name>.blob.core.windows.net" credential = DefaultAzureCredential() async with BlobServiceClient(account_url, credential=credential) as blob_service_client: await sample.list_containers(blob_service_client) if __name__ == '__main__': asyncio.run(main())
Добавьте код для перечисления контейнеров. Код совпадает с синхронным примером, за исключением того, что метод объявлен с
async
ключевым словом иasync for
используется при вызовеlist_containers
метода.async def list_containers(self, blob_service_client: BlobServiceClient): async for container in blob_service_client.list_containers(include_metadata=True): print(container['name'], container['metadata'])
С помощью этой базовой настройки вы можете реализовать другие примеры в этой статье в качестве корутин с помощью синтаксиса async/await.
Ресурсы
Дополнительные сведения о перечислении контейнеров с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Python см. в следующих ресурсах.
Примеры кода
- Просмотр примеров синхронного или асинхронного кода из этой статьи (GitHub)
Операции REST API
Пакет SDK Azure для Python содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API с помощью знакомых парадигм Python. Методы клиентской библиотеки для перечисления контейнеров используют следующую операцию REST API:
- Список контейнеров (REST API)
Ресурсы клиентской библиотеки
См. также
Связанный контент
- Эта статья является частью руководства разработчика хранилища BLOB-объектов для Python. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения Python.