下載物件 - Amazon Simple Storage Service

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

下載物件

本節說明如何從 Amazon S3 儲存貯體下載物件。您可以將物件存放在 Amazon S3 的一或多個儲存貯體中,而且每個物件的大小上限可達 5 TB。任何未封存的 Amazon S3 物件都可即時存取。而封存的物件必須先還原才能下載。如需下載已封存物件的詳細資訊,請參閱 下載封存的物件

您可以使用 Amazon S3 主控台下載單一物件, AWS Command Line Interface (AWS CLI), AWS SDKs,或 Amazon S3 REST API。若要在不撰寫任何程式碼或執行任何命令的情況下從 S3 下載物件,請使用 S3 主控台。如需詳細資訊,請參閱下載物件

若要下載多個物件,請使用 AWS CloudShell,該 AWS CLI,或 AWS SDKs。如需詳細資訊,請參閱下載多個物件

如果您需要下載物件的一部分,您可以使用額外的參數 AWS CLI 或僅RESTAPI指定您要下載的位元組。如需詳細資訊,請參閱下載物件的一部分

如果您需要下載您不擁有的物件,請要求物件擁有者產生可讓您下載物件的預先簽章URL。如需詳細資訊,請參閱從另一個物件下載物件 AWS 帳戶

當您將物件下載到 AWS 需支付網路、資料傳輸費用。內部的數據傳輸 AWS 網絡是免費的 AWS 區域,但我們會向您收取任何GET要求的費用。如需資料傳輸成本和資料擷取收費的詳細資訊,請參閱 Amazon S3 定價

下載物件

您可以使用 Amazon S3 主控台下載物件, AWS CLI, AWS SDKs,或RESTAPI。

本節說明如何使用 Amazon S3 主控台從 S3 儲存貯體下載物件。

注意
  • 您一次只能下載一個物件。

  • 如果您使用 Amazon S3 主控台下載的物件,且其金鑰名稱結尾為句號 (.),則會移除所下載物件的金鑰名稱中的句號。若要保留下載物件名稱末尾的句點,您必須使用 AWS Command Line Interface (AWS CLI), AWS SDKs,或 Amazon S3 REST API。

從 S3 儲存貯體下載物件
  1. 登入到 AWS Management Console 並打開 Amazon S3 控制台https://console.aws.amazon.com/s3/

  2. Buckets (儲存貯體) 清單中,選擇您要從中下載物件的儲存貯體名稱。

  3. 您可使用下列任一方式從 S3 儲存貯體下載物件:

    • 勾選物件旁的核取方塊,然後選擇下載。如果您要將物件下載到特定資料夾,請在動作選單上選擇下載為

    • 如果您要下載特定版本的物件,請開啟顯示版本 (位於搜尋方塊旁)。勾選您要的物件版本旁的核取方塊,然後選擇下載。如果您要將物件下載到特定資料夾,請在動作選單上選擇下載為

下面的示get-object例命令顯示了如何使用 AWS CLI 從 Amazon S3 下載一個對象。此命令會從儲存貯體 amzn-s3-demo-bucket1 取得物件 folder/my_image。物件將下載到名為 my_downloaded_image 的檔案中。

aws s3api get-object --bucket amzn-s3-demo-bucket1 --key folder/my_image my_downloaded_image

如需詳細資訊和範例,請參閱 get-object 中的 AWS CLI 指令參考

如需如何使用 AWS SDKs,請參閱搭GetObject配使用 AWS SDK或 CLI

有關使用不同的一般信息 AWS SDKs,請參閱使用開發 AWS 套件使用 Amazon S3 進行開發

您可以使RESTAPI用從 Amazon S3 擷取物件。如需詳細資訊,請參閱 GetObjectAmazon 簡單存儲服務API參考中。

下載多個物件

您可以通過使用下載多個對象 AWS CloudShell,該 AWS CLI,或 AWS SDKs.

AWS CloudShell 是一個以瀏覽器為基礎的預先驗證殼層,您可以直接從 AWS Management Console.

如需關於 AWS CloudShell,請參閱什麼是 CloudShell?AWS CloudShell 使用者指南

重要

同 AWS CloudShell,您的主目錄最多有 1GB 的每個儲存空間 AWS 區域。 因此,您無法將值區與總計超過此數量的物件同步化。如需更多限制,請參閱 AWS CloudShell 使用者指南

若要使用下載物件 AWS CloudShell
  1. 登入到 AWS Management Console 並在。打開 CloudShell 控制台https://console.aws.amazon.com/cloudshell/

  2. 執行下列命令,將值區中的物件同步到 CloudShell。下列指令會同步來自名為的值區中的物件,amzn-s3-demo-bucket1並建立名為 temp in CloudShell 的資料夾。 CloudShell 將您的物件同步到此資料夾。若要使用此命令,請以您自己的資訊取代 user input placeholders

    aws s3 sync s3://amzn-s3-demo-bucket1 ./temp
    注意

    若要執行模式比對以排除或包含特定物件,您可以使用 --exclude "value"--include "value" 參數搭配 sync 命令。

  3. 執行下列命令,將名為 temp 的資料夾中的物件壓縮成名為 temp.zip 的檔案。

    zip temp.zip -r temp/
  4. 選擇動作選單,然後選擇下載檔案

  5. 輸入檔案名稱 temp.zip,然後選擇下載

  6. (選擇性) 刪除temp.zip檔案和已同步至中temp資料夾的物件 CloudShell。同 AWS CloudShell,您擁有每個最多 1 GB 的持久存儲 AWS 區域.

    您可以使用下列範例命令來刪除您的 .zip 檔案和資料夾。若要使用此範例命令,請以您自己的資訊取代 user input placeholders

    rm temp.zip && rm -rf temp/

