簡體   English   中英

S3 文件夾上傳的 PUT 請求數

[英]Number of PUT requests for S3 folder upload

我是 AWS 的新手。 我正在使用 S3 PUT 對象並嘗試在一個文件夾中上傳 10 個文件。

更具體地說,我正在上傳文件夾。 完成文件上傳需要多少個 PUT 請求? 是 10 個 PUT 請求,因為 10 個文件在 S3 中被視為 10 個對象,還是在我們上傳文件時是 1 個請求?

在此處添加更具描述性的答案,因為 Amazon S3 提供了一系列針對不同用例優化的存儲類。 如..

  1. 存儲 Object 大小限制。
  2. 儲存時間
  3. 成本結構
  4. 生命周期管理
  5. 檢索項目。

當我們談到 AMAZON S3 時,它會在一個區域內的三個或更多可用區之間復制數據,這些可用區跨越最小 1 公里或最大 100 公里,只是為了避免自然災害等情況,並確保容錯、彈性和 LLT。

看下圖:

在此處輸入圖像描述

Amazon S3 為您提供八種不同的存儲類別,以下是……

  1. 標准(經常訪問的數據,每月使用 ms/access 一次以上)
  2. 智能分層(S3 智能分層為頻繁、不頻繁和存檔即時訪問層中頻繁、不頻繁和很少訪問的數據提供毫秒級延遲和高吞吐量性能。)
  3. Standard-IA (不經常訪問的數據,每月一次,使用 ms/access)。
  4. One-Zone IA (Recreatable, Infrequently accessed data, monthly, stored in Single AZ with ms/access)
  5. Glacier Instant Retrieval (長期歸檔數據在一個季度內一次,以毫秒為單位進行即時檢索)
  6. Glacier Flexible Retrieval(以前稱為 Glacier) :一年一次的長期歸檔數據,檢索時間從幾分鍾到幾小時不等,具體取決於數據。
  7. Glacier Deep Archive:長期歸檔數據,每年少於一次,檢索時間為小時。

現在回到你最初詢問 AWS 的 PUT 請求

准確地說:當您通過 API 將文件夾上傳到s3時,您會在一次操作中上傳最多5 GB的 object 說您通常需要一個文件一個文件,並且該文件可能最大為 5GB,否則它將是多個文件-parted 確實需要更多的 put 操作。

Amazon S3 是一個分布式系統,AWS S3 PUT 請求操作用於將一個 object 添加到一個桶中。

請記住,將文件上傳到 Amazon S3,它存儲為S3 object 對象由描述 object 的file datametadata組成。此外, s3使您可以自由地將任何文件類型上傳到S3存儲桶中,例如:

圖片

備份

數據

電影

塊引用

將文件上傳到s3 bucket時需要了解的另一件事是,上傳文件有限制:

  • 通過 s3 控制台上傳最大 160GB。
  • 對於大於 160GB 的文件,您需要使用 AWS CLI 或 AWS SDK 或 Rest API。

根據您上傳的數據大小,Amazon S3 提供以下選項:

  • 使用 AWS 開發工具包 REST API 或 AWS CLI在單個操作中上傳 object — 通過單個 PUT 操作,您可以上傳單個 object,最大大小為 5 GB。

  • 使用 Amazon S3 控制台上傳單個 object — 使用 Amazon S3 控制台,您可以上傳最大 160 GB 的單個 object。

  • 使用 AWS 開發工具包 REST API 或 AWS CLI分段上傳 object - 使用分段上傳 API,您可以上傳單個大文件 object,最大 5 TB。

  • 分段上傳- 分段上傳 API 旨在改善較大對象的上傳體驗。 您可以分段上傳 object。 這 object 個部分可以獨立上傳,可以任意順序並行上傳。 您可以對大小為 5 MB 到 5 TB 的對象使用分段上傳。

使用分段上傳具有以下優點:

提高吞吐量——您可以並行上傳部件以提高吞吐量。

從任何網絡問題中快速恢復 –較小的部分大小可最大限度地減少由於網絡錯誤而重新啟動失敗上傳的影響。

暫停和恢復 object 次上傳 –隨着時間的推移,您可以上傳 object 部分。 發起分段上傳后,沒有過期時間; 您必須明確完成或停止分段上傳。

在您知道最終 object 大小之前開始上傳 –您可以在創建 object 時上傳它。

上傳目錄/文件夾時上傳的工作原理:

