Amazon-S3

部署到數千個 Amazon S3 賬戶?

  • October 6, 2012

我們執行一項服務,提供基於 Web (PHP) 的應用程序的“工作”,並且圖像、JS、CSS 等託管在客戶自己的 Amazon S3 帳戶上。

這樣他們就可以獲得 S3 使用的綜合賬單(該應用程序使用 S3 本身),我們不必補貼他們的頻寬(沒有月費,所以隨著它的增長,它只會花費我們更多和更多錢)。

我們現在有 1000 多個客戶,並且向他們推送更新(例如 JS 更新)需要非常長的時間,而且這個數字將在未來幾個月內呈指數增長。

我曾考慮過我們擁有的源 S3 儲存桶,然後在我們的 S3 儲存桶和他們的 S3 儲存桶之間執行 COPY 請求而不是上傳。這仍然需要時間,但比現在上傳要快得多。但是,我聽說如果不使用中間伺服器就無法在兩個完全獨立的 S3 帳戶之間進行複制(這顯然會破壞對象並且實際上會使時間加倍)。

真的嗎?誰能想到另一種方法來做到這一點?

這是一個非常好的問題。

上次我甚COPY至在不同地區之間檢查也沒有用。我知道Cloudberry 的 Explorer 應用程序具有在 S3 帳戶之間複製數據的功能,你能用它做一個測試嗎?我沒試過,它只是Windows。

我想如果它有效,那就是嘗試 API 的問題。

您的所有客戶都在同一個地區嗎?因為如果COPY帳戶之間不起作用,我會啟動一個(或多個)實例以加快程序。如果每個人都在同一個區域,則不應收取頻寬費用。

這並不理想,但我想通過多個實例,您可以以不到 10 美元的價格完成大量工作。並且應該也可以自動化設置。

更新

所以要詳細說明EC2。EC2 實例就像另一台伺服器。我最初建議這樣做,這樣您就可以下載文件一次並將其上傳到AWS的其他 S3 賬戶,這樣您就可以節省頻寬費用(如果儲存桶和實例位於同一區域,則它是免費的)。

無論如何,EC2 實例就像一個伺服器,它需要一些設置來引導它。例如自定義 AMI,或任何 AMI 和一些user-data(傳遞給實例並在首次啟動時執行的 shell 腳本)。您可能需要安裝 PHP、Amazon SDK 等——所有這些都可以自動化。

問題是,我不完全確定您的情況是否有必要。

查看以下範常式式碼: http ://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?CopyingObjectUsingPHP.html

它展示瞭如何將數據從一個儲存桶複製到另一個儲存桶。由於儲存桶名稱在所有 S3 中都是唯一的,因此這應該不是問題。我認為您需要做的就是向您自己的 AWS 賬戶上的每個人(至少是暫時的)**閱讀文件,然後遍歷並將文件複製到您客戶的 AWS 賬戶。

我認為您可以在任何地方發布該程式碼,而不必擔心頻寬費用,因為COPY應該都是內部的。無需下載實際文件。

不確定您是否查看了文件,但似乎 AWS 需要某種原始標頭 ( x-amz-copy-source),然後它會處理其餘部分。

高溫高壓

引用自:https://serverfault.com/questions/435473