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

Azure 存储服务的版本控制

Microsoft Azure 存储服务支持多个版本。 若要针对存储服务发出请求,则除非请求是匿名的,否则必须指定要用于该操作的版本。

Azure 存储服务的当前版本为 2021-04-10,建议尽可能使用该版本。 有关所有其他受支持版本的列表以及有关使用每个版本的信息,请参阅以前的Azure 存储服务版本

版本 2021-06-08

2021-06-08 服务版本包含以下功能:

在请求中指定服务版本

如何指定要用于请求的存储服务版本与请求的授权方式相关。 以下各节介绍授权选项以及如何为每个选项指定服务版本:

  • Azure Active Directory (Azure AD) 使用 OAuth 2.0 令牌的请求。 若要使用 Azure AD 授权请求,请使用 x-ms-version 服务版本为 2017-11-09 或更高版本的请求传递标头。 有关详细信息,请参阅使用 Azure Active Directory 授权中的 OAuth 令牌调用存储操作

  • 使用共享密钥或共享密钥 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 服务的请求没有 x-ms-version 标头,但帐户所有者已使用 “设置 Blob 服务属性”设置默认版本,则指定的默认版本将用作请求的版本。

使用共享访问签名授权的请求

使用版本 2014-02-14 或更高版本生成的共享访问签名 (SAS) 支持两个版本控制选项:

  • api-version 查询参数可定义 REST 协议版本,使用该版本可处理通过 SAS 发出的请求。

  • 查询 SignedVersion (sv) 参数定义要用于授权的 SAS 版本。

SignedVersion 客户端使用 SAS 发出请求时,查询参数用于授权。 授权参数(例如sisr、、、stsespktnspsigsrk、和)epkerk均使用指定版本进行解释。

REST 协议参数(如rsccrscdrsce以及)rsctrscl使用参数标头中api-version提供的版本强制实施。 如果未指定 api-version 标头,则使用为 SignedVersion 提供的服务版本。

api-version 参数不是授权标头中字符串到登录的一部分,如 创建服务 SAS 中所述。

下表说明了服务用于授权的版本控制方案,并在参数设置为版本 2014-02-14 或更高版本时 SignedVersion 调用 REST 协议。

api-version 参数的值 用于授权的版本 用于协议行为的版本
未指定 sv 参数中指定的版本 sv 参数中指定的版本
任何有效的存储服务版本,格式为 XXXX-XX-XX sv 参数中指定的版本 有效的存储服务版本 XXXX-XX-XX

示例 1

以下示例请求使用和不使用api-version参数调用 List Blobsv=2015-04-05

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

以下示例请求使用参数api-version调用列出 Blobsv=2015-04-05

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 参数中)设为所基于的版本。

通过匿名访问的请求

根据通过匿名访问发出的存储帐户类型,通过匿名访问发出的请求会有所不同。

对于常规用途存储帐户

如果对常规用途存储帐户的匿名请求未指定 x-ms-version 标头,并且尚未使用 “设置 Blob 服务属性”设置服务的默认版本,则该服务将使用最早的版本来处理请求。 但是,如果使用版本 2009-09-19 或更高版本执行的 Set Container ACL 操作公开容器,则使用版本 2009-09-19 处理请求。

对于 Blob 存储帐户

如果对 Blob 存储帐户的匿名请求未指定 x-ms-version 标头,并且尚未使用 “设置 Blob 服务属性”设置服务的默认版本,则该服务将使用最早的版本来处理请求。 对于 Blob 存储帐户,最早的版本是 2014-02-14。

另请参阅