從目錄上傳文件時,您無需為生成的對象指定鍵名。 Amazon S3 使用原始文件路徑構造鍵名稱。 例如,假設您有一個名為 c:\myfolder 的目錄,其結構如下:

C:\myfolder
      \a.txt
      \b.pdf
      \media\               
             An.mp3

更多詳細信息,請訪問AWS PUT KB

• Amazon S3 不支持並發編寫器的object 鎖定。 如果同時向同一個鍵發出兩個 PUT 請求,則具有最新時間戳的請求獲勝。

查看有關上傳目錄的aws文檔

在沒有更多上下文的情況下,無法確定將文件夾上傳到 S3 所需的 PUT 請求的確切數量。 所需的PUT請求數將取決於文件夾的大小和結構,以及用於上傳文件夾的特定方法和正在使用的特定 S3 配置和傳輸設置。

例如,如果您正在使用 AWS CLI 將文件夾上傳到 S3,則可以使用aws s3 sync命令,該命令會根據需要自動將文件夾中的文件拆分為多個 PUT 請求。 或者,您可以使用aws s3 cp命令,該命令允許您指定--recursive標志以上傳指定文件夾中的所有文件和子文件夾。 在這種情況下,PUT 請求的數量將取決於文件夾中的文件和子文件夾的數量。

也可以使用 AWS SDK 或 S3 REST API 以編程方式將文件夾上傳到 S3。 在這些情況下,所需的PUT請求數將再次取決於文件夾的大小和結構,以及 API 調用中使用的具體方法和參數。

通常,將文件夾上傳到 S3 將需要對文件夾中的每個文件至少一個 PUT 請求 但是,根據文件的大小和上傳文件的具體方法,可能需要額外的 PUT 請求才能完成上傳過程

可以使用分段上傳來減少較大文件所需的PUT請求,您可以使用 AWS 開發工具包或 AWS CLI 執行分段上傳,這可能會減少所需的 PUT 請求數。

考慮:

有幾種方法可以將文件上傳到 S3 存儲桶:

使用 Amazon S3 控制台:這是一個用戶友好的界面,可讓您輕松地將文件上傳到 S3 存儲桶。

  1. 使用 AWS CLI: AWS 命令行界面允許您從命令行將文件上傳到 S3。

    • aws s3 cp:此命令允許您將文件從本地文件系統復制到 S3 存儲桶,反之亦然。 例子...

       aws s3 cp /path/to/local/file s3://my-bucket/path/to/remote/file

      要么

      aws s3 cp /path/to/local/directory s3://my-bucket/path/to/remote/directory --recursive
    • aws s3 sync:此命令允許您將本地目錄的內容與 S3 存儲桶同步,上傳任何新文件或修改后的文件,反之亦然,示例...

       aws s3 sync /path/to/local/directory s3://my-bucket/path/to/remote/directory
    • aws s3api put-object:此命令允許您使用 S3 REST API 將文件/對象上傳到 S3 存儲桶。

    • aws s3api upload-part:此命令允許您將分段上傳的一部分上傳到 S3 存儲桶。

    • aws s3api upload-part-copy:此命令允許您復制 object 的一部分並將其作為分段上傳的一部分上傳到 S3 存儲桶。

    • aws s3 mv:此命令允許您將本地文件移動到 S3 存儲桶,或將 S3 存儲桶內的文件移動到其他位置。

    • aws s3upload:此命令是 AWS SAM CLI 的一部分,允許您將本地文件或目錄上傳到 S3 存儲桶,並提供指定存儲桶名稱、鍵前綴和其他參數的選項。

  2. 使用 AWS 開發工具包: AWS 軟件開發工具包提供各種編程語言的庫,允許您將文件從您的代碼上傳到 S3。

  3. 使用第三方工具:有許多第三方工具可以讓您輕松地將文件上傳到 S3,例如 CloudBerry Explorer 或 S3 Browser。

  4. 使用 S3 REST API:您可以使用 S3 REST API 以編程方式使用 HTTP 請求將文件上傳到 S3。

  5. 使用 AWS Transfer 系列:您可以使用 AWS Transfer 系列通過文件傳輸協議 (FTP)、安全文件傳輸協議 (SFTP) 或網絡文件系統 (NFS) 將文件上傳到 S3 存儲桶。 如果您想使用熟悉的文件傳輸協議將文件傳輸到 S3 存儲桶,則此選項很有用。

