通过 .NET 使用 Blob 索引标记来管理和查找数据
本文介绍如何使用 Blob 索引标记通过适用于 .NET 的 Azure 存储客户端库来管理和查找数据。
先决条件
设置你的环境
如果没有现有项目,请查看本部分,其中介绍如何设置项目来使用适用于 .NET 的 Azure Blob 存储客户端库。 步骤包括安装包、添加 using
指令,以及创建已授权的客户端对象。 有关详细信息,请参阅 Azure Blob 存储和 .NET 入门。
安装包
从项目目录中,使用 dotnet add package
命令安装 Azure Blob 存储和 Azure 标识客户端库的包。 与 Azure 服务的无密码连接需要 Azure.Identity 包。
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
添加 using
指令
将这些 using
指令添加到代码文件的顶部:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
本文中的某些代码示例可能需要其他 using
指令。
创建客户端对象
若要将应用连接到 Blob 存储,请创建 BlobServiceClient 的实例。 以下示例演示如何使用 DefaultAzureCredential
创建客户端对象进行授权:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.chinacloudapi.cn"),
new DefaultAzureCredential());
return client;
}
可以在 .NET 应用中为依赖项注入注册服务客户端。
还可以为特定容器或 Blob 创建客户端对象。 要详细了解如何创建和管理客户端对象,请参阅 创建和管理与数据资源交互的客户端对象。
授权
授权机制必须具有使用 blob 索引标记所需的权限。 要使用 Microsoft Entra ID 进行授权(建议),需有 Azure RBAC 内置角色存储 Blob 数据所有者或更高级别的角色。 若要了解详细信息,请参阅获取 Blob 标记 (REST API)、设置 Blob 标记 (REST API) 或按标记查找 Blob (REST API) 的授权指南。
关于 blob 索引标记
Blob 索引标记使用键值标记属性对存储帐户中的数据进行分类。 这些标记会自动索引,并作为可搜索的多维索引公开,便于你轻松查找数据。 本文介绍了如何使用 blob 索引标记来设置、获取和查找数据。
启用了分层命名空间的存储帐户不支持 Blob 索引标记。 若要详细了解 Blob 索引标记功能以及已知问题和限制,请参阅通过 Blob 索引标记管理和查找 Azure Blob 数据。
设置标记
如果代码通过以下一种机制授权访问 Blob 数据,则可以设置索引标记:
- 使用 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write 操作分配 Azure RBAC 角色的安全主体。 存储 blob 数据所有者是包含此操作的内置角色。
- 具有访问 Blob 标记的权限(
t
权限)的共享访问签名 (SAS) - 帐户密钥
有关详细信息,请参阅设置 Blob 索引标记。
你可以使用以下任一方法设置标记:
以下示例执行此任务。
public static async Task SetTags(BlobClient blobClient)
{
Dictionary<string, string> tags =
new Dictionary<string, string>
{
{ "Sealed", "false" },
{ "Content", "image" },
{ "Date", "2020-04-20" }
};
await blobClient.SetTagsAsync(tags);
}
可以通过将空 [Dictionary] 传递到 SetTags 或 SetTagsAsync 方法来删除所有标记,如下例所示。
Dictionary<string, string> noTags = new Dictionary<string, string>();
await blobClient.SetTagsAsync(noTags);
相关文章 |
---|
通过 Blob 索引标记管理和查找 Azure Blob 数据 |
设置 Blob 标记 (REST API) |
获取标记
如果代码通过以下一种机制授权访问 Blob 数据,则可以获取索引标记:
- 使用 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read 操作分配 Azure RBAC 角色的安全主体。 存储 blob 数据所有者是包含此操作的内置角色。
- 具有访问 Blob 标记的权限(
t
权限)的共享访问签名 (SAS) - 帐户密钥
有关详细信息,请参阅获取和列出 Blob 索引标记。
你可以使用以下任一方法获取标记:
以下示例执行此任务。
public static async Task GetTags(BlobClient blobClient)
{
Response<GetBlobTagResult> tagsResponse = await blobClient.GetTagsAsync();
foreach (KeyValuePair<string, string> tag in tagsResponse.Value.Tags)
{
Console.WriteLine($"{tag.Key}={tag.Value}");
}
}
通过 Blob 索引标记筛选和查找数据
如果代码通过以下一种机制授权访问 Blob 数据,则可以使用索引标记来查找和筛选数据:
- 使用 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action 操作分配 Azure RBAC 角色的安全主体。 存储 blob 数据所有者是包含此操作的内置角色。
- 具有按照标记筛选 Blob 的权限(
f
权限)的共享访问签名 (SAS) - 帐户密钥
有关详细信息,请参阅使用 Blob 索引标记查找数据。
注意
不能使用索引标记来检索以前的版本。 以前版本的标记不会传递给 blob 索引引擎。 有关详细信息,请参阅条件和已知问题。
你可以使用以下任一方法查找数据:
以下示例查找标记日期属于特定范围内的所有 Blob。
public static async Task FindBlobsbyTags(BlobServiceClient serviceClient)
{
string query = @"""Date"" >= '2020-04-20' AND ""Date"" <= '2020-04-30'";
// Find Blobs given a tags query
Console.WriteLine("Find Blob by Tags query: " + query + Environment.NewLine);
List<TaggedBlobItem> blobs = new List<TaggedBlobItem>();
await foreach (TaggedBlobItem taggedBlobItem in serviceClient.FindBlobsByTagsAsync(query))
{
blobs.Add(taggedBlobItem);
}
foreach (var filteredBlob in blobs)
{
Console.WriteLine($"BlobIndex result: ContainerName= {filteredBlob.BlobContainerName}, " +
$"BlobName= {filteredBlob.BlobName}");
}
}
资源
若要详细了解如何使用索引标记通过适用于 .NET 的 Azure Blob 存储客户端库管理和查找数据,请参阅以下资源。
REST API 操作
Azure SDK for .NET 包含基于 Azure REST API 而生成的库,允许你通过熟悉的 .NET 范例与 REST API 操作进行交互。 用于管理和使用 Blob 索引标记的客户端库方法使用以下 REST API 操作:
- 获取 Blob 标记 (REST API)
- 设置 Blob 标记 (REST API)
- 按标记查找 Blob (REST API)
客户端库资源
请参阅
相关内容
- 本文是适用于 .NET 的 Blob 存储开发人员指南的一部分。 若要了解详细信息,请参阅生成 .NET 应用中的开发人员指南文章的完整列表。