Azure 儲存體的版本設定

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

Azure 儲存體服務的目前版本是 2021-12-02,建議您盡可能使用它。 如需所有其他支援版本的清單,以及使用每個版本的相關資訊,請參閱 舊版 Azure 儲存體服務版本

2021-12-02 服務版本包含下列功能:

  • 使用[設定 Blob 層] 將 Blob 的存取層設定為 Cold 的功能。
  • 清單目錄和檔案現在會針對每個 RFC 2396 (百分比編碼,) 包含 XML (中無效字元的所有 FileNameDirectoryNamePrefixDirectoryPath 元素值,特別是 U+FFFE 或 U+FFFF) 。
  • 清單控制碼 現在會針對每個 RFC 2396 (百分比編碼) 包含 XML (中無效字元的所有 Path 元素值,特別是 U+FFFE 或 U+FFFF) 。

在要求中指定服務版本

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

  • 使用來自 Azure Active Directory 的 OAuth 2.0 權杖的要求 (Azure AD) :若要使用 Azure AD 授權要求,請使用 2017-11-09 或更高版本的服務版本,在要求上傳遞 x-ms-version 標頭。 如需詳細資訊,請參閱使用 Azure Active Directory 授權中的OAuth 權杖呼叫儲存體作業

  • 使用共用金鑰或共用金鑰 Lite 的要求:若要使用共用金鑰或共用金鑰 Lite 授權要求,請在要求上傳遞 x-ms-version 標頭。 在Azure 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 標頭,儲存體服務會使用指定的版本。 所有不使用共用存取簽章的 Azure 資料表儲存體和 Azure 佇列儲存體的要求都必須指定 x-ms-version 標頭。 除非已設定預設版本,否則所有不使用共用存取簽章的 Blob 儲存體要求都必須指定 x-ms-version 標頭,如下一個段落所述。

  • 如果對 Blob 儲存體的要求沒有 x-ms-version 標頭,但帳戶擁有者已使用 設定 Blob 服務屬性 作業來設定預設版本,則會使用指定的預設版本作為要求的版本。

使用共用存取簽章授權要求

使用 2014-02-14 版或更新版本所產生的共用存取簽章 (SAS) 支援兩個版本控制選項:

  • api-version查詢參數會定義 REST 通訊協定版本,以用於處理使用 SAS 提出的要求。

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

當用戶端使用 SAS 提出要求時,查詢 SignedVersion 參數會用於授權。 、、、、 setnsrkspstsigspk 、、 epkerksi 授權參數都會使用指定的版本來解譯。 sr

REST 通訊協定參數,例如 rsccrscerscd 、、 rsclrsct ,是使用參數標頭中 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

下列範例要求會呼叫使用 列出 Blob,而不 api-version 使用 sv=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 儲存體用戶端程式庫一律會將 參數中的 api-version REST 通訊協定版本 (,) 設定為其依據的版本。

透過匿名存取的要求

根據透過匿名存取所進行的要求類型,會以不同的方式處理這些要求。

針對一般用途的儲存體帳戶

如果對一般用途儲存體帳戶的匿名要求未指定 x-ms-version 標頭,且尚未使用 設定 Blob 服務屬性來設定服務的預設版本,則服務會使用最早的可能版本來處理要求。 不過,如果使用 2009-09-19 版或更新版本執行的 設定容器 ACL 作業公開容器,則會使用 2009-09-19 版來處理要求。

針對 Blob 儲存體帳戶

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

另請參閱