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


Хранилище BLOB-объектов Azure примеры кода с использованием клиентских библиотек JavaScript версии 11.x

В этой статье приведены примеры кода, использующие версию 11.x клиентской библиотеки Хранилище BLOB-объектов Azure для JavaScript.

31 марта 2023 г. прекращена поддержка библиотек пакета SDK для Azure, которые не соответствуют текущим рекомендациям по пакету AZURE SDK. Новые библиотеки azure SDK регулярно обновляются, чтобы обеспечить согласованность взаимодействия и повысить уровень безопасности. Рекомендуется перейти на новые библиотеки azure SDK, чтобы воспользоваться преимуществами новых возможностей и критических обновлений для системы безопасности.

Хотя старые библиотеки по-прежнему можно использовать после 31 марта 2023 г., они больше не будут получать официальную поддержку и обновления от корпорации Майкрософт. Дополнительные сведения см. в объявлении о прекращении поддержки.

Создание высокодоступного приложения с помощью хранилища BLOB-объектов

Скачайте пример проекта и распакуйте файл. Вы также можете использовать команду git, чтобы загрузить копию приложения в среду разработки. Пример проекта содержит простое приложение Node.js.

git clone https://github.com/Azure-Samples/storage-node-v10-ha-ra-grs.git

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

Чтобы запустить этот пример, необходимо добавить учетные данные учетной записи хранения в файл .env.example, а затем переименовать его на .env.

AZURE_STORAGE_ACCOUNT_NAME=<replace with your storage account name>
AZURE_STORAGE_ACCOUNT_ACCESS_KEY=<replace with your storage account access key>

Чтобы найти эту информацию на портале Azure, перейдите к учетной записи хранения и выберите Ключи доступа в разделе Параметры.

Установите необходимые зависимости. Для этого откройте командную строку, перейдите к папке с примерами и введите npm install.

Запуск консольного приложения

Чтобы выполнить пример, откройте командную строку, перейдите к папке с примерами и введите node index.js.

В этом примере создается контейнер в учетной записи хранения больших двоичных объектов, HelloWorld.png передается в контейнер. После этого выполняется повторная проверка того, реплицировались ли контейнер и образ в дополнительный регион. После репликации вам будет предложено ввести D или Q (после ENTER), чтобы скачать или выйти. Результат должен выглядеть примерно следующим образом:

Created container successfully: newcontainer1550799840726
Uploaded blob: HelloWorld.png
Checking to see if container and blob have replicated to secondary region.
[0] Container has not replicated to secondary region yet: newcontainer1550799840726 : ContainerNotFound
[1] Container has not replicated to secondary region yet: newcontainer1550799840726 : ContainerNotFound
...
[31] Container has not replicated to secondary region yet: newcontainer1550799840726 : ContainerNotFound
[32] Container found, but blob has not replicated to secondary region yet.
...
[67] Container found, but blob has not replicated to secondary region yet.
[68] Blob has replicated to secondary region.
Ready for blob download. Enter (D) to download or (Q) to quit, followed by ENTER.
> D
Attempting to download blob...
Blob downloaded from primary endpoint.
> Q
Exiting...
Deleted container newcontainer1550799840726

Общие сведения о примере кода

При использовании пакета SDK для Node.js версии 10 обработчики обратных вызовов не нужны. Вместо этого в примере создается конвейер, настроенный с использованием параметров повторных попыток и вторичной конечной точки. Эта конфигурация позволяет приложению автоматически переключаться на дополнительный конвейер, если ему не удается получить доступ к данным через основной.

const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
const storageAccessKey = process.env.AZURE_STORAGE_ACCOUNT_ACCESS_KEY;
const sharedKeyCredential = new SharedKeyCredential(accountName, storageAccessKey);

const primaryAccountURL = `https://${accountName}.blob.core.windows.net`;
const secondaryAccountURL = `https://${accountName}-secondary.blob.core.windows.net`;

const pipeline = StorageURL.newPipeline(sharedKeyCredential, {
  retryOptions: {
    maxTries: 3,
    tryTimeoutInMs: 10000,
    retryDelayInMs: 500,
    maxRetryDelayInMs: 1000,
    secondaryHost: secondaryAccountURL
  }
});