命名 Amazon S3 物件 - Amazon Simple Storage Service

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

命名 Amazon S3 物件

物件索引鍵 (或索引鍵名稱) 可在 Amazon S3 儲存貯體中找出獨一的物件。當您建立物件時,您可以指定金鑰名稱。例如,在 Amazon S3 主控台上,當您選取某個儲存貯體時,即會顯示該儲存貯體中的物件清單。這些名稱即為物件金鑰

物件金鑰名稱是一系列 Unicode 字元,UTF-8 編碼長度最多為 1,024 個位元組,或 1,204 個拉丁字元。在某些地區設定中,單一字元可以等於 2 個位元組。命名物件時,請注意下列事項:

  • 物件金鑰名稱區分大小寫。

  • 物件金鑰名稱包含任何字首 (在 主控台中稱為資料夾)。例如, Development/Projects.xls是位於Development字首 (或資料夾) 內物件的完整Projects.xls物件金鑰名稱。字首、分隔符號 (/) 和物件名稱都包含在物件金鑰名稱的 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 主控台會透過資料夾前綴和分隔符號值作為金鑰建立零位元組物件,以實作資料夾物件的建立。這些資料夾物件不會出現在主控台中,否則,它們的行為就像任何其他物件,可以透過 REST API、 AWS CLI 和 AWS SDKs進行檢視和操作。

物件索引鍵命名準則

您可以在物件索引鍵名稱中使用任何 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 SDKs或 Amazon S3 REST API。

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

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

  • 包含相對路徑元素的物件索引鍵 (例如,../) 在剖析由left-to-right時,相對路徑區段的累積計數絕不會超過遇到的非相對路徑元素數目時,即為有效。此規則適用於使用 Amazon S3 主控台、Amazon S3 REST API AWS CLI和 AWS SDKs 提出的所有請求。

    例如:

    • videos/2014/../../video1.wmv 有效。

    • videos/../../video1.wmv 是無效的。

    • videos/../../2014/video1.wmv 是無效的。

可能需要特殊處理的字元

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

  • Ampersand (&)

  • 美元符號 ($)

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

  • 在符號 (@)

  • 等號 (=)

  • 分號 (;)

  • 正斜線 (/)

  • 結腸 (:)

  • 加號 (+)

  • 空間 – 在某些情況下,可能會遺失大量空格序列 (特別是多個空格)

  • 逗號 (,)

  • 問號 (?)

需要避免的字元

由於重要的特殊字元處理,我們建議不要在金鑰名稱中使用下列字元,這在所有應用程式中都不一致:

  • 反斜線 (\)

  • 左支架 ({)

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

  • Caret 或 circumflex (^)

  • 右拉條 (})

  • 百分比字元 (%)

  • Grave 重音或反音 (`)

  • 右括號 (])

  • 引號 (")

  • 大於符號 (>)

  • 左括號 ([)

  • Tilde (~)

  • 小於符號 (<)

  • 井字號 (#)

  • 垂直長條或管道 (|)

XML end-of-line處理上所指定,所有 XML 文字都會標準化,讓單一換行 (ASCII 代碼 13) 和換行緊接著換行 (ASCII 代碼 10),也稱為換行字元,以單一換行字元取代。為確保 XML 請求中物件索引鍵的正確剖析,在 XML 標籤中插入時,換行符號和其他特殊字元必須以其同等 XML 實體代碼取代

以下是此類特殊字元及其對等 XML 實體代碼的清單:

  • Apostrophe (') 必須取代為 &apos;

  • 引號 (") 必須取代為 &quot;

  • Ampersand (&) 必須取代為 &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>