你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

按标记查找 Blob

Find Blobs by Tags 操作查找存储帐户中标记与搜索表达式匹配的所有 blob。

请求

可以按如下所示构造 Find Blobs by Tags 请求。 建议使用 HTTPS。 将 myaccount 替换为存储帐户的名称。

GET 方法请求 URI HTTP 版本
https://myaccount.blob.core.windows.net?comp=blobs&where=<expression> HTTP/1.1

URI 参数

可以在请求 URI 上指定以下附加参数:

参数 说明
expression 必需。 筛选结果集,使其仅包含其标记与指定表达式匹配的 blob。

有关如何构造此表达式的详细信息,请参阅 备注
marker 可选。 一个字符串值,该值标识要通过下一个操作返回的结果集部分。 如果返回的结果集未完成,则操作在响应正文中返回标记值。 然后,标记值可以在后续调用中使用,以请求下一组项。

标记值对客户端不透明。
maxresults 可选。 指定要返回的最大 Blob 数。 如果请求未指定 maxresults 或指定大于 5,000 的值,则服务器最多返回 5,000 个项。 如果有其他结果要返回,则服务将在响应元素中 NextMarker 返回一个延续标记。 在某些情况下,服务返回的结果可能少于 maxresults 指定的结果。 该服务还可能返回继续标记。

maxresults 设置为小于等于零的值会导致出现错误响应代码 400(错误请求)。
timeout 可选。 以秒为单位。 有关详细信息,请参阅 为 Blob 存储操作设置超时

请求标头

下表描述了必需请求标头和可选请求标头:

请求标头 说明
Authorization 必需。 指定授权方案、帐户名称和签名。 有关详细信息,请参阅授权对 Azure 存储的请求
Datex-ms-date 必需。 指定请求的协调世界时 (UTC)。 有关详细信息,请参阅授权对 Azure 存储的请求
x-ms-version 对于所有已授权的请求是必需的,但对于匿名请求是可选的。 指定用于此请求的操作的版本。 有关详细信息,请参阅 Azure 存储服务的版本控制
x-ms-client-request-id 可选。 提供客户端生成的不透明值,其中包含 1-kibite (KiB) 配置日志记录时记录在日志中的字符限制。 强烈建议使用此标头将客户端活动与服务器接收的请求相关联。

请求正文

无。

响应

响应包括 HTTP 状态代码、响应标头和响应正文。

状态代码

此操作成功后返回状态代码 200(正常)。

有关状态代码的信息,请参阅 状态和错误代码

响应头

此操作的响应包括以下标头。 响应还可能包括其他标准 HTTP 标头。 所有标准标头都符合 HTTP/1.1 协议规范

响应标头 说明
Content-Type application/xml 指定为内容类型。
Content-Length 指定返回的 XML 文档的大小(以字节为单位)。
x-ms-request-id 唯一标识发出的请求。 可以使用它来排查请求问题。 有关详细信息,请参阅 API 操作疑难解答
x-ms-version 指示用于执行请求的Azure Blob 存储的版本。
Date 一个 UTC 日期/时间值,指示服务发送响应的时间。
x-ms-client-request-id 可用于对请求和相应的响应进行故障排除。 如果请求中存在此标头的值 x-ms-client-request-id 并且该值最多为 1,024 个可见 ASCII 字符,则此标头的值等于标头的值。 x-ms-client-request-id如果请求中不存在标头,则响应中不会显示此标头。

响应正文

在版本 2020-04-08 及更高版本中,blob 的匹配标记封装在 元素中 Tags 。 响应正文的格式如下所示:

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults ServiceEndpoint=http://myaccount.blob.core.windows.net/>  
  <Where>string-value</Where>  
  <Blobs>  
    <Blob>  
      <Name>blob-name</Name>  
      <ContainerName>container-name</ContainerName>  
      <Tags>
        <TagSet>
          <Tag>
            <Key>matching-tag-name1</Key>
            <Value>matching-tag-value1</Value>
          </Tag>
          <Tag>
            <Key>matching-tag-name2</Key>
            <Value>matching-tag-value2</Value>
          </Tag>
        </TagSet>
      </Tags> 
    </Blob>  
  </Blobs>  
  <NextMarker />  
