Краткое руководство. Клиентская библиотека Хранилища BLOB-объектов Azure для Ruby

Узнайте, как использовать Ruby для создания, загрузки и получения списка больших двоичных объектов в контейнере в Хранилище BLOB-объектов Microsoft Azure.

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

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

Доступ к хранилищу Azure осуществляется с помощью учетной записи хранения. Для работы с этим руководством создайте учетную запись хранения с помощью портала Azure, Azure PowerShell или Azure CLI. Инструкции по созданию учетной записи хранения см. в статье Создайте учетную запись хранения.

Прежде чем приступить к работе, убедитесь, что у вас установлены следующие дополнительные компоненты:

Загрузка примера приложения

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

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

git clone https://github.com/Azure-Samples/storage-blobs-ruby-quickstart.git

Перейдите в папку storage-blobs-ruby-quickstart и откройте файл example.rb в редакторе кода.

Копирование учетных данных с портала Azure

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

  1. Войдите в свою учетную запись хранения на портале Azure.

  2. На странице сведений об учетной записи хранения в разделе Настройка выберите Ключи доступа, чтобы отобразить ключи доступа к учетной записи и строку подключения.

  3. Запишите имя учетной записи хранения, которое понадобится вам при авторизации.

  4. Найдите значение ключа в разделе key1 и выберите Копировать, чтобы скопировать ключ учетной записи.

    Снимок экрана, на котором показано, как скопировать ключ учетной записи с портала Azure

Настройка строки подключения хранилища

Укажите имя и ключ учетной записи хранения, чтобы создать экземпляр BlobService для приложения.

Следующий код в файле example.rb создает новый объект BlobService. Замените строки accountname и accountkey фактическими значениями имени и ключа учетной записи.

# Create a BlobService object
account_name = "accountname"
account_key = "accountkey"

blob_client = Azure::Storage::Blob::BlobService.create(
    storage_account_name: account_name,
    storage_access_key: account_key
)

Запуск примера

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

Запустите образец. Ниже приведен пример результата запуска приложения.

C:\azure-samples\storage-blobs-ruby-quickstart> ruby example.rb

Creating a container: quickstartblobs18cd9ec0-f4ac-4688-a979-75c31a70503e

Creating blob: QuickStart_6f8f29a8-879a-41fb-9db2-0b8595180728.txt

List blobs in the container following continuation token
        Blob name: QuickStart_6f8f29a8-879a-41fb-9db2-0b8595180728.txt

Downloading blob to C:/Users/azureuser/Documents/QuickStart_6f8f29a8-879a-41fb-9db2-0b8595180728.txt

Paused, press the Enter key to delete resources created by the sample and exit the application

Теперь нажмите клавишу ВВОД, чтобы пример программы удалил контейнер хранилища и локальный файл. Прежде чем продолжить, проверьте наличие загруженного файла в папке Документы.

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

После проверки файлов нажмите клавишу ВВОД, чтобы завершить работу с демонстрационной версией и удалить тестовые файлы. Откройте файл example.rb, чтобы просмотреть код.

Разбор примера кода

Разберем пример кода, чтобы понять, как он работает.

Получение ссылок на объекты хранилища

Сначала необходимо создать экземпляры объектов, используемых для доступа к Хранилищу BLOB-объектов и управлению им. Эти объекты компилируются друг с другом. Каждый используется следующим в списке.

  • Создайте экземпляр объекта BlobService службы хранилища Azure, чтобы настроить учетные данные для подключения.
  • Создайте объект Container, представляющий контейнер, к которому осуществляется доступ. Контейнеры используются для организации BLOB-объектов аналогично папкам для упорядочения файлов на компьютере.

Получив объект контейнера, можно создать BLOB-объект Block, указывающий на конкретный BLOB-объект, который вас интересует. Используйте объект Block для создания, загрузки и копирования больших двоичных объектов.

Важно!

Имена контейнеров должны состоять из знаков нижнего регистра. Дополнительные сведения об именовании контейнеров и больших двоичных объектов см. в статье Naming and Referencing Containers, Blobs, and Metadata (Именование контейнеров, больших двоичных объектов и метаданных и ссылка на них).

Следующий пример кода

  • Создает новый контейнер
  • Устанавливает разрешения на контейнер, чтобы большие двоичные объекты были общедоступными. Контейнер называется quickstartblobs и имеет уникальный идентификатор.
# Create a container
container_name = "quickstartblobs" + SecureRandom.uuid
puts "\nCreating a container: " + container_name
container = blob_client.create_container(container_name)

# Set the permission so the blobs are public
blob_client.set_container_acl(container_name, "container")

Создание большого двоичного объекта в контейнере

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

В следующем примере создается большой двоичный объект с именем QuickStart_ , уникальным идентификатором и расширением файла TXT в контейнере, созданном ранее.

# Create a new block blob containing 'Hello, World!'
blob_name = "QuickStart_" + SecureRandom.uuid + ".txt"
blob_data = "Hello, World!"
puts "\nCreating blob: " + blob_name
blob_client.create_block_blob(container.name, blob_name, blob_data)

Блочные BLOB-объекты могут иметь размер 4,7 ТБ и представлять собой любые объекты, начиная от электронных таблиц до больших видеофайлов. Страничные BLOB-объекты в основном используются для файлов VHD, применяемых для поддержки виртуальных машин IaaS. Добавочные BLOB-объекты широко используются для ведения журнала, например если требуется выполнить запись в файл и затем добавлять дополнительные сведения.

Перечисление BLOB-объектов в контейнере

Список файлов в контейнере можно получить с помощью метода list_blobs. Следующий код извлекает список больших двоичных объектов, а затем отображает их имена.

# List the blobs in the container
puts "\nList blobs in the container following continuation token"
nextMarker = nil
loop do
    blobs = blob_client.list_blobs(container_name, { marker: nextMarker })
    blobs.each do |blob|
        puts "\tBlob name: #{blob.name}"
    end
    nextMarker = blobs.continuation_token
    break unless nextMarker && !nextMarker.empty?
end

Загрузка больших двоичных объектов

Загрузите большой двоичный объект на локальный диск с помощью метода get_blob. Следующий код загружает BLOB-объект, который создан в предыдущем разделе.

# Download the blob

# Set the path to the local folder for downloading
if(is_windows)
    local_path = File.expand_path("~/Documents")
else 
    local_path = File.expand_path("~/")
end

# Create the full path to the downloaded file
full_path_to_file = File.join(local_path, blob_name)

puts "\nDownloading blob to " + full_path_to_file
blob, content = blob_client.get_blob(container_name, blob_name)
File.open(full_path_to_file,"wb") {|f| f.write(content)}

Очистка ресурсов

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

# Clean up resources, including the container and the downloaded file
blob_client.delete_container(container_name)
File.delete(full_path_to_file)

Ресурсы для разработки приложений Ruby с большими двоичными объектами

См. следующие дополнительные ресурсы по разработке с использованием Ruby:

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

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

Дополнительные сведения об обозревателе объектов и BLOB-объектах см. в статье Управление ресурсами хранилища BLOB-объектов Azure с помощью Обозревателя службы хранилищ.