使用 PUT 操作將文件上傳到 Amazon S3 存儲桶時,還需要牢記其他幾個注意事項:

Object size: S3 的最大 object 大小為 5 TB。 如果您嘗試上傳大於此的文件,則需要使用分段上傳 API。但是,為了獲得最佳性能,建議將單個對象的大小保持在 100 MB 以下。

File name: S3 的最小文件名長度為 1 個字符,最大文件名長度為 1024 個字符。 文件名在存儲桶中也必須是唯一的。

File format: S3 支持多種文件格式,包括文本、二進制和多媒體文件。 但是,某些文件格式可能不受支持或可能需要額外處理才能使用。

Metadata:您可以在將對象上傳到 S3 時為其指定元數據。 此元數據與 object 一起存儲,可用於提供有關 object 的其他信息。

Access controls:您可以使用存儲桶策略和 IAM 策略等訪問控制來控制誰可以訪問您在 S3 中的對象。

Data consistency: S3 為新對象的 PUT 提供先寫后讀一致性,並為覆蓋 PUT 和 DELETE 提供最終一致性。 這意味着在將新的 object 添加到存儲桶后,它可能無法立即用於讀取操作。

Cost: S3 對存儲和訪問存儲桶中的對象收取費用。 在 S3 中上傳和存儲對象時,您應該考慮這些成本。

Error handling:使用 PUT 操作將對象上傳到 S3 存儲桶時,優雅地處理錯誤很重要。 例如,您應該考慮在出現網絡錯誤或服務器端問題時重試 PUT 操作。

Transfer acceleration: S3 Transfer Acceleration 允許您通過 Amazon CloudFront 內容交付網絡 (CDN) 將文件上傳到 S3,這可以顯着減少遠距離傳輸大型文件所需的時間。 傳輸加速對於從互聯網連接較慢的位置上傳大文件特別有用。

通過牢記這些注意事項,您可以確保 S3 PUT 操作成功且高效。

另一個問題? S3 看跌請求有上限嗎?

您可以向 Amazon S3存儲桶發出的放置請求的數量沒有固定限制。 但是,您可以向 S3 存儲桶發出放置請求的速率存在限制。 這些限制稱為request raterequest throttling限制,它們是在 S3 存儲桶或 AWS 賬戶級別設置的。

S3的請求速率限制因地區和S3 storage class 例如,在美國東部(弗吉尼亞北部)區域,S3 標准存儲 class 的請求速率限制為每個存儲桶每秒 3,000 個放置請求。 這意味着您每秒最多可以向該區域中的單個 S3 存儲桶發出 3,000 個放置請求。

如果您超過 S3 存儲桶的請求速率限制,您的放置請求將受到限制,您將收到HTTP error code 503 (Service Unavailable) 為避免請求限制,您可以將應用程序設計為處理request retriesbackoff

請務必注意,這些請求速率限制是在存儲桶級別設置的,因此如果您同時將多個對象寫入同一個存儲桶,這些寫入將計入相同的請求速率限制。 如果需要寫入大量對象到S3,可以考慮使用Multipart Upload API ,可以並行上傳大對象,可以提高上傳速度。

有關 S3 請求速率限制以及如何處理請求限制的更多信息,您可以參考 Amazon S3 文檔。

AWS S3如何將工作置於幕后?

當您使用aws s3api put-object命令或aws s3 cp命令將文件上傳到 Amazon S3 存儲桶時,會在后台執行以下步驟:

AWS CLI 向 S3 REST API 發送一個HTTP PUT請求。

S3 REST API 收到PUT請求並處理。

S3 將上傳的文件存儲在指定的桶和位置。

S3 向 AWS CLI 返回 HTTP 響應,指示 PUT 請求的狀態(例如,如果請求成功,則為200 OK )。

AWS CLI 向用戶顯示 HTTP 響應。

在后台,S3 將上傳的文件存儲為存儲桶中的 object。 object 由文件數據、元數據(如文件名、內容類型和訪問控制)和稱為object key的唯一標識符組成。

S3 使用跨多個服務器和設施的冗余存儲,以高度持久和可用的方式存儲對象。 這樣可以確保上傳的文件是安全的,並且可以隨時檢索。

有關 Amazon S3 如何存儲和管理對象的更多信息,您可以參考 Amazon S3 文檔。

s3 cpAWS CLI 文檔鏈接和 s3 syn的 AWS CLI 文檔鏈接還可以查看AWS S3 常見問題解答

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM