

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

# 建立一般用途儲存貯體
<a name="create-bucket-overview"></a>

若要將資料上傳到 Amazon S3，您必須先在其中一個 AWS 區域中建立 Amazon S3 一般用途儲存貯體。建立儲存貯體的 AWS 帳戶 擁有該儲存貯體。建立儲存貯體時，必須選擇儲存貯體名稱與區域。建立處理序期間，您可以選擇性地為儲存貯體選擇其他儲存管理選項。

**重要**  
建立儲存貯體後，便無法變更儲存貯體名稱、儲存貯體擁有者或區域。如需儲存貯體命名的詳細資訊，請參閱 [一般用途儲存貯體命名規則](bucketnamingrules.md)。

根據預設，每個 最多可以建立 10，000 個一般用途儲存貯體 AWS 帳戶。若要請求提高一般用途儲存貯體的配額，請造訪 [Service Quotas 主控台](https://console.aws.amazon.com/servicequotas/home/services/s3/quotas/)。

您可以在儲存貯體中存放任意數量的物件。如需與 Amazon S3 一般用途儲存貯體相關的限制與約束清單，請參閱 [一般用途儲存貯體配額、限制與約束](BucketRestrictions.md)。

## 一般用途儲存貯體設定
<a name="create-bucket-settings"></a>

建立一般用途儲存貯體時，您必須決定是否要在帳戶區域命名空間中建立全域一般用途儲存貯體或一般用途儲存貯體。建立之後，無法變更此決策以及儲存貯體名稱和區域。

當您建立一般用途儲存貯體時，可以使用下列設定來控制儲存貯體的各層面行為：
+ **S3 儲存貯體命名空間** – 預設情況下，Amazon S3 一般用途儲存貯體存在於全域命名空間中。建立一般用途儲存貯體時，您可以選擇在共用全域命名空間中建立儲存貯體，也可以選擇在帳戶區域命名空間中建立儲存貯體。您的帳戶區域命名空間是全域命名空間的子區段，只有您的帳戶才能在其中建立儲存貯體。在您的 帳戶區域命名空間中建立的新一般用途儲存貯體專屬於您的帳戶，且永遠無法由另一個帳戶重新建立。這些儲存貯體支援共用全域命名空間中已支援的一般用途儲存貯體的所有 S3 功能 AWS 和服務，您的應用程式不需要變更即可與帳戶區域命名空間中的儲存貯體互動。如需儲存貯體命名空間的詳細資訊，請參閱 [一般用途儲存貯體的命名空間](gpbucketnamespaces.md)。
+ **S3 物件擁有權** – S3 物件擁有權是一項 Amazon S3 儲存貯體層級設定，您可以用來同時控制上傳至儲存貯體之物件的擁有權，以及停用或啟用存取控制清單 (ACL)。根據預設，物件擁有權設定為儲存貯體擁有者強制執行設定，而且所有 ACL 都會停用。停用 ACL 後，儲存貯體擁有者會擁有儲存貯體中的每個物件，並使用政策專門管理對資料的存取。如需詳細資訊，請參閱[控制物件的擁有權並停用儲存貯體的 ACL](about-object-ownership.md)。
+ **S3 物件鎖定** – S3 物件鎖定可協助在一段固定時間內或無限期避免刪除或覆寫 Amazon S3 物件。物件鎖定會使用*單寫多讀* (WORM) 模式來存放物件。您可以使用物件鎖定協助符合要求使用 WORM 儲存的法規需求，或多加一道保護，以免物件遭到變更或刪除。如需詳細資訊，請參閱[使用物件鎖定來鎖定物件](object-lock.md)。
+ **標籤** – AWS 標籤是存放中繼資料的鍵值對。您可以將標籤連接至 Amazon S3 資源，例如儲存貯體。您可以在於現有資源上建立或管理標籤時，標記資源。您可以使用標籤進行成本分配，以依 AWS Billing and Cost Management 中的儲存貯體標籤追蹤儲存成本。您也可以使用屬性型存取控制 (ABAC) 的標籤來擴展存取許可，並根據其標籤授予對 S3 資源的存取。如需詳細資訊，請參閱[搭配 S3 一般用途儲存貯體使用標籤](buckets-tagging.md)。

建立一般用途儲存貯體後，或使用 Amazon S3 主控台建立一般用途儲存貯體時，您也可以使用下列設定來控制儲存貯體的其他層面行為：
+ **S3 封鎖公開存取** – S3 封鎖公開存取功能可提供存取點、儲存貯體和帳戶的設定，以協助您管理對 Amazon S3 資源的公開存取。依預設，新的儲存貯體、存取點和物件不允許公開存取。不過，使用者可以修改儲存貯體政策、存取點政策或物件許可，以允許公開存取。S3 封鎖公開存取設定能覆寫這些政策和許可的設定，讓您可以限制這些資源的公開存取。如需詳細資訊，請參閱[封鎖對 Amazon S3 儲存體的公開存取權](access-control-block-public-access.md)。
+ **S3 版本控制** – 版本控制是在相同儲存貯體中保留多個物件版本的方式。您可以使用版本控制功能來保留、擷取和恢復在 儲存貯體中所存放每個物件的各個版本。透過版本控制，您就可以輕鬆地復原失誤的使用者動作和故障的應用程式。根據預設，儲存貯體會停用版本控制。如需詳細資訊，請參閱[使用 S3 版本控制保留多個版本的物件](Versioning.md)。
+ **預設加密** – 您可以為儲存貯體中的所有物件設定預設加密類型。伺服器端加密與 Amazon S3 受管金鑰 (SSE-S3) 是 Amazon S3 中每個儲存貯體的基本加密組態層級。上傳到 S3 儲存貯體的所有新物件，都會以 SSE-S3 做為加密底層來進行自動加密。如果您想要使用不同類型的預設加密，您可以使用 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 指定伺服器端加密、使用 AWS KMS 金鑰進行雙層伺服器端加密 (DSSE-KMS)，或使用客戶提供的金鑰 (SSE-C) 進行伺服器端加密，以加密您的資料。如需詳細資訊，請參閱[對 Amazon S3 儲存貯體設定預設伺服器端加密行為](bucket-encryption.md)。

您可以使用 Amazon S3 主控台、Amazon S3 REST API、 AWS Command Line Interface (AWS CLI) 或 AWS SDKs來建立一般用途儲存貯體。如需有關建立一般用途儲存貯體所需權限的詳細資訊，請參閱《Amazon Simple Storage Service API 參考》**中的 [CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)。

如果您在建立 Amazon S3 儲存貯體時遇到問題，請參閱 AWS re:Post上的[如何在建立 Amazon S3 儲存貯體時針對錯誤進行疑難排解？](https://repost.aws/knowledge-center/s3-create-bucket-errors)。

## 使用 S3 主控台
<a name="create-bucket"></a>

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。​接下來，選擇您要在其中建立儲存貯體的區域。
**注意**  
建立儲存貯體後，您無法變更其區域。
請選擇接近您的區域，以充分降低延遲及成本，並因應法規要求。除非您明確地將儲存在區域中的物件傳輸到其他區域，否則物件絕對不會離開該區域。如需 Amazon S3 AWS 區域的清單，請參閱 中的[AWS 服務 端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)*Amazon Web Services 一般參考*。

1. 在左側導覽窗格中，選擇**一般用途儲存貯體**。

1. 選擇 **Create bucket** (建立儲存貯體)。**Create bucket (建立儲存貯體)** 頁面隨即開啟。

1. 針對 **Bucket name (儲存貯體名稱)**，輸入儲存貯體的名稱。

   儲存貯體名稱必須；
   + 在分割區內不重複。分割區是 Regions 的群組。 AWS 目前有三個分割區： `aws`（商業區域）、 `aws-cn`（中國區域） 和 `aws-us-gov`()AWS GovCloud (US) Regions。
   + 長度必須介於 3 與 63 個字元之間。
   + 只能由小寫字母、數字、句號 (`.`) 和連字號 (`-`) 組成。為了獲得最佳相容性，建議您避免在儲存貯體名稱中使用句號 (`.`)，但僅用於靜態網站託管的儲存貯體除外。
   + 開頭和結尾為字母或數字。
   + 如需儲存貯體命名規則的完整清單，請參閱 [一般用途儲存貯體命名規則](bucketnamingrules.md)。
**重要**  
建立儲存貯體後，便無法變更其名稱。
請勿在儲存貯體名稱中包含敏感資訊。在指向儲存貯體中之物件的 URL 中，會顯示儲存貯體名稱。

1. (選用) 在**一般組態**下，您可以選擇將現有儲存貯體的設定，複製到新的儲存貯體。如果您不想複製現有儲存貯體的設定，請跳至下一個步驟。
**注意**  
這個選項：  
無法在 中使用 AWS CLI ，且只能在 Amazon S3 主控台中使用
不會將現有儲存貯體中的儲存貯體政策複製到新儲存貯體

    若要複製現有儲存貯體的設定，請在**複製現有儲存貯體中的設定**下，選取**選擇儲存貯體**。**選擇儲存貯體**視窗隨即開啟。尋找您要複製其設定的儲存貯體，然後選取**選擇儲存貯體**。**選擇儲存貯體**視窗隨即關閉，並重新開啟**建立儲存貯體**視窗。

   在**複製現有儲存貯體中的設定**下，現在您會看到所選儲存貯體的名稱。新儲存貯體的設定目前符合您選取的儲存貯體設定。如果您想要移除複製的設定，請選擇**還原預設值**。在**建立儲存貯體**頁面上，檢閱其餘儲存貯體設定。如果您不要做任何變更，可以跳到最後一個步驟。

1. 在 **Object Ownership** (物件擁有權) 下，若要停用或啟用 ACL 並控制上傳在儲存貯體中物件的擁有權，請選擇下列其中一個設定：

**已停用 ACL**
   +  **儲存貯體擁有者強制執行 (預設)** - 停用 ACL，儲存貯體擁有者會自動擁有並完全控制一般用途儲存貯體中的每個物件。ACL 不再影響 S3 一般用途儲存貯體中資料的存取許可。儲存貯體單獨使用政策來定義存取控制。

     根據預設，會停用 ACL。Amazon S3 中的大多數新式使用案例不再需要使用 ACL。建議您將 ACL 保時停用狀態，除非在必須個別控制每個物件存取的情況下。如需詳細資訊，請參閱[控制物件的擁有權並停用儲存貯體的 ACL](about-object-ownership.md)。

**已啟用 ACL**
   + **儲存貯體擁有者偏好** – 儲存貯體擁有者擁有並完全控制其他帳戶使用 `bucket-owner-full-control` 標準 ACL 寫入儲存貯體的新物件。

     如果您套用**儲存貯體擁有者偏好**設定，以要求所有 Amazon S3 上傳都包含 `bucket-owner-full-control` 固定 ACL 時，您可以[新增儲存貯體政策](ensure-object-ownership.md#ensure-object-ownership-bucket-policy)，只允許使用此 ACL 的物件上傳。
   + **物件寫入器** – 上傳物件 AWS 帳戶 的 擁有物件、擁有物件的完整控制權，並可透過 ACLs。
**注意**  
預設設定為**儲存貯體擁有者強制執行**。若要套用預設設定並將 ACL 保持停用狀態，只需要 `s3:CreateBucket` 許可。若要啟用 ACL，您必須具有 `s3:PutBucketOwnershipControls` 許可。

1. 在**封鎖此儲存貯體的公開存取設定**之下，選擇要套用至儲存貯體的封鎖公開存取設定。

   根據預設，會啟用全部四個「封鎖公開存取」設定。建議您將所有設定保持啟用狀態，除非您知道需要針對特定使用案例關閉其中一或多個設定。如需封鎖公開存取的詳細資訊，請參閱 [封鎖對 Amazon S3 儲存體的公開存取權](access-control-block-public-access.md)。
**注意**  
若要啟用所有「封鎖公用存取」設定，只需要 `s3:CreateBucket` 許可。若要關閉任何「封鎖公開存取」設定，您必須具有 `s3:PutBucketPublicAccessBlock` 許可。

1. (選用) 根據預設，會停用**儲存貯體版本控制**。版本控制是在相同儲存貯體中保留多個物件版本的方式。您可以使用版本控制功能來保留、擷取和恢復在 儲存貯體中所存放每個物件的各個版本。透過版本控制，您可以更輕鬆地復原失誤的使用者動作和故障的應用程式。如需版本控制的詳細資訊，請參閱「[使用 S3 版本控制保留多個版本的物件](Versioning.md)」。

   若要在儲存貯體上啟用版本控制，請選擇**啟用**。

1. (選用) 在 **Tags** (標籤) 下，您可以選擇新增標籤至儲存貯體。透過 AWS 成本配置，您可以使用儲存貯體標籤來標註儲存貯體用量的帳單。標籤為一組金鑰/值對，代表指派給儲存貯體的標籤。如需詳細資訊，請參閱[使用成本分配 S3 儲存貯體標籤](CostAllocTagging.md)。

   若要新增儲存貯體標籤，請輸入 **Key** (金鑰) 並選擇性地輸入 **Value** (值)，然後選擇 **Add tag** (新增標籤)。

1. 若要設定**預設加密**，請在**加密類型**下，選擇下列其中一項：
   + **使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密**
   + **伺服器端加密與 AWS Key Management Service 金鑰 (SSE-KMS)**
   + **使用 AWS Key Management Service (AWS KMS) 金鑰的雙層伺服器端加密 (DSSE-KMS)**
**重要**  
如果您針對預設加密組態使用 SSE-KMS 或 DSSE-KMS 選項，則受到 AWS KMS的每秒請求數目 (RPS) 配額限制。如需 AWS KMS 配額以及如何請求提高配額的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[配額](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)。

   儲存貯體和新物件會以 Amazon S3 受管金鑰 (SSE-S3) 做為基本加密組態層級，使用伺服器端加密來進行加密。如需預設加密的詳細資訊，請參閱[對 Amazon S3 儲存貯體設定預設伺服器端加密行為](bucket-encryption.md)。如需 SSE-S3 的詳細資訊，請參閱 [使用 Amazon S3 受管金鑰 (SSE-S3) 進行伺服器端加密](UsingServerSideEncryption.md)。

   如需有關使用伺服器端加密來加密資料的詳細資訊，請參閱 [使用加密來保護資料](UsingEncryption.md)。

1. 如果您選擇**使用 AWS Key Management Service 金鑰進行伺服器端加密 (SSE-KMS)** 或使用 ** AWS Key Management Service (AWS KMS) 金鑰進行雙層伺服器端加密 (DSSE-KMS)**，請執行下列動作：

   1. 在 **AWS KMS 金鑰**下，使用下列其中一種方式指定 KMS 金鑰：
      + 若要從可用的 KMS 金鑰清單中選擇，請選擇**從中選擇 AWS KMS keys**，然後從可用的金鑰清單中選擇您的 **KMS** 金鑰。

         AWS 受管金鑰 (`aws/s3`) 和您的客戶受管金鑰都會顯示在此清單中。如需詳細了解客戶受管金鑰，請參閱《AWS Key Management Service 開發人員指南》**中的[客戶金鑰和 AWS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)。
      + 若要輸入 KMS 金鑰 ARN，請選擇**輸入 AWS KMS key ARN**，然後在出現的欄位中輸入您的 KMS 金鑰 ARN。
      + 若要在 AWS KMS 主控台中建立新的客戶受管金鑰，請選擇**建立 KMS 金鑰**。

        如需建立 的詳細資訊 AWS KMS key，請參閱《 *AWS Key Management Service 開發人員指南*》中的[建立金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)。
**重要**  
您只能使用 AWS 區域 與儲存貯體相同的 KMS 金鑰。Amazon S3 主控台僅會列出與儲存貯體位於相同區域的前 100 個 KMS 金鑰。若要使用未列出的 KMS 金鑰，必須輸入 KMS 金鑰 ARN。若您想要使用其他帳戶的 KMS 金鑰，您必須先具有該金鑰的使用權限，然後輸入 KMS 金鑰 ARN。如需有關 KMS 金鑰跨帳戶權限的詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[建立其他帳戶可使用的 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)。如需 SSE-KMS 的詳細資訊，請參閱「[使用 AWS KMS (SSE-KMS) 指定伺服器端加密](specifying-kms-encryption.md)」。如需 DSSE-KMS 的詳細資訊，請參閱 [使用雙層伺服器端加密搭配 AWS KMS 金鑰 (DSSE-KMS)](UsingDSSEncryption.md)。  
當您在 Amazon S3 中使用 AWS KMS key 進行伺服器端加密時，您必須選擇對稱加密 KMS 金鑰。Amazon S3 僅支援對稱加密 KMS 金鑰，而不支援非對稱 KMS 金鑰。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[識別對稱和非對稱 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)。

   1. 當您將儲存貯體設定為使用 SSE-KMS 的預設加密時，您還可以使用 S3 儲存貯體金鑰。S3 儲存貯體金鑰透過減少來自 Amazon S3 的請求流量來降低加密成本 AWS KMS。如需詳細資訊，請參閱[使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本](bucket-key.md)。DSSE-KMS 不支援 S3 儲存貯體金鑰。

      根據預設，會在 Amazon S3 主控台啟用 S3 儲存貯體金鑰。建議您將 S3 儲存貯體金鑰維持啟用狀態，以降低成本。若要停用儲存貯體的 S3 儲存貯體金鑰，請在**儲存貯體金鑰**下選擇**停用**。

1. (選用) S3 物件鎖定有助於保護新物件免遭刪除或覆寫。如需詳細資訊，請參閱[使用物件鎖定來鎖定物件](object-lock.md)。如果您想要啟用 S3 物件鎖定，請執行下列動作：

   1. 選擇 **Advanced settings (進階設定)**。
**重要**  
啟用物件鎖定會自動啟用儲存貯體的版本控制。啟用並成功建立儲存貯體之後，您還必須在儲存貯體的**屬性**索引標籤上設定物件鎖定預設保留，以及法務保存設定。

   1. 如果想要啟用物件鎖定，請選擇 **Enable** (啟用)、讀取出現的警告並確認。
**注意**  
若要建立已啟用物件鎖定的儲存貯體，您必須具備下列權限：`s3:CreateBucket`、`s3:PutBucketVersioning` 和 `s3:PutBucketObjectLockConfiguration`。

1. 選擇**建立儲存貯體**。

## 使用 AWS SDKs
<a name="create-bucket-intro"></a>

當您使用 AWS SDKs建立一般用途儲存貯體時，您必須建立用戶端，然後使用用戶端傳送建立儲存貯體的請求。最佳實務是，您應該在同一個 AWS 區域中建立用戶端和儲存貯體。如果您在建立用戶端或儲存貯體時未指定區域，則 Amazon S3 會使用預設的美國東部 (維吉尼亞北部) 區域。如果您想要將儲存貯體建立限制為特定 AWS 區域，請使用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucketConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucketConfiguration.html)條件索引鍵。

若要建立用戶端以存取雙堆疊端點，您必須指定 AWS 區域。如需詳細資訊，請參閱 Amazon S3 API 參考**中的[使用 Amazon S3 雙堆疊端點](https://docs.aws.amazon.com/AmazonS3/latest/API/dual-stack-endpoints.html#dual-stack-endpoints-description)。如需可用的清單 AWS 區域，請參閱《》中的 [Amazon Simple Storage Service 端點和配額](https://docs.aws.amazon.com/general/latest/gr/s3.html)*AWS 一般參考*。

建立用戶端時，區域會對應至區域特定的端點。用戶端會使用此端點來與 Amazon S3：`s3.{{region}}.amazonaws.com` 通訊。如果您的區域在 2019 年 3 月 20 日之後啟動，您的用戶端和儲存貯體必須位於相同區域中。不過，您可以在美國東部 (維吉尼亞北部) 區域中使用用戶端，以便在 2019 年 3 月 20 日之前推出的任何區域中建立儲存貯體。如需詳細資訊，請參閱[舊版端點](VirtualHosting.md#s3-legacy-endpoints)。

這些 AWS SDK 程式碼範例會執行下列任務：
+ **透過明確指定 AWS 區域** 來建立用戶端 – 在此範例中，用戶端使用 `s3.us-west-2.amazonaws.com` 端點與 Amazon S3 通訊。您可指定任何 AWS 區域。如需 的清單 AWS 區域，請參閱《 *AWS 一般參考*》中的[區域和端點](https://docs.aws.amazon.com/general/latest/gr/s3.html)。
+ **透過僅指定儲存貯體名稱來傳送建立儲存貯體 ** 要求 — 用戶端會向 Amazon S3 傳送要求，以在您建立用戶端的區域中建立儲存貯體。
+ **擷取儲存貯體位置的相關資訊** – Amazon S3 會將儲存貯體位置資訊，儲存在與儲存貯體相關聯的 *location* 子資源中。

如需其他語言的其他 AWS SDK 範例和範例，請參閱《*Amazon Simple Storage Service API 參考*》中的[CreateBucket搭配使用 AWS SDK 或 CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_CreateBucket_section.html)。

------
#### [ Java ]

如需如何使用適用於 Java 的 AWS SDK 建立儲存貯體的範例，請參閱《*Amazon S3 API 參考*》中的[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_CreateBucket_section.html)。

使用適用於 Java 的 AWS SDK v2 時，您可以建立全域唯一識別碼 (GUID) 附加到儲存貯體名稱的一般用途儲存貯體，以確保唯一性。使用 `UUID.randomUUID().toString().replace("-", "")` 產生 GUID，並將其與您的基本儲存貯體名稱串接在一起。此方法有助於避免所有 AWS 帳戶的儲存貯體命名衝突。

------
#### [ .NET ]

如需如何建立和測試可行範例的相關資訊，請參閱[適用於 .NET 的AWS SDK 第 3 版 API 參考](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/Index.html)。

**Example**  

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using Amazon.S3.Util;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class CreateBucketTest
    {
        private const string bucketName = "*** bucket name ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 s3Client;
        public static void Main()
        {
            s3Client = new AmazonS3Client(bucketRegion);
            CreateBucketAsync().Wait();
        }

        static async Task CreateBucketAsync()
        {
            try
            {
                if (!(await AmazonS3Util.DoesS3BucketExistAsync(s3Client, bucketName)))
                {
                    var putBucketRequest = new PutBucketRequest
                    {
                        BucketName = bucketName,
                        UseClientRegion = true
                    };

                    PutBucketResponse putBucketResponse = await s3Client.PutBucketAsync(putBucketRequest);
                }
                // Retrieve the bucket location.
                string bucketLocation = await FindBucketLocationAsync(s3Client);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
        static async Task<string> FindBucketLocationAsync(IAmazonS3 client)
        {
            string bucketLocation;
            var request = new GetBucketLocationRequest()
            {
                BucketName = bucketName
            };
            GetBucketLocationResponse response = await client.GetBucketLocationAsync(request);
            bucketLocation = response.Location.ToString();
            return bucketLocation;
        }
    }
}
```

------
#### [ Ruby ]

如需如何建立和測試可行範例的資訊，請參閱[適用於 Ruby 的AWS SDK - 第 3 版](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/)。

**Example**  

```
require 'aws-sdk-s3'

# Wraps Amazon S3 bucket actions.
class BucketCreateWrapper
  attr_reader :bucket

  # @param bucket [Aws::S3::Bucket] An Amazon S3 bucket initialized with a name. This is a client-side object until
  #                                 create is called.
  def initialize(bucket)
    @bucket = bucket
  end

  # Creates an Amazon S3 bucket in the specified AWS Region.
  #
  # @param region [String] The Region where the bucket is created.
  # @return [Boolean] True when the bucket is created; otherwise, false.
  def create?(region)
    @bucket.create(create_bucket_configuration: { location_constraint: region })
    true
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't create bucket. Here's why: #{e.message}"
    false
  end

  # Gets the Region where the bucket is located.
  #
  # @return [String] The location of the bucket.
  def location
    if @bucket.nil?
      'None. You must create a bucket before you can get its location!'
    else
      @bucket.client.get_bucket_location(bucket: @bucket.name).location_constraint
    end
  rescue Aws::Errors::ServiceError => e
    "Couldn't get the location of #{@bucket.name}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  region = "us-west-2"
  wrapper = BucketCreateWrapper.new(Aws::S3::Bucket.new("amzn-s3-demo-bucket-#{Random.uuid}"))
  return unless wrapper.create?(region)

  puts "Created bucket #{wrapper.bucket.name}."
  puts "Your bucket's region is: #{wrapper.location}"
end

run_demo if $PROGRAM_NAME == __FILE__
```

------

## 使用 AWS CLI
<a name="creating-bucket-cli"></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}}
```

如需詳細資訊和其他範例，請參閱《AWS CLI 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html)。