一般用途儲存貯體命名規則 - Amazon Simple Storage Service

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

一般用途儲存貯體命名規則

建立一般用途儲存貯體時,您可以選擇其名稱和 AWS 區域 以建立儲存貯體。建立一般用途儲存貯體後,您無法變更其名稱或區域。下列各節提供一般用途儲存貯體命名的相關資訊,包括命名規則、最佳實務,以及使用包含全域唯一識別碼 (GUID) 的名稱建立一般用途儲存貯體的範例。

如需目錄儲存貯體命名規則,請參閱 目錄儲存貯體命名規則

有關物件金鑰名稱資訊,請參閱建立物件金鑰名稱

一般用途儲存貯體命名規則

以下是一般用途儲存貯體適用的命名規則:

  • 儲存貯體名稱長度必須介於 3 (最小值) 到 63 (最大值) 個字元之間。

  • 儲存貯體名稱只能由小寫字母、數字、句點 (.) 和連字號 (-) 組成。

  • 儲存貯體名稱的開頭和結尾必須為字母或數字。

  • 儲存貯體名稱不能包含兩個連續句點。

  • 儲存貯體名稱絕不能格式化為 IP 位址 (例如,192.168.5.4)。

  • 儲存貯體名稱必須以字首 xn-- 開頭。

  • 儲存貯體名稱必須以字首 sthree- 開頭。

  • 儲存貯體名稱必須以字首 sthree-configurator 開頭。

  • 儲存貯體名稱必須以字首 amzn-s3-demo- 開頭。

  • 儲存貯體名稱不得以尾碼 -s3alias 結尾。存取點別名名稱會保留此尾碼。如需詳細資訊,請參閱針對您的 S3 儲存貯體存取點使用儲存貯體樣式別名

  • 儲存貯體名稱不得以尾碼 --ol-s3 結尾。Object Lambda 存取點別名名稱會保留此尾碼。如需詳細資訊,請參閱如何針對您的 S3 儲存貯體 Object Lambda 存取點使用儲存貯體樣式別名

  • 儲存貯體名稱不得以尾碼 .mrap 結尾。此字尾會保留給多區域存取點名稱。如需詳細資訊,請參閱命名 Amazon S3 多區域存取點的規則

  • 儲存貯體名稱不得以尾碼 --x-s3 結尾。此字尾會保留給目錄儲存貯體。如需詳細資訊,請參閱目錄儲存貯體命名規則

  • 儲存貯體名稱在分割區內的所有 AWS 帳戶 AWS 區域 中都必須是唯一的。分割區是 Regions 的群組。 AWS 目前有三個分割區:aws(標準區域)、aws-cn(中國區域) 和 aws-us-gov()AWS GovCloud (US)。

  • 在刪除儲存貯體之前,另一個儲存貯體名稱無法在相同的分割區 AWS 帳戶 中使用。

  • 與 Amazon S3 Transfer Acceleration 搭配使用的儲存貯體名稱中不能有句點 (.)。如需 Transfer Acceleration 的詳細資訊,請參閱 使用 Amazon S3 Transfer Acceleration 設定快速安全的檔案傳輸

重要
  • 儲存貯體名稱在分割區 AWS 區域 內的所有 AWS 帳戶 中都必須是唯一的。分割區是區域的群組。 AWS 目前有三個分割區:aws(標準區域)、aws-cn(中國區域) 和 aws-us-gov (AWS GovCloud (US))。

  • 在刪除儲存貯體之前,另一個儲存貯體名稱無法在相同分割區 AWS 帳戶 中使用。刪除儲存貯體後,請注意相同分割區 AWS 帳戶 中的另一個 可以使用相同的儲存貯體名稱。

注意

2018 年 3 月 1 日之前,在美國東部 (維吉尼亞北部) 區域中建立的儲存貯體名稱長度最多可為 255 個字元,且包含大寫字母和底線。自 2018 年 3 月 1 日開始,美國東部 (維吉尼亞北部) 區域中的新儲存貯體必須符合套用至所有其他區域的相同規則。

一般用途儲存貯體名稱範例

