Пошаговое руководство с примером проекта

Хранилище BLOB-объектов Azure - это масштабируемое и безопасное объектное хранилище для облачных рабочих нагрузок, архивов, озер данных, высокопроизводительных вычислений и машинного обучения. Есть четыре способа взаимодействия с этим хранилищем: портал Azure, интерфейс командной строки, REST API и пакет SDK для Azure. Использование портала Azure - это ручной способ загрузки объектов, таких как файлы, изображения и т. Д. С помощью Azure CLI вы можете автоматизировать эти задачи, написав и выполнив сценарии. Вы можете использовать REST API из любого приложения для взаимодействия с хранилищем BLOB-объектов.

Пакет SDK для Azure позволяет программно управлять службами Azure и взаимодействовать с ними. Пакет Azure SDK доступен на многих языках программирования, таких как Go, NodeJS, Javascript, python и т. Д. В этом посте мы увидим, как взаимодействовать с хранилищем BLOB-объектов с помощью Azure SDK в NodeJS.

  • Предварительные требования
  • Пример проекта
  • Настройка проекта
  • Список контейнеров
  • Создание контейнеров
  • Удаление контейнеров
  • Структура папки со списком
  • Список больших двоичных объектов
  • Создание больших двоичных объектов
  • Чтение больших двоичных объектов
  • Удаление больших двоичных объектов
  • Резюме
  • Заключение

Предварительные требования

Фактически, мы создаем NodeJS REST API, который обращается к корзине Azure и предоставляет некоторые операции API. Так что, если вы не знакомы с этим, я бы порекомендовал вам прочитать эту статью.

Как написать готовый к работе Node.js Rest API - версия Javascript

У вас должна быть учетная запись Microsoft Azure для загрузки файлов, изображений в Azure Bucket и проверки в приложении. Выполните следующие шаги, чтобы создать учетную запись Azure.

Учетная запись Microsoft Azure

У вас должна быть учетная запись Microsoft Azure. Вы можете получить бесплатную учетную запись на один год. После входа в систему вы должны увидеть экран ниже.

Вам необходимо создать подписку для своей учетной записи. Самая распространенная - подписка Pay As You Go. Найдите подписку в строке поиска и добавьте ее.

Вам нужна подписка, которая будет связана с вашим клиентом, чтобы вся стоимость была оплачена по этой подписке.

Установите Azure CLI и настройте

Получив учетную запись Azure, вы можете установить Azure CLI. Вы можете перейти к приведенной ниже документации и установить Azure CLI в зависимости от вашей операционной системы. Вы можете настроить Azure CLI с помощью своей подписки.

Перечислим подписку с помощью следующей команды

az account list --output=table

Пример проекта

Мы создаем NodeJS REST API, который обращается к хранилищу BLOB-объектов Azure и предоставляет некоторые операции API в демонстрационных целях. Позже вы можете использовать ту же логику для любых других целей. Вы клонируете приведенное ниже приложение, если хотите запустить его на своем локальном компьютере.

// clone the project
git clone https://github.com/bbachi/azure-sdk-nodejs-example.git
// Install dependencies
npm install
// start in development mode
npm run dev

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

Давайте создадим несколько сегментов и настроим приложение NodeJS для доступа к этим сегментам. Давайте войдем на портал Azure и создадим учетную запись хранения. Учетная запись хранения необходима для создания хранилища BLOB-объектов Azure. Давайте создадим его с помощью Azure CLI с помощью следующих команд. Для создания учетной записи хранения вам сначала понадобится группа ресурсов.

// create a resource group
az group create --location westus --name azure-sdk-demo
// create a storage account under that resource group
az storage account create --name azuresdkdemo \
         --resource-group azure-sdk-demo \
         --location westus
// list the storage account
az storage account list --resource-group azure-sdk-demo --output=table

Проверим и на портале.

Давайте создадим несколько контейнеров и корзин с иерархической структурой. Не путайте со структурой папок, это просто плоская структура. Я создал три контейнера, как показано ниже.

Чтобы получить доступ к этим контейнерам из приложения NodeJS, нам понадобится токен SAS. Есть и другие способы использования токена SAS для этого проекта. Перейдем в раздел подписи общего доступа в левой колонке и создадим токен. Убедитесь, что вы включили это для службы, контейнера и объектов.

Давайте скопируем токен SAS и строку подключения и разместим их где-нибудь на данный момент, прежде чем вы уйдете с этой страницы, иначе вы больше никогда их не увидите.

Это токены, которые мы не должны использовать непосредственно в коде, поскольку эти токены меняются в зависимости от среды. Мы используем библиотеку dotenv для доступа к ним из файла конфигурации в приложениях NodeJS. Есть и другие способы, которые вы можете изучить в статье ниже, чтобы узнать о других способах.

Чтение переменных среды в NodeJS REST API

Для доступа к этим контейнерам вам потребуется учетная запись хранения и токен SAS. Итак, нам нужно определить их в файле .env.

Вот простой server.js с платформой express и dotenv, импортированным в строке номер 3. Библиотека dotenv автоматически берет ключи из файла .env и делает их доступными. в объекте process.

Когда вы запустите указанный выше файл, вы получите следующий результат.

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

npm install @azure/storage-blob

Список контейнеров

Прежде чем мы создадим операцию API, нам необходимо иметь настраиваемый заголовок, потому что мы получаем исключение ошибки недопустимого заголовка, когда мы обращаемся к нему без такового. Нам нужно определить следующий код, чтобы при вызове API мы могли переопределить этот конкретный заголовок x-ms-version, чтобы мы могли передать текущую или последнюю версию.

