Azure 儲存體服務的版本控制

Microsoft Azure 儲存體服務支援多個版本。 若要對儲存體服務提出之要求,您必須指定要用於該作業的版本,除非要求是匿名的。

Azure 儲存體服務的目前版本為2020-10-02,建議您在可能的情況下使用該版本。 如需所有其他支援版本的清單,以及使用每個版本的詳細資訊,請參閱先前的 Azure 儲存體服務版本

版本2020-10-02

2020-10-02 服務版本包含下列功能:

在要求中指定服務版本

如何指定要用於要求的儲存體服務版本,與該要求的授權方式有關。 下列各節說明授權選項,以及如何為每個選項指定服務版本:

  • 使用 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 查詢參數可定義要用於處理使用 SAS 所提出之要求的 REST 通訊協定版本。

  • SignedVersion (sv)查詢參數會定義要用於授權的 SAS 版本。

SignedVersion當用戶端使用 SAS 提出要求時,查詢參數會用於授權。 、、、、、、、、、和等授權參數 si sr sp sig st se tn spk srk epk erk 都是使用指定的版本來解讀。

REST 通訊協定參數(例如 rsccrscdrsce 、和) rscl rsct 是使用 api-version 參數標頭中提供的版本來強制執行。 如果未指定 api-version 標頭,則會使用對 SignedVersion 提供的服務版本。

api-version參數不屬於授權標頭中的字串對符號,如建立服務 SAS中所述。

下表說明當 SignedVersion 參數設定為2014-02-14 版或更新版本時,服務用來進行授權和呼叫 REST 通訊協定的版本設定配置。

api-version 參數的值 用於授權的版本 用於通訊協定行為的版本
未指定 sv 參數中指定的版本 sv 參數中指定的版本
格式 XXXX-XX-XX 的任何有效儲存體服務版本 sv 參數中指定的版本 XXXX-XX-XX 版的有效儲存體服務版本

範例 1

下列範例要求會使用來呼叫 清單 blob sv=2015-04-05 ,而不使用 api-version 參數。

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

下列範例要求會使用和搭配參數來呼叫 清單 blob sv=2015-04-05 api-version

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 版或更新版本所執行的 設定容器 ACL 作業所公開,則會使用2009-09-19 版來處理要求。

針對 Blob 儲存體帳戶

如果對 Blob 儲存體帳戶的匿名要求未指定 x-ms-version 標頭,而且尚未使用 設定 Blob 服務屬性來設定服務的預設版本,則服務會使用最早的可能版本來處理要求。 若為 Blob 儲存體帳戶,最早的可能版本為2014-02-14。

另請參閱