下列範例儲存貯體名稱有效,並遵循建議的一般用途儲存貯體命名指導方針:

  • docexamplebucket-1a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa

  • amzn-s3-demo-bucket1-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

  • amzn-s3-demo-bucket-a1b2c3d4-5678-90ab-cdef-EXAMPLE22222

  • amzn-s3-demo-bucket2

下列範例儲存貯體名稱有效,但不建議用於靜態網站託管以外的用途:

  • example.com

  • www.example.com

  • my.example.s3.bucket

下列範例儲存貯體名稱無效

  • amzn_s3_demo_bucket (包含底線)

  • AmznS3DemoBucket (包含大寫字母)

  • amzn-s3-demo-bucket- (結尾為連字號)

最佳實務

命名儲存貯體時,請考慮下列儲存貯體命名最佳實務。

選擇不太可能造成命名衝突的儲存貯體命名方案

如果您的應用程式自動建立儲存貯體,請選擇不可能引起命名衝突的儲存貯體命名配置。如已採用某個儲存貯體名稱,請確保您的應用程式邏輯會選擇不同的儲存貯體名稱。

將全域唯一識別碼 (GUID) 附加至儲存貯體名稱

建議您建立無法預測的儲存貯體名稱。除非您已建立儲存貯體,否則請勿編寫程式碼,假設您選擇的儲存貯體名稱可用。建立無法預測之儲存貯體名稱的一種方法是將全域唯一識別碼 (GUID) 附加至儲存貯體名稱,例如 amzn-s3-demo-bucket-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

避免在儲存貯體名稱中使用點 (.)

為了獲得最佳相容性,建議您避免在儲存貯體名稱中使用句點 (.),但僅用於靜態網站託管的儲存貯體除外。如果您在儲存貯體名稱中包含點,除非您執行自己的憑證驗證,否則無法透過 HTTPS 使用 virtual-host-style 定址。這是因為用於儲存貯體虛擬託管的安全憑證不適用於名稱中含有句點的儲存貯體。

此限制不會影響用於靜態網站託管的儲存貯體,因為靜態網站託管只能透過 HTTP 使用。如需 virtual-host-style 定址的詳細資訊,請參閱 儲存貯體的虛擬託管。如需靜態網站託管的詳細資訊,請參閱 使用 Amazon S3 託管靜態網站

選擇相關名稱

當您命名儲存貯體時,建議您選擇與您或您的企業相關的名稱。避免使用與其他人相關聯的名稱。例如,您應該避免在您的儲存貯體名稱中使用 AWSAmazon

重複使用儲存貯體名稱

如果儲存貯體為空白,您可以將其刪除。刪除某個儲存貯體後,該名稱就可以重複使用。不過,刪除儲存貯體之後,您可能因為各種原因無法重複使用該名稱。

例如,當您刪除儲存貯體且名稱變為可供重複使用時,另一個名稱 AWS 帳戶 可能會建立具有該名稱的儲存貯體。此外,在您可以重複使用已刪除儲存貯體的名稱之前,可能需要一段時間。如果想要使用相同的儲存貯體名稱,建議您不要刪除儲存貯體。

建立在儲存貯體名稱中使用 GUID 的儲存貯體

下列範例示範如何建立一般用途儲存貯體,並在儲存貯體名稱結尾使用 GUID。

下列 AWS CLI 範例會在美國西部 (加利福尼亞北部) 區域 (us-west-1) 區域中建立儲存貯體,其中的範例儲存貯體名稱使用全域唯一識別碼 (GUID)。

aws s3api create-bucket \ --bucket amzn-s3-demo-bucket1$(uuidgen | tr -d - | tr '[:upper:]' '[:lower:]' ) \ --region us-west-1 \ --create-bucket-configuration LocationConstraint=us-west-1

下列範例示範如何使用 ,在美國東部 (維吉尼亞北部) 區域 (us-east-1;) 的儲存貯體名稱結尾建立 GUID 的儲存貯體 AWS SDK for Java。如需 other AWS SDKs 的相關資訊,請參閱要建置的工具 AWS

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); } }