您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.
Azure 存储 服务的版本控制
07/06/2021
本文内容
Microsoft Azure 存储服务支持多个版本。 若要针对存储服务发出请求,则除非请求是匿名的,否则必须指定要用于该操作的版本。
Azure 存储服务的当前版本为 2020-10-02,建议尽可能使用该版本。 有关所有其他受支持版本的列表,以及有关使用每个版本的信息,请参阅上一Azure 存储服务版本。
版本 2020-10-02
2020-10-02 服务版本包括以下功能:
删除具有版本的根 Blob 的能力。 有关详细信息,请参阅删除 Blob。
File-Id列表目录和文件 的响应正文中无条件 返回该名称。
Directory-Id列表目录和文件 的响应正文 中返回此列。
在请求中指定服务版本
如何指定用于请求的存储服务版本与请求的授权方法相关。 以下部分介绍授权选项以及如何为每种选项指定服务版本:
使用 OAuth 2.0 令牌从 Azure Active Directory (Azure AD) 。 若要使用 Azure AD 授权请求,请传递服务版本为 x-ms-version 2017-11-09 或更高版本的请求上的 标头。 有关详细信息,请参阅使用 OAuth 令牌调用存储操作中的 Authorize with Azure Active Directory。
使用共享密钥或共享密钥 Lite 的请求。 若要使用共享密钥/共享密钥 Lite 授权请求,请对 x-ms-version 请求传递 标头。 对于 Blob 服务,可以通过调用"设置 Blob 服务属性"来指定所有 请求的默认版本。
使用共享访问签名请求 (SAS) 。 你可以根据共享访问签名指定两个版本化选项。 可选 api-version 标头指示用于执行 API 操作的服务版本。 必需 SignedVersion (sv) 参数指定用于授权使用 SAS 进行的请求的服务版本。 如果未指定 api-version 标头,则 SignedVersion (sv) 参数的值还指示用于执行 API 操作的版本。
使用匿名访问的请求。 如果对 Blob 服务进行匿名访问,则不传入任何版本;下面说明了用于该请求的版本的试探方法。
使用共享密钥Azure AD共享密钥 Lite 授权的请求
若要使用共享密钥Azure AD共享密钥 Lite 授权请求,请指定 x-ms-version 请求上的 标头。 必须以 YYYY-MM-DD 的格式来指定 x-ms-version 请求标头值。 例如:
Request Headers:
x-ms-version: 2020-04-08
以下规则指示如何评估这些请求以确定要用于处理请求的版本。
如果请求具有有效的 x-ms-version 标头,则存储服务使用指定的版本。 对于不使用共享访问签名的表和队列服务的所有请求,必须指定 x-ms-version 标头。 Blob 服务的所有请求如果未使用共享访问签名,则必须指定 x-ms-version 标头,除非已设置默认版本,如下所述。
如果对 Blob 服务的请求没有标头,但帐户所有者已使用"设置 Blob 服务属性"设置默认版本,则指定的默认版本将用作请求 x-ms-version 的版本。
使用共享访问签名授权的请求
使用 (版本 2014-02-14) 生成的 SAS 证书的共享访问签名支持两个版本控制选项:
api-version 查询参数可定义 REST 协议版本,使用该版本可处理通过 SAS 发出的请求。
SignedVersion (sv)查询参数定义用于授权的 SAS 版本。
SignedVersion当客户端使用 SAS 提出请求时,查询参数用于授权。 授权参数(如 si sr sp sig 、、、、 和 st se tn spk )都 srk epk erk 使用指定版本进行解释。
REST 协议参数(例如 rscc、rscd、rsce、rscl 和 rsct)使用 api-version 参数标头中提供的版本来实施。 如果未指定 api-version 标头,则使用为 SignedVersion 提供的服务版本。
api-version参数不是授权标头中字符串登录的一部分,如创建服务SAS 中所述。
下表说明了当 参数设置为版本 2014-02-14 或更高版本时,服务用于授权和调用 REST 协议的版本控制 SignedVersion 方案。
api-version 参数的值
用于授权的版本
用于协议行为的版本
未指定
sv 参数中指定的版本
sv 参数中指定的版本
任何有效的存储服务版本,格式为 XXXX-XX-XX
sv 参数中指定的版本
有效的存储服务版本 XXXX-XX-XX
示例 1
以下示例请求使用 和 ( 不带 参数)调用 List sv=2015-04-05 api-version Blob。
https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&sv=2015-04-05&si=readpolicy&sig=a39 %2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d
在这种情况下,服务使用版本 2015-04-05 对请求进行身份验证和授权,并且还会使用版本 2015-04-05 执行操作。
示例 2
以下示例请求使用 和 参数调用 列出 sv=2015-04-05 api-version Blob。
https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&sv=2015-04-05&si=readpolicy&sig=a39 %2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d&api-version=2012-02-12
在这里,服务使用版本 2015-04-05 授权请求,然后使用版本 2012-02-12 执行该操作。
备注
.NET 存储客户端库会始终将 REST 协议版本(在 api-version 参数中)设为所基于的版本。
通过匿名访问的请求
通过匿名访问进行的请求的处理方式不同,具体取决于针对其发送的存储帐户的类型。
对于常规用途存储帐户
如果对常规用途存储帐户的匿名请求未指定 标头,并且尚未使用设置 Blob 服务属性设置服务的默认版本,则服务将使用最早版本处理 x-ms-version 请求。 但是,如果使用版本 2009-09-19 或更高版本执行设置容器 ACL 操作公开容器,则使用版本 2009-09-19 处理请求。
对于 Blob 存储帐户
如果对 Blob 存储帐户的匿名请求未指定 标头,并且服务的默认版本尚未使用"设置 Blob 服务属性"进行设置,则服务将使用最早版本处理 x-ms-version 请求。 对于 Blob 存储帐户,最早可能的版本为 2014-02-14。
另请参阅