瞭解如何運用 Ruby 在 Microsoft Azure Blob 儲存體的容器中建立、下載及列出 Blob。
先決條件
若要存取 Azure 儲存體,您需要有 Azure 訂用帳戶。 如果您還沒有訂用帳戶,請先建立免費帳戶,再開始操作。
對 Azure 儲存體的所有存取都是透過儲存體帳戶進行。 在本快速入門中,使用 Azure 入口網站、Azure PowerShell 或 Azure CLI 建立儲存體帳戶。 如需建立儲存體帳戶的協助,請參閱建立儲存體帳戶。
請確定您已安裝下列其他必要條件:
使用 RubyGem 套件的 Azure 儲存體用戶端程式庫:
gem install azure-storage-blob
下載範例應用程式
本快速入門中使用的 範例應用程式 是基本的 Ruby 應用程式。
使用 Git 將應用程式的復本下載到您的開發環境。 這個指令會將存放庫複製到本機電腦:
git clone https://github.com/Azure-Samples/storage-blobs-ruby-quickstart.git
流覽至 storage-blobs-ruby-quickstart 資料夾,然後在程式碼編輯器中開啟 example.rb 檔案。
從 Azure 入口網站複製您的認證
範例應用程式需要授權存取記憶體帳戶。 以連接字串的形式將記憶體帳戶認證提供給應用程式。 若要檢視您的記憶體帳戶認證:
在 Azure 入口網站前往您的儲存體帳戶。
在儲存體帳戶概觀的 [設定] 區段中,選取 [存取金鑰] 以顯示您的帳戶存取金鑰和連接字串。
請記下您的儲存體帳戶名稱,因為您需要它來進行授權。
在 [key1] 底下尋找 [Key] 值,然後選取 [複製] 以複製帳戶密鑰。
設定儲存體連接字串
提供記憶體帳戶名稱和帳戶金鑰,為您的應用程式建立 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 記憶體中建立容器、在容器中建立新的 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 儲存體瀏覽器 來檢視儲存體帳戶中的檔案。 Azure 儲存體總管是免費的跨平台工具,可讓您存取儲存體帳戶資訊。
驗證檔案之後,請按 Enter 鍵來刪除測試檔案並結束示範。 開啟 example.rb 檔案以查看程式代碼。
了解範例程式碼
接下來,我們會逐步解說範例程序代碼,讓您瞭解其運作方式。
取得儲存物件的參照
第一件事是建立用來存取和管理 Blob 記憶體的物件實例。 這些物件建構於彼此之上。 每個項目都被清單中的下一個所使用。
- 建立 Azure 記憶體 BlobService 對象的實例,以設定連線認證。
- 建立 Container 物件,代表您要存取的容器。 容器可用來組織 Blob,就像使用電腦上的資料夾來組織檔案一樣。
擁有容器對象之後,您可以建立 區塊 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,可以是電子試算表到大型視訊檔案的任何檔案。 分頁 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
下載資料塊
使用 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 方法刪除整個容器。 刪除容器時,也會刪除儲存在容器中的所有資料包。
# 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 開發,請參閱下列其他資源:
- 在 GitHub 上檢視及下載 Azure 記憶體的 Ruby 用戶端連結庫原始程式碼 。
- 探索使用 Ruby 用戶端連結庫撰寫的 Azure 範例 。
- 範例:開始使用 Ruby 中的 Azure 記憶體
後續步驟
在本快速入門中,您已瞭解如何使用 Ruby 在 Azure Blob 記憶體與本機磁碟之間傳輸檔案。 若要深入瞭解如何使用 Blob 記憶體,請繼續進行記憶體帳戶概觀。
如需記憶體總管和 Blob 的詳細資訊,請參閱 使用記憶體總管管理 Azure Blob 記憶體資源。