Мы определили настраиваемый заголовок. Чтобы перечислить контейнеры, нам понадобится BlobServiceClient и настроить учетную запись и SAS, которые мы взяли с портала Azure, в строке номер 52. Давайте определим простую операцию GET и перечислим контейнеры с помощью следующего кода.

Давайте запустим сервер в режиме разработки с помощью этой команды npm run dev и нажмем этот URL в браузере. Вы можете увидеть список контейнеров, которые мы создали выше.

URL: http://localhost:3081/api/containers
Method: GET

Создание контейнеров

Вам нужно использовать BlobServiceClient.getContainerClient(), чтобы получить экземпляр клиента контейнера, а затем создать новый ресурс контейнера. Вот пост-вызов для создания контейнера, поскольку имя контейнера глобально уникально, мы добавляем метку времени.

Вы можете создать контейнер с помощью следующего вызова POST.

URL: http://localhost:3081/api/container
Method: POST
Request Body: {"containerName" : "samplecontainer"}

Вот демонстрация POST-вызова с Postman

Давайте проверим на портале контейнер, который мы только что создали с помощью вызова POST. Вот и создан новый контейнер.

Удаление контейнеров

Вам нужно использовать BlobServiceClient.getContainerClient(), чтобы получить экземпляр клиента контейнера, а затем удалить ресурс контейнера, если он существует. Вот вызов Delete для удаления контейнера, нам нужно передать его в URL-адресе в качестве параметра запроса.

Вы можете удалить контейнер с помощью следующего вызова DELETE.

URL: http://localhost:3081/api/container/<container name>
Method: DELETE

Вот демонстрация вызова DELETE с помощью Postman.

Давайте проверим на портале контейнер, который мы только что удалили с помощью вызова DELETE. Он удален из учетной записи хранения.

Структура папки со списком

Иногда нам нужно знать структуру папок, в которой хранятся большие двоичные объекты. Давайте посмотрим, как можно прочитать структуру папок из контейнера. Давайте загрузим большой двоичный объект с некоторой структурой папок в контейнер1.

У меня есть приведенный выше образец HTML-файла, и я загрузил его в две структуры каталогов, как показано ниже.

dir1/dir2/index.hmtl
dir3/index.html

Вот код для чтения каталогов. Это дает вам один уровень, вы можете найти его здесь.

Вы можете получить доступ к каталогам с помощью вызова ниже.

URL: http://localhost:3081/api/folders/<container name>
Method: GET

Вот демонстрация вызова Listing Directory с Postman.

Список больших двоичных объектов

Мы загрузили index.html в пару каталогов выше. Перечислим их со следующим кодом.

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

URL: http://localhost:3081/api/blobs/<container name>
Method: GET

Вот демонстрация вызова Listing Blobs с помощью Postman.

Создание больших двоичных объектов

Чтобы создать большой двоичный объект, нам нужно сначала определить имя большого двоичного объекта и загрузить в него контент. Нам нужно использовать два метода для загрузки содержимого в большой двоичный объект.

const blockBlobClient = containerClient.getBlockBlobClient(blobName);
const uploadBlobResponse = await blockBlobClient.upload(content, content.length);

Вы можете создать капли с помощью приведенного ниже вызова.

URL: http://localhost:3081/api/blob
Method: POST
Request Body: {"content" : "This is the content I am just uploading to Blob Storage", "containerName": "container1"}

Вот демонстрация вызова Создание больших двоичных объектов с помощью Postman.

Давайте проверим на портале, был ли создан большой двоичный объект.

Чтение больших двоичных объектов

Давайте прочитаем Blob, который мы только что создали выше, с помощью следующего кода.

Вы можете прочитать капли с помощью приведенного ниже вызова.

URL: http://localhost:3081/api/blob/container1/conatiner1blob
Method: GET

Вот демонстрация вызова Reading Blobs с Postman.

Удаление больших двоичных объектов

Наконец, давайте удалим большой двоичный объект, созданный с помощью следующего кода.

Вы можете удалить большой двоичный объект с помощью следующего вызова DELETE.

URL: http://localhost:3081/api/blob/<container name>/<blob name>
Method: DELETE

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

Мы можем проверить на портале, что большой двоичный объект удален.

Резюме

  • Хранилище BLOB-объектов Azure - это масштабируемое и безопасное объектное хранилище для облачных рабочих нагрузок, архивов, озер данных, высокопроизводительных вычислений и машинного обучения.
  • Есть четыре способа взаимодействия с этим хранилищем: портал Azure, интерфейс командной строки, REST API и пакет SDK для Azure.
  • Использование портала Azure - это ручной способ загрузки объектов, таких как файлы, изображения и т. Д. С помощью Azure CLI вы можете автоматизировать эти задачи, написав и выполнив сценарии.
  • Пакет SDK для Azure позволяет программно управлять службами Azure и взаимодействовать с ними. Пакет Azure SDK доступен на многих языках программирования, таких как Go, NodeJS, Javascript, python и т. Д.
  • Чтобы получить доступ к этим контейнерам из приложения NodeJS, нам понадобится токен SAS. Есть и другие способы использования токена SAS для этого проекта.
  • Нам необходимо установить эту зависимость npm install @azure/storage-blob для программного доступа к хранилищу BLOB-объектов Azure.

Заключение

Мы видели пример того, как программно получить доступ к хранилищу BLOB-объектов в API NodeJS. Это очень мощный SDK, доступный на многих языках программирования. В будущих публикациях мы увидим тот же пример на других языках.