一般用途儲存貯體命名規則
當您建立一般用途儲存貯體時,請務必考量儲存貯體名稱的長度、有效字元、格式和唯一性。下列各節提供一般用途儲存貯體命名的相關資訊,包括命名規則、最佳實務,並示範如何建立在名稱中包含全域唯一識別碼 (GUID) 的一般用途儲存貯體。
如需物件金鑰名稱的相關資訊,請參閱建立物件金鑰名稱。
若要建立一般用途儲存貯體,請參閱 建立一般用途儲存貯體。
一般用途儲存貯體命名規則
以下是一般用途儲存貯體適用的命名規則:
-
儲存貯體名稱長度必須介於 3 (最小值) 到 63 (最大值) 個字元之間。
-
儲存貯體名稱只能由小寫字母、數字、句號 (
.) 和連字號 (-) 組成。 -
儲存貯體名稱的開頭和結尾必須為字母或數字。
-
儲存貯體名稱不能包含兩個連續句點。
-
儲存貯體名稱不得格式化為 IP 位址 (例如,
192.168.5.4)。 -
儲存貯體名稱必須以字首
xn--開頭。 -
儲存貯體名稱必須以字首
sthree-開頭。 -
儲存貯體名稱必須以字首
amzn-s3-demo-開頭。 -
儲存貯體名稱不得以尾碼
-s3alias結尾。存取點別名名稱會保留此尾碼。如需更多詳細資訊,請參閱 存取點別名。 -
儲存貯體名稱不得以尾碼
--ol-s3結尾。Object Lambda 存取點別名名稱會保留此尾碼。如需更多詳細資訊,請參閱 如何針對您的 S3 儲存貯體 Object Lambda 存取點使用儲存貯體樣式別名。 -
儲存貯體名稱不得以尾碼
.mrap結尾。多區域存取點名稱會保留此字尾。如需更多詳細資訊,請參閱 命名 Amazon S3 多區域存取點的規則。 -
儲存貯體名稱不得以尾碼
--x-s3結尾。目錄儲存貯體會保留此字尾。如需更多詳細資訊,請參閱 目錄儲存貯體命名規則。 -
儲存貯體名稱不得以尾碼
--table-s3結尾。S3 Tables 儲存貯體會保留此字尾。如需更多詳細資訊,請參閱 Amazon S3 資料表儲存貯體、資料表和命名空間命名規則。 -
與 Amazon S3 Transfer Acceleration 搭配使用的儲存貯體名稱中,不能有句號 (
.)。如需 Transfer Acceleration 的詳細資訊,請參閱 使用 Amazon S3 Transfer Acceleration 設定快速安全的檔案傳輸。
重要
-
儲存貯體名稱必須在分割區內的所有 AWS 區域 中的所有 AWS 帳戶 中,都是唯一的。分割區是一組區域。AWS 目前有三個分割區:
aws(商業區域)、aws-cn(中國區域) 和aws-us-gov(AWS GovCloud (US) 區域)。 -
儲存貯體名稱在相同分割區內不能由其他 AWS 帳戶 使用,除非儲存貯體遭到刪除。刪除儲存貯體後,請注意,相同分割區中的另一個 AWS 帳戶 可以為新儲存貯體命名相同儲存貯體名稱,因此可能會收到針對已刪除儲存貯體提出的請求。若要避免此情況,或您希望繼續使用相同的儲存貯體名稱,則不要刪除該儲存貯體。建議您清空儲存貯體並加以保留,必要時封鎖任何儲存貯體請求。對於不再處於使用中狀態的儲存貯體,我們建議清空所有物件的儲存貯體,以將成本降至最低,同時保留儲存貯體本身。
-
建立一般用途儲存貯體時,請選擇其名稱及建立所在的 AWS 區域。建立一般用途儲存貯體之後,即無法變更其名稱或區域。
-
請勿在儲存貯體名稱中包含敏感資訊。在指向儲存貯體中之物件的 URL 中,會顯示儲存貯體名稱。
注意
2018 年 3 月 1 日之前,在美國東部 (維吉尼亞北部) 區域中建立的儲存貯體名稱長度最多可為 255 個字元,且包含大寫字母和底線。自 2018 年 3 月 1 日開始,美國東部 (維吉尼亞北部) 區域中的新儲存貯體必須符合套用至所有其他區域的相同規則。
一般用途儲存貯體名稱範例
下列儲存貯體名稱顯示一般用途儲存貯體名稱中允許使用的字元範例:a-z、0-9 和連字號 (-)。amzn-s3-demo- 預留字首僅供此處說明之用。由於這是預留字首,您無法建立以 amzn-s3-demo- 開頭的儲存貯體名稱。
-
amzn-s3-demo-bucket1-a1b2c3d4-5678-90ab-cdef-example11111 -
amzn-s3-demo-bucket
下列範例儲存貯體名稱有效,但不建議用於靜態網站託管以外的用途,因為名稱中包含句號 (.):
-
example.com -
www.example.com -
my.example.s3.bucket
下列範例儲存貯體名稱無效:
-
amzn_s3_demo_bucket(包含底線) -
AmznS3DemoBucket(包含大寫字母) -
amzn-s3-demo-bucket-(以amzn-s3-demo-字首開頭,以連字號結尾) -
example..com(一列包含兩個句號) -
192.168.5.4(符合 IP 位址的格式)
最佳實務
命名一般用途儲存貯體時,請考量下列儲存貯體命名最佳實務。
選擇不太可能導致命名衝突的儲存貯體命名機制
如果您的應用程式自動建立儲存貯體,請選擇不會引起命名衝突的儲存貯體命名配置。如已採用某個儲存貯體名稱,請確保您的應用程式邏輯會選擇不同的儲存貯體名稱。
在儲存貯體名稱後面附加全域唯一識別碼 (GUID)
建議您建立無法預測的儲存貯體名稱。除非您已經建立了儲存貯體,否則不要因您認為有選擇的儲存貯體名稱可用而撰寫程式碼。有一個建立不可預測的儲存貯體名稱的方法,就是將全域唯一識別碼 (GUID) 附加到您的儲存貯體名稱 (例如 amzn-s3-demo-bucket-a1b2c3d4-5678-90ab-cdef-example11111)。如需更多詳細資訊,請參閱 建立在儲存貯體名稱中使用 GUID 的儲存貯體。
避免在儲存貯體名稱中使用句號 (.)
為了獲得最佳相容性,建議您避免在儲存貯體名稱中使用句號 (.),但僅用於靜態網站託管的儲存貯體除外。如果在儲存貯體的名稱中包含句號,除非您執行自己的憑證驗證,否則無法透過 HTTPS 使用虛擬託管樣式定址。用於儲存貯體虛擬託管的安全憑證不適用於名稱中含有句號的儲存貯體。
此限制不會影響用於靜態網站託管的儲存貯體,因為靜態網站託管只能透過 HTTP 使用。如需虛擬託管型定址的詳細資訊,請參閱 一般用途儲存貯體的虛擬託管。如需靜態網站託管的詳細資訊,請參閱 使用 Amazon S3 託管靜態網站。
選擇相關名稱
為儲存貯體命名時,建議選擇與您或您的企業相關的名稱。避免使用與其他人相關聯的名稱。例如,您的儲存貯體名稱應避免使用 AWS 或 Amazon。
請勿刪除儲存貯體,以便重複使用儲存貯體名稱
如果儲存貯體為空白,您可以將其刪除。刪除某個儲存貯體後,該名稱就可以重複使用。不過,無法保證您能夠立即重複使用名稱,甚至可能永遠無法重複使用。刪除儲存貯體後,可能需等一段時間才能重複使用該名稱。此外,另一個 AWS 帳戶 可能建立具有相同名稱的儲存貯體,然後您才能重複使用該名稱。
刪除一般用途儲存貯體後,請注意,相同分割區中的另一個 AWS 帳戶 可以為新儲存貯體命名相同儲存貯體名稱,因此可能會收到針對已刪除之一般用途儲存貯體提出的請求。如果您想要避免這種情況,或想要繼續使用相同的一般用途儲存貯體名稱,請勿刪除一般用途儲存貯體。建議您清空儲存貯體並加以保留,必要時封鎖任何儲存貯體請求。
建立在儲存貯體名稱中使用 GUID 的儲存貯體
下列範例示範如何建立在儲存貯體名稱結尾使用 GUID 的一般用途儲存貯體。
下列 AWS CLI 範例透過使用全域唯一識別碼 (GUID) 的範例儲存貯體名稱,在美國西部 (加利佛尼亞北部) 區域 (us-west-1) 建立一般用途儲存貯體。若要使用此範例命令,請以您自己的資訊取代 。user input placeholders
aws s3api create-bucket \ --bucketamzn-s3-demo-bucket1$(uuidgen | tr -d - | tr '[:upper:]' '[:lower:]' ) \ --regionus-west-1\ --create-bucket-configuration LocationConstraint=us-west-1
下列範例示範如何透過使用 適用於 Java 的 AWS SDK,在美國東部 (維吉尼亞北部) 區域 (us-east-1) 建立名稱結尾有 GUID 的儲存貯體。若要使用此範例,請以您自己的資訊取代 。如需其他 AWS SDK 的資訊,請參閱在 AWS 上建置的工具user input placeholders
import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.Bucket; import com.amazonaws.services.s3.model.CreateBucketRequest; import java.util.List; import java.util.UUID; public class CreateBucketWithUUID { public static void main(String[] args) { final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_1).build(); String bucketName = "amzn-s3-demo-bucket" + UUID.randomUUID().toString().replace("-", ""); CreateBucketRequest createRequest = new CreateBucketRequest(bucketName); System.out.println(bucketName); s3.createBucket(createRequest); } }