2013-02-24 101 views
39

亞馬遜S3支持批量上傳嗎? 我有一份工作需要每晚上傳~100K的文件,可以達到1G,但對小文件強烈傾斜(90%小於100字節,99%小於1000字節長)。是否有可能執行批量上傳到亞馬遜s3?

s3 API是否支持在單個HTTP調用中上傳多個對象?

所有對象必須在S3中作爲單獨的對象可用。我無法在其他任何地方(FTP等)或其他格式(數據庫,EC2本地驅動器等)託管它們。這是我無法改變的外部要求。

+2

很大的問題!只是出於好奇心,你能告訴我們爲什麼,你想做什麼,這些文件是什麼? – 2013-02-24 08:54:51

+0

我可以問這些問題嗎? – 2013-02-24 09:06:20

+0

我想知道爲什麼會出現這樣的要求。如果您需要一次替換所有文件,也許有一些方法可以將它們以常規方式上傳到臨時存儲區,然後更改存儲區名稱? – 2013-02-24 09:17:06

回答

23

s3 API是否支持在單個HTTP調用中上傳多個對象?

不,the S3 PUT operation只支持每個HTTP請求上傳一個對象。

你可以安裝你的機器上S3 Tools要與遠程鬥同步,並運行以下命令:

s3cmd sync localdirectory s3://bucket/ 

然後,你可以在腳本中把這個命令,並創建計劃作業運行這個命令每晚。

這應該做你想做的。

該工具基於MD5散列和文件大小執行文件同步,因此碰撞應該很少(如果您真的希望只需使用「s3cmd put」命令來強制盲目覆蓋目標存儲桶中的對象)。

編輯:另外,還要確保你讀我聯繫了S3工具網站上的文檔 - 有需要的您是否想在本地刪除的文件,以從桶中或者被刪除或忽略等

+7

這種方法仍然使用個人放置操作,並且本質上不比其他任何操作更快。答案已被接受,但看起來你所做的一切都是指向一種工具,他可以在代碼中做同樣的事情。 – bridiver 2015-07-13 02:52:56

+0

你可以做從節點API同步也 - 查看節點S3的客戶端 – 2017-04-21 00:34:38

+0

s3cmd需要繼續使用 – Adder 2017-10-06 14:10:49

28

不同的標誌,您可以使用sync命令通過AWS CLI tool上傳S3。

AWS S3同步local_folder S3://桶名稱

可以非常快用這個方法來批量上傳文件到S3。

+6

與以前的答案許可證,寓意這裏似乎是,這些工具在某種程度上做的事情不能否則可以使用API​​來完成,我不認爲是這樣的話 – bridiver 2015-07-13 02:53:59

+0

我目前使用AWS CLI工具的本地目錄和S3存儲之間同步。我想知道是否有可用於輸出「上傳」或同步的結果到本地TXT文件,我可以通過電子郵件發送,然後通過blat.exe有人爭論或參數。 所有這一切都將被放入一個批處理文件十萬要由我們的其他服務器上下載文件的預定同步。 (使用S3存儲桶作爲雲源以克服源服務器的上傳速度問題) – 2016-01-29 01:39:15

0

一個文件(或文件的一部分)=一個HTTP請求,但Java API現在支持高效的多文件上傳,而無需編寫多線程你自己,通過使用TransferManager