Поделиться через


Начало работы с Хранилище BLOB-объектов Azure и Python

В этой статье показано, как подключиться к Хранилище BLOB-объектов Azure с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Python. После подключения код может работать в контейнерах, BLOB-объектах, функциях службы хранилища BLOB-объектов.

Примеры | исходного кода | библиотеки api reference | Package (PyPi) | Library дают отзыв

Необходимые компоненты

Настройка проекта

В этом разделе описывается подготовка проекта для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для Python.

В каталоге проекта установите пакеты для клиентских библиотек Хранилище BLOB-объектов Azure и удостоверений Azure с помощью pip install команды. Пакет azure-identity необходим для бессерверных подключений к службам Azure.

pip install azure-storage-blob azure-identity

Затем откройте файл кода и добавьте необходимые инструкции импорта. В этом примере мы добавим следующее в файл .py :

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

Сведения о клиентской библиотеке BLOB-объектов:

  • azure.storage.blob: содержит основные классы (клиентские объекты), которые можно использовать для работы со службой, контейнерами и большими двоичными объектами.

Асинхронное программирование

Клиентская библиотека Хранилище BLOB-объектов Azure для Python поддерживает синхронные и асинхронные API. Асинхронные API основаны на асинхронной библиотеке Python.

Выполните следующие действия, чтобы использовать асинхронные API в проекте:

  • Установите асинхронный транспорт, например aiohttp. Вы можете установить aiohttp вместе с azure-storage-blob помощью необязательной команды установки зависимостей. В этом примере мы используем следующую pip install команду:

    pip install azure-storage-blob[aio]
    
  • Откройте файл кода и добавьте необходимые инструкции импорта. В этом примере мы добавим следующее в файл .py :

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient, BlobClient, ContainerClient
    

    Инструкция import asyncio требуется только в том случае, если вы используете библиотеку в коде. Он добавлен здесь для ясности, так как примеры в статьях руководства разработчика используют библиотеку asyncio .

  • Создайте клиентский объект, используя async with для начала работы с ресурсами данных. Необходимо использовать async withтолько клиент верхнего уровня, так как другие клиенты, созданные из него, используют тот же пул подключений. В этом примере мы создадим BlobServiceClient объект с помощью async with, а затем создадим ContainerClient объект:

    async with BlobServiceClient(account_url, credential=credential) as blob_service_client:
        container_client = blob_service_client.get_container_client(container="sample-container")
    

    Дополнительные сведения см. в асинхронных примерах авторизации доступа и подключении к хранилищу BLOB-объектов.

Сведения о асинхронной клиентской библиотеке BLOB-объектов:

  • azure.storage.blob.aio: содержит основные классы, которые можно использовать для асинхронной работы со службой, контейнерами и большими двоичными объектами.

Авторизация доступа и подключения к хранилищу BLOB-объектов

Чтобы подключить приложение к хранилищу BLOB-объектов, создайте экземпляр класса BlobServiceClient . Этот объект является отправной точкой для взаимодействия с ресурсами данных на уровне учетной записи хранения. Его можно использовать для работы с учетной записью хранения и ее контейнерами. Вы также можете использовать клиент службы для создания клиентов контейнеров или клиентов БОЛЬШИХ двоичных объектов в зависимости от ресурса, с которым требуется работать.

Дополнительные сведения о создании и управлении клиентскими объектами, включая рекомендации, см. в статье "Создание клиентских объектов и управление ими", взаимодействующих с ресурсами данных.

Вы можете авторизовать BlobServiceClient объект с помощью маркера авторизации Microsoft Entra, ключа доступа к учетной записи или подписанного URL-адреса (SAS). Для оптимальной безопасности корпорация Майкрософт рекомендует использовать идентификатор Microsoft Entra с управляемыми удостоверениями для авторизации запросов к данным BLOB-объектов. Дополнительные сведения см. в разделе "Авторизация доступа к BLOB-объектам" с помощью идентификатора Microsoft Entra.

