快速入門:適用於 Ruby 的 Azure Blob 儲存體用戶端程式庫

了解如何使用 Ruby 在 Microsoft Azure Blob 儲存體中建立、下載及列出區塊中的 Blob。

Prerequisites

若要存取 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. 尋找 [金鑰 1] 下方的 [金鑰] 值,然後選取 [複製] 以複製帳戶金鑰。

    顯示如何從 Azure 入口網站複製帳戶金鑰的螢幕擷取畫面

設定儲存體連接字串

提供儲存體帳戶名稱和帳戶金鑰,以建立應用程式的 BlobService 執行個體。

example.rb 檔案中的下列程式碼會將新的 BlobService 物件具現化。 使用您的帳戶名稱和金鑰取代 accountnameaccountkey

# 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 儲存體中建立容器、在容器中建立新的 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 儲存體總管 檢視 Blob 儲存體帳戶中的檔案。 Azure 儲存體總管是免費的跨平台工具,可讓您存取儲存體帳戶資訊。

確認檔案之後,按 Enter 鍵以刪除測試檔案並結束示範。 開啟 example.rb 檔案以查看程式碼。

了解範例程式碼

接下來,我們將透過範例程式碼來了解其運作方式。

取得儲存體物件的參考

首先建立用來存取和管理 Blob 儲存體的物件執行個體。 這些物件互為建置基礎。 各物件分別由清單中的下一個物件所使用。

  • 建立 Azure 儲存體 BlobService 物件的執行個體來設定連線認證。
  • 建立 Container 物件,代表您要存取的容器。 容器是用來組織 Blob,就像在電腦上用資料夾組織檔案一樣。

一旦有了容器物件,您就可以建立 Block Blob 物件,以指向您感興趣的特定 Blob。 使用 Block 物件來建立、下載和複製 Blob。

重要

容器名稱必須是小寫字母。 如需關於容器和 Blob 名稱的詳細資訊,請參閱命名和參考容器、Blob 及中繼資料

下列範例程式碼:

  • 建立新容器
  • 設定容器權限,讓 Blob 可供公開使用。 此容器名為 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 儲存體支援區塊 Blob、附加 Blob 和分頁 Blob。 若要建立 Blob,請呼叫傳入 Blob 資料的 create_block_blob 方法。

下列範例會在稍早建立的容器中,建立名為 QuickStart_ 的 Blob,其具有唯一識別碼和 .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 TB,而且可以是 Excel 試算表或大型影片檔案的任何一種。 分頁 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 儲存體和本機磁碟之間傳送檔案。 若要深入了解 Blob 儲存體的用法,請繼續參閱儲存體帳戶概觀。

如需儲存體總管和 Blob 的詳細資訊,請參閱使用儲存體總管管理 Azure Blob 儲存體資源