Пошаговое руководство с примером проекта
Хранилище 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. Есть и другие способы, которые вы можете изучить в статье ниже, чтобы узнать о других способах.
Для доступа к этим контейнерам вам потребуется учетная запись хранения и токен 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, доступный на многих языках программирования. В будущих публикациях мы увидим тот же пример на других языках.