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

在容器中按标记查找 Blob

Find Blobs by Tags in Container 操作查找其标记与容器中的搜索表达式匹配的所有 blob。

请求

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

GET 方法请求 URI HTTP 版本
https://myaccount.blob.core.windows.net/mycontainer?restype=container&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-kiB (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如果请求中不存在标头,则响应中不会显示此标头。

响应正文

响应正文的格式如下所示:

<?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 in Container 操作。

重要

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 in Container操作所需的 RBAC 操作,以及包含此操作的最低特权内置 Azure RBAC 角色:

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

注解

Find Blobs by Tags in Container REST API 版本 2021-04-10 及更高版本中支持该操作。

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

构造搜索表达式

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'

注意

URI 参数的值 where 必须正确进行 URI 编码, (包括空格和运算符) 。 为便于阅读,前面的示例省略了此内容。 @container 当容器是 URI 的一部分时,不支持 。

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

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

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

计费

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

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

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

另请参阅

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