

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

# 一般用途儲存貯體命名規則
<a name="bucketnamingrules"></a>

當您建立一般用途儲存貯體時，請務必考量儲存貯體名稱的長度、有效字元、格式和唯一性。下列各節提供有關一般用途儲存貯體命名的資訊，包括命名規則、最佳實務，以及如何在帳戶區域命名空間中建立儲存貯體的範例。 範例用於建立名稱包含全域唯一識別符 (GUID) 的一般用途儲存貯體。

如需物件金鑰名稱的相關資訊，請參閱[建立物件金鑰名稱](https://docs.aws.amazon.com/en_us/AmazonS3/latest/userguide/object-keys.html)。

若要建立一般用途儲存貯體，請參閱 [建立一般用途儲存貯體](create-bucket-overview.md)。

**Topics**
+ [一般用途儲存貯體命名規則](#general-purpose-bucket-names)
+ [帳戶區域命名空間規則](#account-regional-naming-rules)
+ [一般用途儲存貯體名稱範例](#bucket-names)
+ [最佳實務](#automatically-created-buckets)
+ [建立在儲存貯體名稱中使用 GUID 的儲存貯體](#create-bucket-name-guid)
+ [在您的帳戶區域命名空間中建立儲存貯體](#create-account-regional-naming)

## 一般用途儲存貯體命名規則
<a name="general-purpose-bucket-names"></a>

以下是一般用途儲存貯體適用的命名規則：
+ 儲存貯體名稱長度必須介於 3 (最小值) 到 63 (最大值) 個字元之間。
+ 儲存貯體名稱只能由小寫字母、數字、句號 (`.`) 和連字號 (`-`) 組成。
+ 儲存貯體名稱必須以字母或數字開頭和結尾。
+ 儲存貯體名稱不能包含兩個連續句點。
+ 儲存貯體名稱不得格式化為 IP 位址 (例如，`192.168.5.4`)。
+ 儲存貯體名稱必須以字首 `xn--` 開頭。
+ 儲存貯體名稱必須以字首 `sthree-` 開頭。
+ 儲存貯體名稱必須以字首 `amzn-s3-demo-` 開頭。
+ 儲存貯體名稱不得以尾碼 `-s3alias` 結尾。存取點別名名稱會保留此尾碼。如需詳細資訊，請參閱[存取點別名](access-points-naming.md#access-points-alias)。
+ 儲存貯體名稱不得以尾碼 `--ol-s3` 結尾。Object Lambda 存取點別名名稱會保留此尾碼。如需詳細資訊，請參閱[如何針對您的 S3 儲存貯體 Object Lambda 存取點使用儲存貯體樣式別名](olap-use.md#ol-access-points-alias)。
+ 儲存貯體名稱不得以尾碼 `.mrap` 結尾。多區域存取點名稱會保留此字尾。如需詳細資訊，請參閱[命名 Amazon S3 多區域存取點的規則](multi-region-access-point-naming.md)。
+ 儲存貯體名稱不得以尾碼 `--x-s3` 結尾。目錄儲存貯體會保留此字尾。如需詳細資訊，請參閱[目錄儲存貯體命名規則](directory-bucket-naming-rules.md)。
+ 儲存貯體名稱不得以尾碼 `--table-s3` 結尾。S3 Tables 儲存貯體會保留此字尾。如需詳細資訊，請參閱[Amazon S3 資料表儲存貯體、資料表和命名空間命名規則](s3-tables-buckets-naming.md)。
+ 當您在帳戶區域命名空間中建立儲存貯體`-an`時，儲存貯體名稱只能以尾碼結尾。如需詳細資訊，請參閱[一般用途儲存貯體的命名空間](gpbucketnamespaces.md)。
+ 與 Amazon S3 Transfer Acceleration 搭配使用的儲存貯體名稱中，不能有句號 (`.`)。如需 Transfer Acceleration 的詳細資訊，請參閱 [使用 Amazon S3 Transfer Acceleration 設定快速安全的檔案傳輸](transfer-acceleration.md)。

**重要**  
一般用途儲存貯體存在於全域命名空間中，這表示每個儲存貯體名稱在分割區 AWS 區域 內的所有 AWS 帳戶 中都必須是唯一的。分割區是 Regions 的群組。 AWS 目前有四個分割區： `aws`（標準區域）、 `aws-cn`（中國區域）、 `aws-us-gov`(AWS GovCloud (US)) 和 `aws-eusc`（歐洲主權雲端）。在共用全域命名空間中建立一般用途儲存貯體之後，該儲存貯體名稱就無法供其他人在分割區內建立。當儲存貯體擁有者刪除其儲存貯體時，儲存貯體名稱會在全域命名空間中再次可用，以供任何人重新建立。
在刪除儲存貯體之前，相同分割區中的另一個 無法使用共用全域命名空間 AWS 帳戶 中的儲存貯體名稱。**刪除共用全域命名空間中的儲存貯體後，請注意相同分割區 AWS 帳戶 中的另一個儲存貯體可以為新儲存貯體使用相同的儲存貯體名稱，因此可能會收到針對已刪除儲存貯體提出的請求。**若要避免此情況，或您希望繼續使用相同的儲存貯體名稱，則不要刪除該儲存貯體。建議您清空儲存貯體並加以保留，必要時封鎖任何儲存貯體請求。對於不再處於使用中狀態的儲存貯體，我們建議清空所有物件的儲存貯體，以將成本降至最低，同時保留儲存貯體本身。
我們建議您在帳戶區域命名空間中建立儲存貯體，以確保只有您的帳戶才能擁有這些儲存貯體名稱。
當您建立一般用途儲存貯體時，您可以選擇其名稱和 AWS 區域 要在其中建立它。建立一般用途儲存貯體之後，即無法變更其名稱或區域。
請勿在儲存貯體名稱中包含敏感資訊。在指向儲存貯體中之物件的 URL 中，會顯示儲存貯體名稱。

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

## 帳戶區域命名空間規則
<a name="account-regional-naming-rules"></a>

雖然 Amazon S3 一般用途儲存貯體存在於共用的全域命名空間中，但您可以選擇在帳戶區域命名空間中建立儲存貯體。帳戶區域命名空間是全域儲存貯體命名空間的預留子區段，只有您的帳戶可以建立一般用途儲存貯體。在您的 帳戶區域命名空間中建立的新一般用途儲存貯體專屬於您的帳戶，且永遠無法由另一個帳戶重新建立。這些儲存貯體支援共用全域命名空間中已支援的一般用途儲存貯體的所有 S3 功能 AWS 和服務，您的應用程式不需要變更即可與帳戶區域命名空間中的儲存貯體互動。

您帳戶區域命名空間中的一般用途儲存貯體必須遵循特定的命名慣例。這些儲存貯體包含您建立的儲存貯體名稱字首，以及包含 12 位數 AWS 帳戶 ID、 AWS 區域 代碼並以 結尾的尾碼`-an`。

```
{{bucket-name-prefix}}-accountId-region-an
```

例如，以下一般用途儲存貯體存在於 us-west-2 區域中 AWS 帳戶 111122223333 的帳戶區域命名空間中：

```
{{amzn-s3-demo-bucket}}-111122223333-us-west-2-an
```

若要在帳戶區域命名空間中建立儲存貯體，請提出 `CreateBucket` 請求，並指定 值設為 的`x-amz-bucket-namespace`請求標頭，`account-regional`以及指定帳戶區域命名空間格式的儲存貯體名稱：`{{customer-chosen-name}}-AWS-Account-ID-AWS-Region-an`。例如，您可以指定 來建立名為 的儲存貯體：`{{amzn-s3-demo-bucket}}-111122223333-us-east-1-an`其中您的帳戶區域尾碼為 `-111122223333-us-east-1-an`。如需帳戶區域命名空間的詳細資訊，請參閱 [一般用途儲存貯體的命名空間](gpbucketnamespaces.md)。

## 一般用途儲存貯體名稱範例
<a name="bucket-names"></a>

下列儲存貯體名稱顯示一般用途儲存貯體名稱中允許使用的字元範例：a-z、0-9 和連字號 (`-`)。`amzn-s3-demo-` 預留字首僅供此處說明之用。由於這是預留字首，您無法建立以 `amzn-s3-demo-` 開頭的儲存貯體名稱。
+ `amzn-s3-demo-bucket1-a1b2c3d4-5678-90ab-cdef-example11111`
+ `amzn-s3-demo-bucket`

下列範例顯示您帳戶區域命名空間中的儲存貯體名稱。這些儲存貯體必須遵循特定帳戶區域命名空間慣例： `{{customer-chosen-name}}-AWS-Account-ID-AWS-Region-an`
+ `amzn-s3-demo-bucket-111122223333-us-west-2-an`
+ `amzn-s3-demo-bucket-012345678910-ap-southeast-2-an`

下列範例儲存貯體名稱有效，但不建議用於靜態網站託管以外的用途，因為名稱中包含句號 (`.`)：
+ `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 位址的格式)

## 最佳實務
<a name="automatically-created-buckets"></a>

命名一般用途儲存貯體時，請考量下列儲存貯體命名最佳實務。

**在您的帳戶區域命名空間中建立儲存貯體**  
我們建議您在帳戶區域命名空間中建立儲存貯體，以確保只有您的帳戶才能擁有這些儲存貯體名稱。使用帳戶區域命名空間，您可以跨多個 建立可預測的儲存貯體名稱， AWS 區域 並保證沒有其他帳戶可以在命名空間中建立儲存貯體名稱。

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

**在儲存貯體名稱後面附加全域唯一識別碼 (GUID)**  
建議您建立無法預測的儲存貯體名稱。除非您已經建立了儲存貯體，否則不要因您認為有選擇的儲存貯體名稱可用而撰寫程式碼。有一個建立不可預測的儲存貯體名稱的方法，就是將全域唯一識別碼 (GUID) 附加到您的儲存貯體名稱 (例如 `amzn-s3-demo-bucket-a1b2c3d4-5678-90ab-cdef-example11111`)。如需詳細資訊，請參閱[建立在儲存貯體名稱中使用 GUID 的儲存貯體](#create-bucket-name-guid)。

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

此限制不會影響用於靜態網站託管的儲存貯體，因為靜態網站託管只能透過 HTTP 使用。如需虛擬託管型定址的詳細資訊，請參閱 [一般用途儲存貯體的虛擬託管](VirtualHosting.md)。如需靜態網站託管的詳細資訊，請參閱 [使用 Amazon S3 託管靜態網站](WebsiteHosting.md)。

**選擇相關名稱**  
為儲存貯體命名時，建議選擇與您或您的企業相關的名稱。避免使用與其他人相關聯的名稱。例如，您的儲存貯體名稱應避免使用 `AWS` 或 `Amazon`。

**請勿刪除儲存貯體，以便重複使用儲存貯體名稱**  
如果儲存貯體為空白，您可以將其刪除。刪除某個儲存貯體後，該名稱就可以重複使用。不過，無法保證您能夠立即重複使用名稱，甚至可能永遠無法重複使用。刪除共用全域命名空間中的儲存貯體之後，在您可以重複使用名稱之前，可能會經過一段時間。此外，另一個 AWS 帳戶 可能會建立具有相同名稱的儲存貯體，然後才能重複使用該名稱。

**刪除共用全域命名空間中的一般用途儲存貯體後，請注意相同分割區中的另一個 AWS 帳戶 儲存貯體可以使用與新儲存貯體相同的一般用途儲存貯體名稱，因此可能會收到用於已刪除一般用途儲存貯體的請求。**如果您想要避免這種情況，或想要繼續使用相同的一般用途儲存貯體名稱，請勿刪除一般用途儲存貯體。建議您清空儲存貯體並加以保留，必要時封鎖任何儲存貯體請求。

## 建立在儲存貯體名稱中使用 GUID 的儲存貯體
<a name="create-bucket-name-guid"></a>

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

### 使用 AWS CLI
<a name="guid-cli-bucket-name"></a>

下列 AWS CLI 範例在美國西部 （加利佛尼亞北部） 區域 (`us-west-1`) 中建立一般用途儲存貯體，其範例儲存貯體名稱使用全域唯一識別符 (GUID)。若要使用此範例命令，請以您自己的資訊取代 `{{user input placeholders}}`。

```
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}}
```

### 使用適用於 Java 的 AWS 開發套件
<a name="guid-sdk-bucket-name"></a>

下列範例示範如何透過使用 適用於 Java 的 AWS SDK，在美國東部 (維吉尼亞北部) 區域 (`us-east-1`) 建立名稱結尾有 GUID 的儲存貯體。若要使用此範例，請以您自己的資訊取代 `{{user input placeholders}}`。如需 AWS SDKs的詳細資訊，請參閱[要建置的工具 AWS](https://aws.amazon.com/developer/tools/)。

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

## 在您的帳戶區域命名空間中建立儲存貯體
<a name="create-account-regional-naming"></a>

下列範例說明如何在帳戶區域命名空間中建立一般用途儲存貯體。

### 使用 AWS CLI
<a name="account-regional-cli-naming"></a>

下列 AWS CLI 範例在美國西部 （加利佛尼亞北部） 區域 (`us-west-1`) 區域中，於 AWS 帳戶 012345678910 的帳戶區域命名空間中建立一般用途儲存貯體。若要使用此範例命令，請以您自己的資訊取代 `user input placeholders`。

```
aws s3api create-bucket \
    --bucket {{amzn-s3-demo-bucket-012345678910-us-west-1-an}} \
    --bucket-namespace account-regional
    --region {{us-west-1}} \
    --create-bucket-configuration LocationConstraint={{us-west-1}}
```