</EnumerationResults>  

响应正文是格式正确的 UTF-8 XML 文档。

授权

在 Azure 存储中调用任何数据访问操作时,都需要授权。 可以授权操作, Find Blobs by Tags 如下所述。

重要

Microsoft 建议将 Microsoft Entra ID 与托管标识结合使用来授权对 Azure 存储的请求。 与共享密钥授权相比,Microsoft Entra ID提供更高的安全性和易用性。

Azure 存储支持使用 Microsoft Entra ID 来授权对 Blob 数据的请求。 使用 Microsoft Entra ID,可以使用 Azure 基于角色的访问控制 (Azure RBAC) 向安全主体授予权限。 安全主体可以是用户、组、应用程序服务主体或 Azure 托管标识。 安全主体由 Microsoft Entra ID 进行身份验证,以返回 OAuth 2.0 令牌。 然后可以使用令牌来授权对 Blob 服务发出请求。

若要详细了解如何使用 Microsoft Entra ID 授权,请参阅使用 Microsoft Entra ID 授权访问 blob

权限

下面列出了Microsoft Entra用户、组、托管标识或服务主体调用操作Find Blobs by Tags所需的 RBAC 操作,以及包含此操作的最低特权内置 Azure RBAC 角色:

若要详细了解如何使用 Azure RBAC 分配角色,请参阅 分配 Azure 角色以访问 Blob 数据

注解

Find Blobs by Tags REST API 版本 2019-12-12 及更高版本中支持该操作。

对于启用了分层命名空间的帐户,不支持该操作, Find Blobs by Tags 因为分层命名空间帐户不支持 Blob 标记。

使用的辅助索引 Find Blobs by Tags 最终是一致的。 通过 Set Blob Tags 汇报 blob 标记可能不会立即对Find Blobs by Tags操作可见。

构造搜索表达式

where URI 参数在存储帐户中查找其标记与表达式匹配的 Blob。 表达式的计算结果必须为 , true 才能在结果集中返回 Blob。

存储服务支持查询参数值的 ANSI SQL WHERE 子句语法子 where=<expression> 集。 存储服务支持以下运算符:

运算符 说明 示例
= Equal &where=Status = 'In Progress'
> 大于 &where=LastModified > '2018-06-18 20:51:26Z'
>= 大于或等于 &where=Priority >= '05'
< 小于 &where=Age < '032'
<= 小于或等于 &where=Reviewer <= 'Smith'
AND 逻辑与 &where=Name > 'C' AND Name < 'D'
&where=Age > '032' AND Age < '100'
@container 指定容器 &where=@container='mycontainer' AND Name = 'C'

注意

URI 参数的值 where 必须正确进行 URI 编码, (包括空格和运算符) 。 为便于阅读,前面的示例省略了此内容。

所有标记值都是字符串。 支持的二元关系运算符使用标记值的字典排序。 若要支持非字符串数据类型(包括数字和日期),必须使用适当的填充和可排序格式。 标记值必须用单引号引起来。

如果标记名称是常规 SQL 标识符,则它们可以存在而不进行转义。 如果它们包含任何特殊字符,则必须用双引号分隔它们, (例如 "TagName" = TagValue ,) 。 建议始终将标记名称括在双引号中。

存储服务将拒绝包含无效表达式且错误代码为 400 的任何请求 (错误的请求) 。

计费

定价请求可能源自使用 Blob 存储 API 的客户端,可以直接通过 Blob 存储 REST API 或 Azure 存储客户端库。 这些请求按事务产生费用。 事务类型会影响帐户的收费方式。 例如,读取事务累算到与写入事务不同的计费类别。 下表显示了基于存储帐户类型的请求的计费类别 Find Blobs by Tags

操作 存储帐户类型 计费类别
按标记查找 Blob 高级块 blob
标准常规用途 v2
标准常规用途 v1
列出和Create容器操作

若要了解指定计费类别的定价,请参阅Azure Blob 存储定价

另请参阅

使用 blob 索引标记管理和查找Azure Blob 存储上的数据
授权对 Azure 存储的请求
状态和错误代码
Blob 存储错误代码