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


Использование эмулятора Azurite для разработки локальной службы хранилища Azure

Эмулятор с открытым кодом Azurite предоставляет бесплатную локальную среду для тестирования облачных приложений. Если вы удовлетворены тем, как приложение работает локально, перейдите на использование учетной записи хранения Azure в облаке.

Azurite — это упрощенный эмулятор хранения, написанный на JavaScript, и запускается на Node.js, который имитирует службу хранилища Azure для локальной разработки. Она поддерживает службы хранилища BLOB-объектов, очередей и таблиц и обеспечивает кроссплатформенную поддержку в Windows, Linux и macOS. Сведения об установке и запуске Azurite см. в разделе "Установка и запуск эмулятора Azurite".

Azurite также позволяет разработчикам выполнять тесты в локальной среде хранения, имитируя поведение Azure, что является важным для интеграции и комплексного тестирования. Дополнительные сведения об использовании Azurite для автоматического тестирования см. в статье Об использовании Azurite для выполнения автоматических тестов.

Azurite заменяет эмулятор службы хранилища Azure и продолжает обновляться для поддержки последних версий API службы хранилища Azure.

Различия между Azurite и службой хранилища Azure

Существуют функциональные различия между локальным экземпляром Azurite и учетной записью хранения Azure в облаке.

Это важно

Azurite поддерживает только службы хранилища BLOB-объектов, очередей и таблиц. Она не поддерживает файлы Azure или Azure Data Lake Storage 2-го поколения, но обеспечивает кроссплатформенную поддержку в Windows, Linux и macOS.

URL-адрес конечной точки и подключения

Конечные точки службы для Azurite отличаются от конечных точек учетной записи хранения Azure. Локальный компьютер не выполняет разрешение доменных имен, из-за чего точки доступа Azurite должны быть локальными адресами.

При обращении к ресурсу в учетной записи Azure Storage, имя учетной записи является частью имени узла URI. Адрес ресурса является частью пути URI:

<http|https>://<account-name>.<service-name>.core.windows.net/<resource-path>

Следующий универсальный код ресурса (URI) — допустимый адрес для большого двоичного объекта в учетной записи хранения Azure:

https://myaccount.blob.core.windows.net/mycontainer/myblob.txt

URL-адрес в стиле IP

Так как локальный компьютер не разрешает доменные имена, имя учетной записи является частью пути URI вместо имени узла. Используйте следующий формат URI для ресурса в Azurite:

http://<local-machine-address>:<port>/<account-name>/<resource-path>

Для доступа к большому двоичному объекту в Azurite может использоваться следующий адрес:

http://127.0.0.1:10000/myaccount/mycontainer/myblob.txt

URL-адрес в стиле рабочей среды

При необходимости можно изменить файл узлов, чтобы получить доступ к учетной записи с URL-адресом в рабочем стиле .

Сначала добавьте одну или несколько строк в файл hosts. Рассмотрим пример.

127.0.0.1 account1.blob.localhost
127.0.0.1 account1.queue.localhost
127.0.0.1 account1.table.localhost

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

set AZURITE_ACCOUNTS="account1:key1:key2"

Можно добавить дополнительные учетные записи. См. раздел " Пользовательские учетные записи хранения и ключи " статьи "Подключение к Azurite ".

Запустите Azurite и используйте настраиваемую строку подключения для доступа к вашей учетной записи. В следующем примере строка подключения предполагает, что используются порты по умолчанию.

DefaultEndpointsProtocol=http;AccountName=account1;AccountKey=key1;BlobEndpoint=http://account1.blob.localhost:10000;QueueEndpoint=http://account1.queue.localhost:10001;TableEndpoint=http://account1.table.localhost:10002;

Не используйте обозреватель Azure Storage для доступа к учетной записи по умолчанию этим способом. Обозреватель хранилища всегда добавляет имя учетной записи в URL-путь, что приводит к сбоям.

По умолчанию при использовании Azurite с URL-адресом рабочего стиля имя учетной записи должно быть именем узла в полном доменном имени, например http://devstoreaccount1.blob.localhost:10000/container. Чтобы использовать URL-адрес в рабочем стиле с именем учетной записи в пути URL-адреса, например http://foo.bar.com:10000/devstoreaccount1/container, обязательно используйте --disableProductStyleUrl параметр при запуске Azurite.

Если вы используете host.docker.internal в качестве узла URI запроса (например, http://host.docker.internal:10000/devstoreaccount1/container), Azurite получает имя учетной записи из пути URI запроса. Это поведение верно независимо от того, используется --disableProductStyleUrl ли параметр при запуске Azurite.

Масштабирование и производительность

Azurite не поддерживает большое количество подключенных клиентов. Нет гарантии производительности. Azurite предназначен для разработки и тестирования.

Обработка ошибок

Azurite соответствует логике обработки ошибок службы хранилища Azure, но существуют различия. Например, сообщения об ошибках могут отличаться, тем временем коды состояния ошибок совпадают.

RA-GRS

Azurite поддерживает геоизбыточное репликацию с доступом для чтения (RA-GRS). Для ресурсов хранилища получите доступ к дополнительному расположению, добавив -secondary имя учетной записи. Например, следующий адрес может использоваться для доступа к большому двоичному объекту с помощью вторичного объекта только для чтения в Azurite:

http://127.0.0.1:10000/devstoreaccount1-secondary/mycontainer/myblob.txt

Поддержка таблиц

Поддержка таблиц в Azurite в настоящее время доступна в предварительной версии. Дополнительные сведения см. в проекте Azurite V3 Table.

Для поддержки устойчивых функций требуются таблицы.

Это важно

Поддержка Azurite для хранилища таблиц в настоящее время доступна в предварительной версии. Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.

Azurite — это открытый исходный код

Взносы и предложения для Azurite приветствуются. Перейдите на страницу проекта Azurite GitHub или задачи на GitHub, чтобы ознакомиться с вехами и рабочими элементами, которые мы отслеживаем для предстоящих функций и исправлений ошибок. Подробные рабочие элементы также отслеживаются в GitHub.

Структура рабочей области

В расположении рабочей области при инициализации Azurite могут быть созданы следующие файлы и папки.

  • __blobstorage__ — каталог, содержащий службу BLOB-объектов Azurite, сохраняемые двоичные данные
  • __queuestorage__ — Каталог, содержащий службу очередей Azurite, сохраняемые двоичные данные
  • __tablestorage__ — Каталог, содержащий службу таблиц Azurite, сохраняемые двоичные данные
  • __azurite_db_blob__.json — файл метаданных службы BLOB-объектов Azurite
  • __azurite_db_blob_extent__.json — файл метаданных экстентов службы BLOB-объектов Azurite
  • __azurite_db_queue__.json — файл метаданных службы очередей Azurite
  • __azurite_db_queue_extent__.json — файл метаданных экстентов службы очередей Azurite
  • __azurite_db_table__.json — файл метаданных службы таблиц Azurite
  • __azurite_db_table_extent__.json — файл метаданных экстентов службы таблиц Azurite

Чтобы очистить Azurite, удалите файлы и папки и перезапустите эмулятор.

Дальнейшие действия