下面的例子演示了如何使用 AWS CLI 下載指定目錄或前置詞下的所有檔案或物件。此命令會將儲存貯體 amzn-s3-demo-bucket1 中的所有物件複製到您目前的目錄。若要使用此範例命令,請使用您的儲存貯體名稱取代 amzn-s3-demo-bucket1

aws s3 cp s3://amzn-s3-demo-bucket1 . --recursive

下列命令會將儲存貯體 amzn-s3-demo-bucket1 中字首為 logs 的所有物件下載到您目前的目錄。此命令還會使用 --exclude--include 參數僅複製字尾為 .log 的物件。若要使用此範例命令,請以您自己的資訊取代 user input placeholders

aws s3 cp s3://amzn-s3-demo-bucket1/logs/ . --recursive --exclude "*" --include "*.log"

如需詳細資訊和範例,請參閱 cp 中的 AWS CLI 指令參考

如需如何下載 Amazon S3 儲存貯體中所有物件的範例 AWS SDKs,請參閱將 Amazon Simple Storage Service (Amazon S3) 儲存貯體中的所有物件下載至本機目錄

有關使用不同的一般信息 AWS SDKs,請參閱使用開發 AWS 套件使用 Amazon S3 進行開發

下載物件的一部分

您可以使用下載物件的一部分 AWS CLI 或RESTAPI。若要這麼做,請使用額外的參數來指定要下載物件的哪一部分。

下列範例命令會針對名為 amzn-s3-demo-bucket1 的儲存貯體中,名為 folder/my_data 的物件的某個位元組範圍執行 GET 請求。在請求中,位元組範圍必須加上字首 bytes=。部分物件會下載到名為 my_data_range 的輸出檔案中。若要使用此範例命令,請以您自己的資訊取代 user input placeholders

aws s3api get-object --bucket amzn-s3-demo-bucket1 --key folder/my_data --range bytes=0-500 my_data_range

如需詳細資訊和範例,請參閱 get-object 中的 AWS CLI 指令參考

如需有關HTTPRange標頭的詳細資訊,請參閱RFC編輯器網站上的 RFC9110

注意

Amazon S3 不支援在單一 GET 請求中擷取多重資料範圍。

您可以使用中的partNumberRange參數從 Amazon S3 擷取物件零件。REST API如需詳細資訊,請參閱 GetObjectAmazon 簡單存儲服務API參考中。

從另一個物件下載物件 AWS 帳戶

您可以使用預先簽署URL授與其他人存取您物件的限時存取權,而不需要更新值區政策。

預先簽署URL可以在瀏覽器中輸入,也可以由程式用來下載物件。所使用的認證URL是 AWS 產生的使用者URL. 建立之後,任何具有預先簽署的人都URL可以下載對應的物件,直到到URL期URL為止。

您可以按照以下步驟使用 Amazon S3 主控台產生共URL用物件的預先簽署。使用主控台時,預先簽署URL的到期時間上限為自建立之日起 12 小時。

若要使用 Amazon S3 主控台產生預先簽署 URL
  1. 登入到 AWS Management Console 並打開 Amazon S3 控制台https://console.aws.amazon.com/s3/

  2. 在左側導覽窗格中,選擇 Buckets (儲存貯體)。

  3. 在「值區」清單中,選擇包含您要預先簽署URL之物件的值區名稱。

  4. 在「物件」清單中,選取您要為其建立預先簽署URL的物件。

  5. 在 [物件動作] 功能表上,選擇 [與預先簽署URL項目共用]。

  6. 指定您希望預先簽署URL的有效時間長度。

  7. 選擇「建立預先簽署 URL」。

  8. 出現確認訊息時,會URL自動複製到剪貼簿。URL如果您需要再次復制它,您將看到一個用於複製預先簽名的按鈕。

  9. 若要下載物件,請將物件貼URL到任何瀏覽器中,該物件就會嘗試下載。

如需有關預先簽署URLs和其他建立它們的方法的詳細資訊,請參閱使用預先簽署 URLs

下載封存的物件

若要降低不常存取物件的儲存成本,您可以封存這些物件。當您封存物件時,該物件會移入低成本的儲存空間,這表示您無法即時存取該物件。若要下載封存的物件,您必須先將它還原。

根據儲存類別而定,還原封存的物件可能需要幾分鐘到數小時不等的時間。您可以使用 Amazon S3 主控台、S3 Batch 操作、Amazon S3 REST API、 AWS SDKs,以及 AWS Command Line Interface (AWS CLI).

如需說明,請參閱 還原已封存的物件。還原封存的物件之後,就可以下載該物件。

根據中繼資料下載物件

您可以使用條件式讀取要求,新增先決條件,根據物件的中繼資料下載物件。您可以根據物件的 Entity 標籤 (ETag) 或上次修改日期傳回物件。這可以將 S3 操作限制為自指定日期以來更新的物件,或者只傳回特定物件版本。

您可以使用條件式寫入 GetObjectHeadObject請求。

如需條件式請求的詳細資訊,請參閱,使用條件式請求將先決條件新增至 S3 操作

下載物件的故障排除

權限不足或值區不正確或 AWS Identity and Access Management (IAM) 當您嘗試從 Amazon S3 下載物件時,使用者政策可能會導致錯誤。這些問題經常會導致拒絕存取 (403 禁止) 錯誤,使得 Amazon S3 無法允許資源存取。

如要了解導致拒絕存取 (403 禁止) 錯誤的常見原因,請參閱 疑難排解拒絕存取 (403 Forbidden)Amazon S3 中的錯誤