建立物件索引鍵名稱 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立物件索引鍵名稱

物件索引鍵 (或索引鍵名稱) 可在 Amazon S3 儲存貯體中找出獨一的物件。物件中繼資料是一組名稱/值對。如需物件中繼資料的詳細資訊,請參閱「使用物件中繼資料」。

建立物件時,您可以指定能在儲存貯體中找出獨一物件的金鑰名稱。例如,在 Amazon S3 主控台上,當您反白某個儲存貯體時,即會顯示該儲存貯體中的物件清單。這些名稱即為物件金鑰。物件金鑰名稱是 Unicode 字元的序列,其 UTF-8 編碼長度最多為 1,024 個位元組。物件金鑰名稱區分大小寫。

注意

virtual-hosted-style 請求不支援值為「soap」的物件索引鍵名稱。對於使用「soap」的物件金鑰名稱值,必須改用路徑樣式 URL

Amazon S3 資料模型是單層式結構:您建立儲存貯體,儲存貯體存放物件。子儲存貯體或子資料夾沒有階層。但您可以仿照 Amazon S3 主控台的做法,使用金鑰名稱字首以及分隔符號來推斷邏輯階層。Amazon S3 主控台支援資料夾的概念。如需如何從 Amazon S3 主控台編輯中繼資料的詳細資訊,請參閱「在 Amazon S3 主控台中編輯物件中繼資料」。

假設您的儲存貯體 (admin-created) 具有四個物件,其物件金鑰如下:

Development/Projects.xls

Finance/statement1.pdf

Private/taxdocument.pdf

s3-dg.pdf

主控台會使用索引鍵名稱字首 (Development/Finance/Private/) 以及分隔符號 ('/'),來呈現資料夾結構。s3-dg.pdf 金鑰沒有字首,因此會直接在儲存貯體的根層級中顯示其物件。如果開啟 Development/ 資料夾,會看到其中內含 Projects.xlsx 物件。

  • Amazon S3 支援儲存貯體與物件,且沒有任何階層。但是,透過在物件金鑰名稱中使用首碼和分隔符號,Amazon S3 主控台和 AWS SDK 可以推斷階層並引入資料夾的概念。

  • Amazon S3 主控台會透過資料夾前綴和分隔符號值作為金鑰建立零位元組物件,以實作資料夾物件的建立。這些資料夾物件不會出現在主控台中,否則,它們的行為與任何其他對象一樣,可以通過 REST API, AWS CLI 和 AWS SDK 進行查看和操作。

物件索引鍵命名準則

您可以在物件索引鍵名稱中使用任何 UTF-8 字元。但是,在索引鍵名稱中使用特定字元可能對某些應用程式和通訊協定造成問題。下列準則可協助您提高與 DNS、網頁適用字元、XML 剖析器及其他 API 的合規。

安全字元

下列字元集通常可安心用於金鑰名稱中。

Alphanumeric characters
  • 0-9

  • a-z

  • A-Z

Special characters
  • 驚嘆號 (!)

  • 連字號 (-)

  • 底線 (_)

  • 句號 (.)

  • 星號 (*)

  • 單引號 (')

  • 左括號 (()

  • 右括號 ())

有效的物件金鑰名稱範例如下:

  • 4my-organization

  • my.great_photos-2014/jan/myvacation.jpg

  • videos/2014/birthday/video1.wmv

注意

使用 Amazon S3 主控台下載的金鑰名稱以句點「.」結尾的物件,該句點「.」會從下載物件的金鑰名稱中移除。若要下載保留在下載物件中的金鑰名稱以句點「.」結尾的物件,您必須使用 AWS Command Line Interface (AWS CLI)、 AWS SDK 或 REST API。

此外,也請注意以下字首限制:

  • 前置詞為「./」的物件必須使用 AWS Command Line Interface (AWS CLI)、 AWS SDK 或 REST API 上傳或下載。您無法使用 Amazon S3 主控台。

  • 字首為 "../" 的物件無法使用 AWS Command Line Interface (AWS CLI) 或 Amazon S3 主控台上傳。

可能需要特殊處理的字元

索引鍵名稱中的下列字元可能需要額外的程式碼處理,且有可能需要編碼為 URL 或是以十六進位參考。其中一部分是您的瀏覽器可能無法處理的不可列印字元,這些字元也需要特殊處理:

  • & 符號

  • 貨幣符號 ("$")

  • ASCII 字元範圍:00 - 1F 十六進位 (0 - 31 十進位) 與 7F (127 十進位)

  • @ 符號

  • 等號 ("=")

  • 分號 (";")

  • 正斜線 ("/")

  • 冒號 (":")

  • 加號 ("+")

  • 空格 - 在某些情況下,可能會遺失大量連續空格 (特別是多個空格)

  • 逗號 (",")

  • 問號 ("?")

需要避免的字元

請避免在金鑰名稱中使用下列字元,因為這些字元需要經過大量的特殊處理,才能在所有應用程式之間達到一致。

  • 反斜線 ("\")

  • 左大括弧 ("{")

  • 無法列印的 ASCII 字元 (128 - 255 十進位字元)

  • 插入號 ("^")

  • 右大括弧 ("}")

  • 百分比字元 ("%")

  • 重音符號/反引號 ("`")

  • 右方括號 ("]")

  • 問號

  • 「大於」符號 (">")

  • 左方括號 ("[")

  • 波狀符號 ("~")

  • 「小於」符號 ("<")

  • 井字號 ("#")

  • 垂直分隔號/縱線字元 ("|")

正如 XML 標準 end-of-line 處理時所指定的,所有 XML 文字都會歸一化,使得單一歸位字元 (ASCII 碼 13) 和回車後跟一個換行符 (ASCII 碼 10) 都會被單一換行字元取代。為了確保在 XML 請求中正確剖析物件索引鍵,歸位字元和其他特殊字元插入 XML 標籤時,必須用其對等的 XML 實體程式碼取代。以下是此類特殊字元及其對等實體程式碼的清單:

  • ' 作為 &apos;

  • ” 作為 &quot;

  • & 作為 &amp;

  • < 作為 &lt;

  • > 作為 &gt;

  • \r 作為 &#13;&#x0D;

  • \n 作為 &#10;&#x0A;

下列範例說明了如何使用 XML 實體程式碼作為歸位字元的替代。此 DeleteObjects 請求刪除具有 key 參數的物件:/some/prefix/objectwith\rcarriagereturn (其中 \r 是歸位字元)。

<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Object> <Key>/some/prefix/objectwith&#13;carriagereturn</Key> </Object> </Delete>