

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

# 上傳物件
<a name="upload-objects"></a>

當您將檔案上傳至 Amazon S3 時，該檔案會另存為 S3 *物件*。物件是由檔案資料與說明物件的中繼資料所組成。儲存貯體中可以有不限數目的物件。您需要儲存貯體的寫入許可，才能將檔案上傳至 Amazon S3 儲存貯體。如需存取許可的詳細資訊，請參閱「[Amazon S3 的身分和存取管理](security-iam.md)」。

您可以將任何檔案類型 (影像、備份、資料、影片等) 上傳至 S3 儲存貯體。使用 Amazon S3 主控台可上傳的檔案大小上限為 160 GB。若要上傳大於 160 GB 的檔案，請使用 AWS Command Line Interface (AWS CLI)、 AWS SDKs或 Amazon S3 REST API。

如果上傳物件的金鑰名稱已存在於啟用版本控制的儲存貯體中，Amazon S3 會建立另一個物件版本，而不是取代現有的物件。如需啟用版本控制的詳細資訊，請參閱[在儲存貯體上啟用版本控制](manage-versioning-examples.md)。

 視上傳資料大小之不同，Amazon S3 提供下列選項：
+ **使用 AWS SDKs、REST API 或 ，在單一操作中上傳物件 AWS CLI** – 透過單一`PUT`操作，您可以上傳大小上限為 5 GB 的單一物件。
+ **使用 Amazon S3 主控台上傳單一物件****–** – 使用 Amazon S3 主控台，您可以上傳大小最多 160 GB 的單一物件。
+ **使用 AWS SDKs、REST API 或 分段上傳物件 AWS CLI**** –** 使用分段上傳 API 操作，您可以上傳單一大型物件，大小上限為 50 TB。

  分段上傳 API 操作是專為改善較大型物件上傳體驗所設計。您可以上傳零件中的物件。這些物件部分可個別、依任何順序以及同時上傳。對於大小從 5 MB 到 50 TB 的物件，您可以使用分段上傳。如需詳細資訊，請參閱[在 Amazon S3 中使用分段上傳來上傳和複製物件](mpuoverview.md)。

若要上傳大於 5 TB 的檔案，請在 Java v1/v2、Python 或 AWS CLI SDKs 中使用 S3 Transfer Manager。為了獲得最佳效能，請將最新的 AWS Common Runtime (CRT) 與這些 SDK 搭配使用，這些 SDKs 已針對更好的資源使用率進行最佳化。

從記憶體串流上傳大型物件時，CRT 會在記憶體中緩衝每個部分最多 5 GB，依配置的記憶體限制整體輸送量。您可以使用組態選項調整 CRT 記憶體限制，例如 `maxNativeMemoryLimitInBytes` for Java SDK。對於從磁碟上傳，CRT 會自動切換到直接磁碟串流，而不是中繼部分緩衝，從而改善記憶體使用量。此行為會自動為大型物件啟用，但也可以透過請求參數為較小的檔案啟用，例如 `should_stream` for AWS CLI 和 `CRT_MEMORY_BUFFER_DISABLED` for Java SDK。

上傳物件時，根據預設，物件使用伺服器端加密與 Amazon S3 受管金鑰 (SSE-S3) 進行自動加密。當您下載物件時，該物件會解密。如需詳細資訊，請參閱[對 Amazon S3 儲存貯體設定預設伺服器端加密行為](bucket-encryption.md)及[使用加密來保護資料](UsingEncryption.md)。

當您上傳物件時，如果您想要使用不同類型的預設加密，也可以在 S3 `PUT`請求中使用 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 指定伺服器端加密，或在目的地儲存貯體中設定預設加密組態，以使用 SSE-KMS 加密您的資料。如需 SSE-KMS 的詳細資訊，請參閱「[使用 AWS KMS (SSE-KMS) 指定伺服器端加密](specifying-kms-encryption.md)」。若您想要使用其他帳戶的 KMS 金鑰，您必須具有該金鑰的使用權限。如需詳細了解 KMS 金鑰跨帳戶權限，請參閱《AWS Key Management Service 開發人員指南》**中的[建立其他帳戶可使用的 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)。

如果您在 Amazon S3 中遇到「存取遭拒 (403 Forbidden)」錯誤，請參閱[對 Amazon S3 中的存取遭拒 (403 Forbidden) 錯誤進行故障診斷](troubleshoot-403-errors.md)以進一步了解其常見原因。

## 上傳物件
<a name="upload-objects-procedure"></a>

### 使用 S3 主控台
<a name="upload-objects-by-drag-and-drop"></a>

此程序說明如何使用主控台，將物件和資料夾上傳至 Amazon S3 儲存貯體。

