下載物件 - 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或 REST 下載物件API。

本節說明如何使用 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-objectAWS CLI 命令參考 中。

如需如何使用 下載物件的範例 AWS SDKs,請參閱 Amazon S3 API參考 中的程式碼範例

如需使用不同 的一般資訊 AWS SDKs,請參閱 Amazon S3 參考 中的使用 開發 AWS SDKs Amazon S3API

您可以使用 從 Amazon S3 RESTAPI擷取物件。如需詳細資訊,請參閱 GetObjectAmazon Simple Storage Service API參考 中。

下載多個物件

您可以使用 AWS CloudShell、 AWS CLI或 下載多個物件 AWS SDKs。

AWS CloudShell 是以瀏覽器為基礎的預先驗證 Shell,您可以直接從 啟動 AWS Management Console。

如需 的詳細資訊 AWS CloudShell,請參閱 使用者指南 中的什麼是 CloudShell?AWS CloudShell

重要

透過 AWS CloudShell,您的主目錄具有每個 最多 1GB 的儲存體 AWS 區域。因此,您無法同步物件總計超過此數量的儲存貯體。如要了解更多限制,請參閱《AWS CloudShell 使用者指南》中的 Service Quotas 和限制

使用 下載物件 AWS CloudShell
  1. 登入 AWS Management Console 並在 開啟 CloudShell 主控台https://console.aws.amazon.com/cloudshell/

  2. 執行下列命令,將儲存貯體中的物件同步至 CloudShell。下列命令會從名為 的儲存貯體同步物件,amzn-s3-demo-bucket1並建立名為 CloudShell. CloudShell syncs temp的資料夾。若要使用此命令,請以您自己的資訊取代 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中,您擁有每個 AWS 區域最多 1 GB 的持久性儲存空間。

    您可以使用下列範例命令來刪除您的 .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"

如需詳細資訊和範例,請參閱 cpAWS CLI 命令參考 中。

如需如何使用 下載 Amazon S3 儲存貯體中所有物件的範例 AWS SDKs,請參閱 Amazon S3 API參考 中的程式碼範例

如需使用不同 的一般資訊 AWS SDKs,請參閱 Amazon S3 參考 中的使用 開發 AWS SDKs Amazon S3API

下載物件的一部分

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

下列範例命令會針對名為 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-objectAWS CLI 命令參考 中。

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

注意

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

您可以使用 中的 partNumberRange 參數RESTAPI,從 Amazon S3 擷取物件部分。如需詳細資訊,請參閱 GetObjectAmazon Simple Storage Service API參考 中。

從另一個 AWS 帳戶下載物件

您可以使用預先簽署的 URL ,授予其他人對物件的時間限制存取,而無需更新儲存貯體政策。

預先簽章URL可以輸入瀏覽器中,或由程式用來下載物件。使用的憑證URL是產生 AWS 的使用者的憑證URL。URL 建立 後,任何具有預先簽章的 人員URL都可以下載對應的物件,直到 URL過期為止。

您可以使用 Amazon S3 主控台,依照下列步驟產生預先簽章URL來共用物件。使用主控台時,預先簽章的過期時間上限為建立時間起算 URL12 小時。

URL 使用 Amazon S3 主控台產生預先簽章
  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 批次操作、Amazon S3 API、 AWS SDKs和 AWS Command Line Interface () REST 來還原封存的物件AWS CLI。

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

根據中繼資料下載物件

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

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

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

下載物件的故障排除

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

如要了解導致拒絕存取 (403 禁止) 錯誤的常見原因,請參閱 拒絕對存取進行故障診斷 (403 Forbidden) Amazon S3 中的錯誤