クイックスタート: Ruby 用 Azure Blob Storage クライアント ライブラリ

Ruby を使用して、Microsoft Azure Blob Storage で BLOB の作成、BLOB のダウンロード、およびコンテナー内の BLOB の一覧表示を行う方法について学習します。

前提条件

Azure Storage にアクセスするには、Azure サブスクリプションが必要です。 まだサブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

Azure Storage へのアクセスはすべて、ストレージ アカウント経由で行われます。 このクイック スタートでは、Azure portal、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 Portal で資格情報をコピーする

サンプル アプリケーションは、ストレージ アカウントへのアクセスを承認する必要があります。 アプリケーションには、ストレージ アカウントの資格情報を接続文字列の形式で提供します。 ストレージ アカウントの資格情報を表示するには、次のように操作します。

  1. Azure portal で、ストレージ アカウントに移動します。

  2. ストレージ アカウントの概要の [設定] セクションで [アクセス キー] を選択し、アカウントのアクセス キーと接続文字列を表示します。

  3. ストレージ アカウントの名前をメモしておきます。認可を得るためには、この名前が必要となります。

  4. [key1][キー] 値を見つけ、[コピー] を選択してアカウント キーをコピーします。

    Azure portal でアカウント キーをコピーする方法を示すスクリーン ショット

ストレージ接続文字列の構成

ストレージ アカウント名とアカウント キーを指定して、お使いのアプリケーションの 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 Storage にコンテナーを作成し、コンテナーに新しい BLOB を作成します。さらに、コンテナー内の BLOB を一覧表示し、その 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

Enter キーを押して続行すると、サンプル プログラムによってストレージ コンテナーとローカル ファイルが削除されます。 続行する前に、"ドキュメント" フォルダーにファイルがダウンロードされていることを確認してください。

Azure Storage Explorer を使って、対象のストレージ アカウント内のファイルを表示することもできます。 Microsoft Azure Storage Explorer は無料のクロスプラットフォーム ツールであり、ストレージ アカウントの情報にアクセスできます。

ファイルを確認した後、Enter キーを押してテスト ファイルを削除し、デモを終了します。 example.rb ファイルを開いて、コードを確認します。

サンプル コードを理解する

次に、そのしくみを理解できるように、サンプル コードを見ていきましょう。

ストレージ オブジェクトへの参照を取得する

最初に行うことは、Blob Storage へのアクセスと管理に使用されるオブジェクトのインスタンスを作成することです。 これらのオブジェクトは、相互に関連した形で構築されます。 各オブジェクトは、一覧内の次のオブジェクトによって使用されます。

  • Azure Storage の BlobService オブジェクトのインスタンスを作成して、接続資格情報を設定します。
  • アクセスするコンテナーを表す Container オブジェクトを作成します。 コンテナーは、コンピューターでフォルダーを使ってファイルを整理するのと同じように、BLOB を整理するために使われます。

コンテナー オブジェクトを作成した後は、関心がある特定の BLOB を参照する Block BLOB オブジェクトを作成することができます。 この Block オブジェクトを使用して、BLOB を作成、ダウンロード、およびコピーします。

重要

コンテナーの名前は小文字にする必要があります。 コンテナーと BLOB の名前の詳細については、「Naming and Referencing Containers, Blobs, and Metadata」 (コンテナー、BLOB、およびメタデータの名前付けと参照) を参照してください。

次のサンプル コードでは、次の操作を行います。

  • 新しいコンテナーを作成する
  • BLOB がパブリックになるように、コンテナーにアクセス許可を設定する。 コンテナー名は quickstartblobs で、一意の ID が追加されます。
# 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 Storage は、ブロック BLOB、追加 BLOB、およびページ BLOB をサポートします。 BLOB を作成するには、create_block_blob メソッドを呼び出して、BLOB のデータを渡します。

次の例では、先ほど作成したコンテナー内に、QuickStart_ の後に一意の ID が続き、ファイル拡張子が .txt の BLOB を作成します。

# 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 TB であり、スプレッドシートから大きなビデオ ファイルまで何にでも使うことができます。 ページ BLOB は、主に、IaaS 仮想マシンのバックアップ用の VHD ファイルに使われます。 追加 BLOB は、通常、ファイルに書き込んでからさらに情報を追加し続ける場合などの、ログ記録に使用されます。

コンテナー内の BLOB を一覧表示する

list_blobs メソッドを使用してコンテナー内のファイルの一覧を取得します。 次のコードでは、BLOB の一覧を取得し、その名前を表示します。

# 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

BLOB をダウンロードする

get_blob メソッドを使用して、ローカル ディスクに 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)}

リソースをクリーンアップする

Blob が不要になった場合は、delete_blob を使用して削除します。 delete_container メソッドを使用して、コンテナー全体を削除します。 コンテナーを削除すると、コンテナーに格納されている BLOB もすべて削除されます。

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

BLOB を使用する Ruby アプリケーションを開発するためのリソース

Ruby 開発については、以下の追加リソースを参照してください。

次のステップ

このクイックスタートでは、Ruby を使って Azure Blob Storage とローカル ディスクとの間でファイルを転送する方法について学習しました。 Blob Storage の操作の詳細を学習するには、ストレージ アカウントの概要に進んでください。

Storage Explorer と BLOB について詳しくは、「Storage Explorer を使用して Azure Blob Storage リソースを管理する」を参照してください。