使用 Blob 索引標籤搭配 JavaScript 管理和尋找資料
本文說明如何利用適用於 JavaScript 的 Azure 儲存體用戶端程式庫,來使用 Blob 索引標籤以管理和尋找資料。
必要條件
- 本文中的範例假設您已有專案設定好要使用適用於 JavaScript 的 Azure Blob 儲存體用戶端程式庫。 若要了解設定專案,包括套件安裝、匯入模組,以及建立授權的用戶端物件來處理資料資源,請參閱開始使用 Azure Blob 儲存體和 JavaScript。
- 授權機制必須具有使用 Blob 索引標籤的權限。 若要深入了解,請參閱下列 REST API 作業的授權指導:
關於 Blob 索引標籤
Blob 索引標記會使用索引鍵/值標記屬性,將儲存體帳戶中的資料分類。 這些標記會自動編製索引,並公開為可搜尋的多維度索引,以便輕鬆地尋找資料。 本文說明如何使用 Blob 索引標記來設定、取得及尋找資料。
已啟用階層命名空間的儲存體帳戶不支援 Blob 索引標籤。 若要深入了解 Blob 索引標籤功能以及已知問題和限制,請參閱使用 Blob 索引標籤來管理及尋找 Azure Blob 資料。
設定標記
如果您的程式碼透過以下其中一種機制獲得授權可以存取 Blob 資料,則您可以設定索引標籤:
- 獲指派 Azure RBAC 角色,並具有 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write 動作的安全性主體。 儲存體 Blob 資料擁有者是包含此動作的內建角色。
- 具有存取 Blob 標籤之權限 (
t
權限) 的共用存取簽章 (SAS) - 帳戶金鑰
如需詳細資訊,請參閱設定 Blob 索引標籤。
若要於 Blob 上傳時間設定標籤,請建立 BlobClient 然後使用下列方法:
以下範例會執行此工作。
// A blob can have up to 10 tags.
//
// const tags = {
// project: 'End of month billing summary',
// reportOwner: 'John Doe',
// reportPresented: 'April 2022'
// }
async function setTags(containerClient, blobName, tags) {
// Create blob client from container client
const blockBlobClient = await containerClient.getBlockBlobClient(blobName);
// Set tags
await blockBlobClient.setTags(tags);
console.log(`uploading blob ${blobName}`);
}
您可以將空的 JSON 物件傳遞至 setTags 方法,以刪除所有標籤。
相關文章 |
---|
使用 Blob 索引標籤來管理及尋找 Azure Blob 資料 |
設定 Blob 標籤 (REST API) |
取得標籤
如果您的程式碼透過以下其中一種機制獲得授權可以存取 Blob 資料,則您可以取得索引標籤:
- 獲指派 Azure RBAC 角色,並具有 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read 動作的安全性主體。 儲存體 Blob 資料擁有者是包含此動作的內建角色。
- 具有存取 Blob 標籤之權限 (
t
權限) 的共用存取簽章 (SAS) - 帳戶金鑰
如需詳細資訊,請參閱擷取和列出 Blob 索引標籤。
若要取得標籤,請建立 BlobClient 然後使用下列方法:
下列範例示範如何取得及逐一查看 Blob 的標籤。
async function getTags(containerClient, blobName) {
// Create blob client from container client
const blockBlobClient = await containerClient.getBlockBlobClient(blobName);
// Get tags
const result = await blockBlobClient.getTags();
for (const tag in result.tags) {
console.log(`TAG: ${tag}: ${result.tags[tag]}`);
}
}
使用 Blob 索引標記篩選和尋找資料
如果您的程式碼透過以下其中一種機制獲得授權可以存取 Blob 資料,則您可以使用索引標籤來尋找和篩選資料:
- 獲指派 Azure RBAC 角色,並具有 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action 動作的安全性主體。 儲存體 Blob 資料擁有者是包含此動作的內建角色。
- 具有依標籤篩選 Blob 之權限 (
f
權限) 的共用存取簽章 (SAS) - 帳戶金鑰
如需詳細資訊,請參閱使用 Blob 索引標籤來尋找資料。
注意
您無法使用索引標籤來擷取先前的版本。 先前版本的標記不會傳遞至 Blob 索引引擎。 如需詳細資訊,請參閱條件和已知問題。
在查詢資料時,會使用以字串形式傳送的 JSON 物件。 這些屬性不需要有額外的字串引號,但值就需要額外的字串引號。
下表顯示一些查詢字串:
標籤的查詢字串 (tagOdataQuery) | 描述 |
---|---|
id='1' AND project='billing' |
根據這兩個屬性來篩選所有容器的 Blob |
owner='PhillyProject' AND createdOn >= '2021-12' AND createdOn <= '2022-06' |
根據 owner 的嚴格屬性值和 createdOn 屬性的日期範圍,來篩選所有容器的 Blob。 |
@container = 'my-container' AND createdBy = 'Jill' |
依容器和特定屬性進行篩選。 在此查詢中,createdBy 是文字相符項目,不代表透過 Active Directory 的授權相符項目。 |
若要尋找 BlOb標籤,請建立 BlobClient 然後使用下列方法:
下列範例會尋找符合 tagOdataQuery 參數的所有 Blob。
async function findBlobsByQuery(blobServiceClient, tagOdataQuery) {
// page size
const maxPageSize = 10;
let i = 1;
let marker;
const listOptions = {
includeMetadata: true,
includeSnapshots: false,
includeTags: true,
includeVersions: false
};
let iterator = blobServiceClient.findBlobsByTags(tagOdataQuery, listOptions).byPage({ maxPageSize });
let response = (await iterator.next()).value;
// Prints blob names
if (response.blobs) {
for (const blob of response.blobs) {
console.log(`Blob ${i++}: ${blob.name} - ${JSON.stringify(blob.tags)}`);
}
}
// Gets next marker
marker = response.continuationToken;
// no more blobs
if (!marker) return;
// Passing next marker as continuationToken
iterator = blobServiceClient
.findBlobsByTags(tagOdataQuery, listOptions)
.byPage({ continuationToken: marker, maxPageSize });
response = (await iterator.next()).value;
// Prints blob names
if (response.blobs) {
for (const blob of response.blobs) {
console.log(`Blob ${i++}: ${blob.name} - ${JSON.stringify(blob.tags)}`);
}
}
}
此函式的範例輸出會根據上述函式中的 console.log 程式碼,顯示相符的 Blob 及其標籤:
回應 |
---|
Blob 1: set-tags-1650565920363-query-by-tag-blob-a-1.txt - {"createdOn":"2022-01","owner":"PhillyProject","project":"set-tags-1650565920363"} |
資源
若要深入了解如何利用適用於 JavaScript 的 Azure Blob 儲存體用戶端程式庫來使用索引標籤管理及尋找資料,請參閱下列資源。
REST API 操作
適用於 JavaScript 的 Azure SDK 包含建置在 Azure REST API 之上的程式庫,可讓您透過熟悉的 JavaScript 範例與 REST API 作業進行互動。 用來管理和使用 Blob 索引標籤的用戶端程式庫方法會使用下列 REST API 作業:
- 取得 Blob 標籤 (REST API)
- 設定 Blob 標籤 (REST API)
- 依標籤來尋找 Blob (REST API)
程式碼範例
用戶端程式庫資源
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應