上傳物件時，物件索引鍵名稱為檔案名稱加上任何選擇性的字首。在 Amazon S3 主控台中，您可以建立資料夾來整理物件。在 Amazon S3 中，資料夾表示為物件索引鍵名稱中的字首。如果您在 Amazon S3 主控台中將個別物件上傳到資料夾，則物件索引鍵名稱中會包含該資料夾名稱。

例如，如果您將名為 `sample1.jpg` 的物件上傳到名為 `backup` 的資料夾，則索引鍵名稱為 `backup/sample1.jpg`。不過，此物件在主控台中會顯示為 `sample1.jpg` 資料夾中的 `backup`。如需金鑰名稱的詳細資訊，請參閱「[使用物件中繼資料](UsingMetadata.md)」。

**注意**  
如果您在 Amazon S3 主控台中重新命名物件或變更物件的任何屬性 (例如**儲存類別**、**加密**或**中繼資料**)，則會建立新物件來取代舊的物件。如果啟用 S3 版本控制，則系統會建立物件的新版本，且現有物件會變成較舊的版本。變更屬性的角色也會成為新物件 (或物件版本) 的擁有者。

當您上傳資料夾時，Amazon S3 會將指定資料夾中的所有檔案與子資料夾上傳至您的儲存貯體。然後會指派一個由已上傳檔案名稱與資料夾名稱所組成的物件金鑰名稱。例如，如果您上傳一個名為 `/images` 的資料夾，其中包含兩個檔案 `sample1.jpg` 與 `sample2.jpg`，Amazon S3 會上傳檔案，然後指派對應的索引鍵名稱 `images/sample1.jpg` 與 `images/sample2.jpg`。金鑰名稱包含資料夾名稱作為字首。Amazon S3 主控台只會顯示最後一個 `/` 後面的金鑰名稱部分。例如，在 `images` 資料夾中，`images/sample1.jpg` 與 `images/sample2.jpg` 物件會顯示為 `sample1.jpg` 與 `sample2.jpg`。<a name="upload-files-folders"></a>

**將資料夾和檔案上傳至 S3 儲存貯體**

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

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

1. 在 **Buckets** (儲存貯體) 清單中，選擇您要上傳資料夾或檔案的目標儲存貯體名稱。

1. 選擇 **Upload** (上傳)。

1. 在 **Upload** (上傳) 視窗中，執行下列其中一個操作：
   + 將檔案和資料夾拖放至 **Upload** (上傳) 視窗。
   + 選擇**新增檔案**或**新增資料夾**，選擇要上傳的檔案或資料夾，然後選擇**開啟**。

1. 若要啟用多版本設定，請在 **Destination** (目的地) 下選擇 **Enable Bucket Versioning** (啟用儲存貯體版本控制)。

1. 若要上傳列出的檔案和資料夾，而不設定其他上傳選項，請選擇頁面底部的 **Upload** (上傳)。

   Amazon S3 會上傳您的物件和資料夾。上傳完成後，您可以在**上傳：狀態**頁面上看到成功訊息。<a name="configure-additional-properties"></a>

**設定其他物件屬性**

1. 若要變更存取控制清單許可，請選擇**Permissions** (許可)。