Чтобы авторизовать идентификатор Microsoft Entra, необходимо использовать субъект безопасности. Необходимый тип субъекта безопасности зависит от того, где выполняется приложение. Руководствуйтесь следующей таблицей.

Место выполнения приложения Субъект безопасности Руководство
Локальный компьютер (разработка и тестирование) Субъект-служба Сведения о регистрации приложения, настройке группы Microsoft Entra, назначении ролей и настройке переменных среды см. в статье "Авторизация доступа с помощью субъектов-служб разработчиков"
Локальный компьютер (разработка и тестирование) Удостоверение пользователя Сведения о настройке группы Microsoft Entra, назначении ролей и входе в Azure см. в статье "Авторизация доступа с помощью учетных данных разработчика"
Размещено в Azure Управляемое удостоверение Сведения о включении управляемого удостоверения и назначении ролей см. в статье "Авторизация доступа из приложений, размещенных в Azure" с помощью управляемого удостоверения.
Размещенные вне Azure (например, локальные приложения) Субъект-служба Сведения о регистрации приложения, назначении ролей и настройке переменных среды см. в статье "Авторизация доступа из локальных приложений с помощью субъекта-службы приложений"

Авторизация доступа с помощью DefaultAzureCredential

Простой и безопасный способ авторизации доступа и подключения к хранилищу BLOB-объектов — получить маркер OAuth, создав экземпляр DefaultAzureCredential . Затем можно использовать эти учетные данные для создания объекта BlobServiceClient .

В следующем примере создается BlobServiceClient объект с помощью DefaultAzureCredential:

def get_blob_service_client_token_credential(self):
    # 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)

    return blob_service_client

Если проект использует асинхронные API, создайте BlobServiceClient экземпляр с помощью async with:

# 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:
    # Work with data resources in the storage account

Сборка приложения

При создании приложений для работы с ресурсами данных в Хранилище BLOB-объектов Azure код в основном взаимодействует с тремя типами ресурсов: учетными записями хранения, контейнерами и большими двоичными объектами. Дополнительные сведения об этих типах ресурсов, о том, как они связаны друг с другом и как приложения взаимодействуют с ресурсами, см. в статье "Общие сведения о взаимодействии приложений с ресурсами хранилища BLOB-объектов".

В следующих руководствах показано, как работать с ресурсами данных и выполнять определенные действия с помощью клиентской библиотеки служба хранилища Azure для Python:

Руководство Description
Создание контейнера Создание контейнеров.
Удаление и восстановление контейнеров Удаление контейнеров. Если включено обратимое удаление включено, восстановление удаленных контейнеров.
Перечисление контейнеров Перечисление контейнеров в учетной записи и различные параметры, доступные для настройки списка.
Управление свойствами и метаданными (контейнерами) Получение и задание свойств и метаданных для контейнеров.
Создание аренды контейнеров и управление ими Создайте блокировку контейнера и управляйте ею.
Создание аренды BLOB-объектов и управление ими Создайте блокировку большого двоичного объекта и управляйте ими.
отправка больших двоичных объектов; Отправка BLOB-объектов с помощью строк, потоков, путей к файлам и других методов.
скачивание больших двоичных объектов; Скачивание BLOB-объектов с помощью строк, потоков и путей к файлам.
Копирование больших двоичных объектов Скопируйте большой двоичный объект из одного расположения в другое.
Перечисление больших двоичных объектов Перечисление BLOB-объектов различными способами.
Удаление и восстановление Удаление BLOB-объектов. Если включено обратимое удаление, восстановление удаленных BLOB-объектов.
Поиск BLOB-объектов с помощью тегов Задайте и извлеките теги и используйте теги для поиска больших двоичных объектов.
Управление свойствами и метаданными (BLOB-объектами) Получение и задание свойств и метаданных для BLOB-объектов.
Установка или изменение уровня доступа большого двоичного объекта Задайте или измените уровень доступа для блочного большого двоичного объекта.