練習 - 將應用程式連線到 Azure 儲存體帳戶
Azure 儲存體用戶端程式庫提供用來與 Azure 儲存體帳戶互動的物件模型。 它用來快速連線至 Azure 儲存體帳戶,並使用 Azure 儲存體服務 API。
Azure 儲存體用戶端程式庫物件模型
Azure 中的儲存體帳戶會組織為一或多個「容器」,以將實際的 Blob 物件 (檔案) 儲存於您的帳戶中。 這些容器類似檔案系統中的資料夾。 我們可以使用適用於 .NET 的 Azure 儲存體 Blob 用戶端程式庫,以在儲存體帳戶中建立容器來儲存相片。
若要在程式中使用適用於 .NET 的 Azure 儲存體 Blob 用戶端程式庫,您必須在程式頂端,針對 Azure.Storage.Blobs
命名空間新增 using
陳述式。
將下列命令新增至 Program.cs。
using Azure.Storage.Blobs;
若要從 .NET 應用程式建立及管理儲存體帳戶中的容器,您可以使用
BlobContainerClient
物件。 若要將BlobContainerClient
物件具現化,您必須提供儲存體帳戶的連接字串與容器名稱。 容器名稱的長度必須介於 3 到 63 個字元之間,而且只能包含小寫字母與虛線 (-) 字元。 針對此應用程式,我們會使用 photos 這個名稱。將下列程式碼新增至您應用程式的主要區段,以取得 Azure 儲存體連接字串,並建立
BlobContainerClient
物件。var connectionString = configuration.GetConnectionString("StorageAccount"); string containerName = "photos"; BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
注意
此時,用戶端程式庫尚未嘗試連線到 Azure 或驗證所使用的連接字串與存取金鑰。 其只會建構用於針對 Azure Blob 儲存體執行作業的輕量型用戶端物件。 只有在針對儲存體帳戶叫用作業時,才會進行網路呼叫。
在前幾行下方新增程式碼,以建立將儲存影像的 photos 容器。
container.CreateIfNotExists();
儲存您的檔案。
立即執行應用程式,讓其在儲存體帳戶中建立容器。 由於我們使用了
CreateIfNotExists
方法,因此,您可以多次執行程式,但將只會在第一次執行時建立容器。dotnet run
您可以執行下列 Azure CLI 命令來確認您已建立容器。 請記得以您的儲存體帳戶名稱取代
<name>
。az storage container list \ --account-name <name>
適用於 JavaScript 的 Azure 儲存體 Blob 用戶端程式庫包含許多用戶端物件,可用來與 Azure 儲存體 Blob 進行互動。 此階層的頂端是 BlobServiceClient
物件。 若要在 JavaScript 程式碼中使用這個物件:
在程式碼編輯器中開啟您的 index.js 檔案,然後在
require('dotenv').config();
陳述式之後立即新增以下陳述式:const { BlobServiceClient } = require("@azure/storage-blob");
現在,您必須在程式碼中,透過取得儲存體帳戶連接字串並傳遞給
BlobServiceClient
物件上的 Factory 方法fromConnectionString
,來建立BlobServiceClient
物件。 新增下列幾行程式碼:const storageAccountConnectionString = process.env.AZURE_STORAGE_CONNECTION_STRING; const blobServiceClient = BlobServiceClient.fromConnectionString(storageAccountConnectionString);
注意
除非叫用需要用戶端程式庫的作業,否則該程式庫將不會嘗試連線到 Azure。 用戶端物件是能夠存取 Azure Blob 儲存體的輕量型物件;此物件不會驗證所使用的連線或存取金鑰。
當您在程式中定義用戶端物件後,即可使用用戶端物件上的方法來執行實際工作。 進行網路呼叫的方法會刻意非同步。 程式庫會使用 Promise 傳回非同步結果。 基於該理由,您必須將 main 函式標示為非同步。 使用下列程式碼來取代 main 函式物件。 由兩個正斜線開頭的行是註解。
async function main() { // Function code here }
將變更儲存至 index.js 檔案。
現在,請新增一些程式碼以針對我們的儲存體帳戶執行作業。 儲存體帳戶會組織為一或多個容器,其作用類似儲存體帳戶中的資料夾。 您在儲存體帳戶中建立的 Blob 物件 (檔案) 會儲存於這其中一個容器內。 您必須在儲存體帳戶中建立容器來儲存相片。
容器名稱的長度必須介於 3 到 63 個字元之間,而且只能包含小寫字母與虛線 (-) 字元。 針對此應用程式,我們會使用 photos 這個名稱。
若要在儲存體帳戶中建立容器,您需要取得代表儲存體帳戶中容器的
ContainerClient
物件。 儘管容器尚未存在於儲存體帳戶中,我們可以使用ContainerClient
來建立容器,以及在建立後加以管理。若要取得
ContainerClient
物件,請呼叫BlobServiceClient
物件上的getContainerClient
方法,並提供容器的名稱作為參數。 接著,若要在 Azure 儲存體帳戶中建立容器,請使用 containerClient 物件上的createIfNotExists
方法。 使用這些陳述式取代// Function Code here
註解行:// Create a container (folder) if it does not exist const containerName = 'photos'; const containerClient = blobServiceClient.getContainerClient(containerName); const containerExists = await containerClient.exists() if ( !containerExists) { const createContainerResponse = await containerClient.createIfNotExists(); console.log(`Create container ${containerName} successfully`, createContainerResponse.succeeded); } else { console.log(`Container ${containerName} already exists`); }
儲存對 index.js 檔案進行的變更。
在 Cloud Shell 命令列中,輸入下列命令來建置和執行程式,以在儲存體帳戶中建立容器:
node index.js
提示
如果您收到關於使用
await
關鍵字的錯誤,請確定您已經按照先前指示中的最終步驟,將async
關鍵字新增至main
函式定義。第一次執行程式時,您應該會看到已成功建立容器的訊息,而狀態則為 true。 第二次與後續執行程式時,您將會類似的訊息但狀態為 false,因為容器已存在。
您可以執行下列 Azure CLI 命令來確認您已建立容器。 請記得以您的儲存體帳戶名稱取代
<name>
。az storage container list \ --account-name <name>
既然我們的程式已連線到 Azure 儲存體帳戶,而且我們已建立 photos 容器,讓我們的程式能夠將影像上傳到其中。