1. 在**存取控制清單 (ACL)**中，編輯許可。

   如需物件存取許可的資訊，請參閱「[使用 S3 主控台來設定物件的 ACL 許可](managing-acls.md#set-object-permissions)」。您可以針對您上傳的所有檔案，將物件的讀取存取許可授予大眾 (全世界的所有人)。但是，建議不要變更公有讀取存取的預設設定。授予公有讀取存取適用於一小部分的使用情況，例如當儲存貯體用於網站時。您一律可以在上傳物件之後變更物件許可。

1. 若要設定其他附加屬性，請選擇**Properties** (屬性)。

1. 在**儲存類別**下，選擇您要上傳的檔案的儲存類別。

   如需儲存體方案的詳細資訊，請參閱「[了解和管理 Amazon S3 儲存類別](storage-class-intro.md)」。

1. 若要更新物件的加密設定，請在 **Server-side encryption settings** (伺服器端加密設定) 下，執行下列操作。

   1. 選擇 **Specify an encryption key** (指定加密金鑰)。

   1. 在**加密設定**底下，選擇**使用預設加密的儲存貯體設定**或**覆寫預設加密的儲存貯體設定**。

   1. 若您選擇**覆寫預設加密的儲存貯體設定**，則您必須設定下列加密設定。
      + 若要使用 Amazon S3 管理的金鑰加密上傳的檔案，請選擇 **Amazon S3 受管金鑰 (SSE-S3)**。

        如需詳細資訊，請參閱[使用 Amazon S3 受管金鑰 (SSE-S3) 進行伺服器端加密](UsingServerSideEncryption.md)。
      + 若要使用儲存在 AWS Key Management Service () 中的金鑰來加密上傳的檔案AWS KMS，請選擇**AWS Key Management Service 金鑰 (SSE-KMS)**。然後針對 **AWS 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。  
Amazon S3 僅支援對稱加密 KMS 金鑰，而不支援非對稱 KMS 金鑰。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[識別對稱和非對稱 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)。

1. 若要使用額外的檢查總和，請選擇 **On** (開啟)。然後為 **檢查總和函數**，選擇您要使用的函數。Amazon S3 在接收完整物件後計算並存儲檢查總和的值。您可以使用 **預先計算的值** 方塊以提供預先計算的值。如果您這樣做，Amazon S3 會將您提供的值與其計算的值進行比較。如果兩個值不匹配，Amazon S3 將產生錯誤。

   通過額外的檢查總和，您可以指定要用於驗證資料的檢查總合演算法。如需額外的檢查總和詳細資訊，請參閱「[在 Amazon S3 中檢查物件完整性](checking-object-integrity.md)」。

1. 若要將標籤新增至您要上傳的所有物件，請選擇 **Add tag** (新增標籤)。在**金鑰**欄位中輸入標籤名稱。輸入標籤值。

   物件標記提供您一個分類儲存的方法。每個標籤都是金鑰值對。金鑰與標記值皆區分大小寫。每物件最多可有 10 個標籤。標籤金鑰最長可包含 128 個 Unicode 字元；標籤值最長可包含 255 個 Unicode 字元。如需物件標籤的詳細資訊，請參閱 [使用標籤為物件分類](object-tagging.md)。

1. 若要新增中繼資料，請選擇 **Add metadata** (新增中繼資料)。

   1. 在 **Type** (類型) 下，選擇 **System defined** (系統定義) 或 **User defined** (使用者定義)。

      對於系統定義的中繼資料，您可以選取常見的 HTTP 標頭，例如 **Content-Type** 和 **Content-Disposition**。如需系統定義的中繼資料清單及是否可新增值的資訊，請參閱「[系統定義的物件中繼資料](UsingMetadata.md#SysMetadata)」。以字首 `x-amz-meta-` 開頭的所有中繼資料都會視為使用者定義的中繼資料。使用者定義的中繼資料會與 物件一起存放，並在您下載物件時傳回。金鑰及其值都必須符合 US-ASCII 標準。使用者定義的中繼資料最大可達 2 KB。如需系統定義與使用者定義中繼資料的詳細資訊，請參閱 「[使用物件中繼資料](UsingMetadata.md)」。

   1. 針對 **Key** (金鑰) 中，選擇一個金鑰。

   1. 輸入金鑰的值。

1. 若要上傳物件，請選擇 **Upload** (上傳)。

   Amazon S3 會上傳您的物件。上傳完成後，您可以在 **Upload: status** (上傳：狀態) 頁面上看到成功訊息。

1. 選擇 **Exit (退出)**。

### 使用 AWS CLI
<a name="UploadObjSingleOpCLI"></a>

您可以傳送 `PUT` 請求，以便在單一操作中上傳多達 5 GB 的物件。如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html#examples](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html#examples) 範例。

### 使用 REST API
<a name="UploadObjSingleOpREST"></a>

您可以傳送 REST 請求以上傳物件。您可以傳送 `PUT` 請求，以單一操作上傳資料。如需詳細資訊，請參閱 [PUT 物件](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)。

### 使用 AWS SDKs
<a name="UploadInSingleOp"></a>

如需如何使用 AWS SDKs 上傳物件的範例，請參閱《*Amazon Simple Storage Service API 參考*》中的[程式碼範例](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_PutObject_section.html)。

如需使用 AWS SDKs的一般資訊，請參閱《[Amazon Simple Storage Service API 參考》中的使用 SDK 與 Amazon S3 一起開發 AWS SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html)。 **

## 防止上傳具有相同金鑰名稱的物件
<a name="upload-objects-with-same-key-name"></a>

您可以在上傳操作時使用條件式寫入，在建立物件之前，檢查物件是否已存在於您的儲存貯體中。這可以防止覆寫現有資料。條件式寫入會在上傳時，驗證您的儲存貯體中不存在具有相同金鑰名稱的現有物件。

您可以針對 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) 或 [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) 請求使用條件式寫入。

如需條件式請求的詳細資訊，請參閱[使用條件式請求將先決條件新增至 S3 操作](conditional-requests.md)。