快速入門:適用於 Ruby 的 Azure Blob 儲存體用戶端程式庫
了解如何使用 Ruby 在 Microsoft Azure Blob 儲存體中建立、下載及列出區塊中的 Blob。
Prerequisites
若要存取 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 入口網站中,移至您的儲存體帳戶。
在儲存體帳戶概觀的 [設定] 區段中,選取 [存取金鑰] 以顯示您的帳戶存取金鑰和連接字串。
請記下您的儲存體帳戶名稱,您在驗證時將需用到。
尋找 [金鑰 1] 下方的 [金鑰] 值,然後選取 [複製] 以複製帳戶金鑰。
設定儲存體連接字串
提供儲存體帳戶名稱和帳戶金鑰,以建立應用程式的 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 儲存體總管 檢視 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 開發的額外資源:
- 檢視及下載 GitHub 上適用於 Azure 儲存體的 Ruby 用戶端程式庫原始程式碼。
- 探索使用 Ruby 用戶端程式庫所撰寫的 Azure 範例。
- 範例:開始以 Ruby 使用 Azure 儲存體 \(英文\)
後續步驟
在此快速入門中,您已了解如何使用 Ruby 在 Azure Blob 儲存體和本機磁碟之間傳送檔案。 若要深入了解 Blob 儲存體的用法,請繼續參閱儲存體帳戶概觀。
如需儲存體總管和 Blob 的詳細資訊,請參閱使用儲存體總管管理 Azure Blob 儲存體資源。