命名 Amazon S3 物件 - Amazon Simple Storage Service

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

命名 Amazon S3 物件

物件索引鍵 (或索引鍵名稱) 可在 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 SDKs 可以推斷階層並引入資料夾的概念。

  • Amazon S3 主控台會透過資料夾前綴和分隔符號值作為金鑰建立零位元組物件,以實作資料夾物件的建立。這些資料夾物件不會出現在主控台中,否則,它們的行為會像任何其他物件一樣,可以透過 RESTAPI、 AWS CLI 和 AWS SDKs 檢視和操作。

物件索引鍵命名準則

您可以在物件金鑰名稱中使用任何 UTF-8 字元。但是,在索引鍵名稱中使用特定字元可能對某些應用程式和通訊協定造成問題。下列準則可協助您最大限度地遵守 DNS、Web 安全字元、XML 剖析器和其他 APIs。

安全字元

下列字元集通常可安心用於索引鍵名稱中。

英數字元
  • 0-9

  • a-z

  • A-Z

特殊字元
  • 驚嘆號 (!)

  • 連字號 (-)

  • 底線 (_)

  • 句號 (.)

  • 星號 (*)

  • 單引號 (')

  • 左括號 (()

  • 右括號 ())

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

  • 4my-organization

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

  • videos/2014/birthday/video1.wmv

注意

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

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

  • 字首為 "./" 的物件必須使用 AWS Command Line Interface (AWS CLI)、 AWS SDKs 或 REST 上傳或下載API。您無法使用 Amazon S3 主控台。

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

可能需要特殊處理的字元

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

  • & 符號

  • 貨幣符號 ("$")

  • ASCII字元範圍 00–1F 十六進位 (0–31 小數) 和 7F (127 小數)

  • @ 符號

  • 等號 ("=")

  • 分號 (";")

  • 正斜線 ("/")

  • 冒號 (":")

  • 加號 ("+")

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

  • 逗號 (",")

  • 問號 ("?")

需要避免的字元

我們建議您不要在金鑰名稱中使用下列字元,因為具有重要的特殊字元處理能力,這在所有應用程式中都不一致。

  • 反斜線 ("\")

  • 左大括弧 ("{")

  • 不可列印的 ASCII 字元 (128–255 個小數字元)

  • 插入號 ("^")

  • 右大括弧 ("}")

  • 百分比字元 ("%")

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

  • 右方括號 ("]")

  • 問號

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

  • 左方括號 ("[")

  • 波狀符號 ("~")

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

  • 井字號 ("#")

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

XML 標準 on end-of-line 處理所指定,所有 XML 文字都會標準化,讓單一換行 (ASCII 程式碼 13) 和換行後緊接著換行 (ASCII 程式碼 10) 被單行換行字元取代。若要確保正確剖析 XML 請求中的物件索引鍵,在 XML 標籤中插入 Word 實體程式碼時,必須以其對等的 Word 實體程式碼取代歸位和其他特殊字元。 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>