Начало работы с Хранилище BLOB-объектов Azure и Python
В этой статье показано, как подключиться к Хранилище BLOB-объектов Azure с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Python. После подключения код может работать в контейнерах, BLOB-объектах, функциях службы хранилища BLOB-объектов.
Примеры | исходного кода | библиотеки api reference | Package (PyPi) | Library дают отзыв
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Учетная запись хранения Azure — создайте такую учетную запись.
- Python 3.8+
Настройка проекта
В этом разделе описывается подготовка проекта для работы с клиентской библиотекой Хранилище 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-объектов. |
Установка или изменение уровня доступа большого двоичного объекта | Задайте или измените уровень доступа для блочного большого двоичного объекта. |
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по