本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
命名 Amazon S3 物件
物件索引鍵 (或索引鍵名稱) 可在 Amazon S3 儲存貯體中找出獨一的物件。當您建立物件時,您可以指定金鑰名稱。例如,在 Amazon S3 主控台
物件金鑰名稱包含一系列以 UTF-8 編碼的 Unicode 字元,長度上限為 1,024 位元組或大約 1,024 個拉丁字元。在某些地區設定中,單一字元可能需要 2 個位元組才能編碼。命名物件時,請注意下列事項:
注意
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 |
|
| 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是無效的。
僅限期間路徑區段
包含僅限期間路徑區段的物件索引鍵 (. 或 ..) 可能會在應用程式、SDKs或將它們解譯為相對路徑參考的工具處理時造成意外行為。
下列模式可能會導致問題:
-
folder/./file.txt- 包含目前的目錄參考 -
folder/../file.txt- 包含父目錄參考 -
./file.txt- 從目前的目錄參考開始 -
../file.txt- 從父目錄參考開始
下列模式正常運作:
-
folder/.hidden/file.txt- 期間是檔案名稱的一部分,而非獨立 -
folder/..backup/file.txt- 期間是檔案名稱的一部分,而非獨立
當應用程式使用僅限期間區段處理物件金鑰時,可能會發生下列行為影響:
-
路徑標準化 - 許多系統會自動解析
.和..參考,可能會變更有效路徑 (例如,folder/./file.txt變成folder/file.txt) -
存取問題 - 由於路徑解析差異,應用程式可能無法找到物件
-
不一致的行為 - 不同的工具和SDKs可能會以不同的方式處理這些模式
重要
為了避免這些問題,建議您避免物件金鑰名稱中的僅限期間路徑區段。將替代命名慣例用於組織用途。
可能需要特殊處理的字元
金鑰名稱中的下列字元可能需要額外的程式碼處理,而且很可能必須是 URL 編碼或參考為 HEX。其中一些字元是您的瀏覽器可能無法處理的不可列印字元,這也需要特殊處理:
-
Ampersand (
&) -
美元符號 (
$) -
ASCII 字元範圍:00 - 1F 十六進位 (0 - 31 十進位) 與 7F (127 十進位)
-
在符號 (
@) -
等於符號 (
=) -
分號 (
;) -
正斜線 (
/) -
Colon (
:) -
加號 (
+) -
空間 – 在某些情況下,可能會遺失大量空格序列 (特別是多個空格)
-
逗號 (
,) -
問號 (
?)
需要避免的字元
我們建議您不要在金鑰名稱中使用下列字元,因為重要的特殊字元處理方式並不一致於所有應用程式:
-
反斜線 (
\) -
左拉條 (
{) -
無法列印的 ASCII 字元 (128 - 255 十進位字元)
-
Caret 或 circumflex (
^) -
右拉條 (
}) -
百分比字元 (
%) -
重音或反引號 (
`) -
右括號 (
]) -
引號 (
") -
大於符號 (
>) -
左括號 (
[) -
Tilde (
~) -
小於符號 (
<) -
井字號 (
#) -
垂直長條或縱線 (
|)
XML 相關物件金鑰限制條件
如end-of-line處理上的 XML 標準
以下是這類特殊字元及其對等 XML 實體代碼的清單:
Apostrophe (
') 必須取代為'引號 (
") 必須取代為"Ampersand (
&) 必須取代為&小於符號 (
<) 必須取代為<大於符號 (
>) 必須取代為>運回 (
\r) 必須取代為 或
新行 (
\n) 必須取代為 或

下列範例說明了如何使用 XML 實體程式碼作為歸位字元的替代。此DeleteObjects請求會刪除具有 key 參數的物件 /some/prefix/objectwith\rcarriagereturn(其中 \r是歸位字元)。
<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Object> <Key>/some/prefix/objectwith carriagereturn</Key> </Object> </Delete>
物件金鑰排序順序
Amazon S3 會依物件金鑰的 UTF-8 編碼位元組值,以詞典方式排序物件金鑰,包括字首。
ASCII 字元依下列順序排序:
-
特殊字元 (例如
!、/) -
大寫字母 (A–Z)
-
小寫字母 (a–z)
非 ASCII 字元 (例如 é、中文) 編碼為多位元組 UTF-8 序列,通常在 ASCII 字元之後排序,因為其位元組值較高 (例如 0xC3 é、0xE4中)。
例如, apple/、éclair/、 Apple/等字首中 文/會排序為:
1. Apple/(以 開頭0x41)
2. apple/(以 開頭0x61)
3. éclair/(以 開頭0xC3 0xA9)
4. 中 文/(以 0xE4 0xB8 0xAD 開頭0xE6 0x96 0x87)