我目前正在開發一個rails應用程序,它試圖在s3中將視頻從一個存儲桶複製到另一個存儲桶。但是,我不斷收到我的rails應用程序上的代理錯誤502。在雜種日誌中,它表示「未能分配內存」。一旦發生此錯誤,應用程序就會死亡,我們必須重新啓動。如何在導軌應用程序中使用s3在存儲區之間複製文件?
3
A
回答
6
好像您的代碼正在將整個資源讀取到內存中,以及您的應用程序無法讀取。一個天真的方式來做到這一點(並從你的描述,你已經做了這樣的事情)將是下載文件並再次上傳它:只需將它下載到本地文件,而不是內存。然而,亞馬遜的工程師們已經提前思考並提供了可以處理這種特定情況的API。
如果你正在使用類似的RightAWS寶石,你可以用它S3Interface像這樣:
# With s3 being an S3 object acquired via S3Interface.new
# Copies key1 from bucket b1 to key1_copy in bucket b2:
s3.copy('b1', 'key1', 'b2', 'key1_copy')
如果你正在使用裸S3 HTTP接口,見amazon's object copy docs只使用一個解決方案HTTP將一個對象從一個桶複製到另一個桶。
0
嘗試流文件而不是將整個文件加載到內存中,然後使用它。
例如,如果您正在使用AWS-S3的寶石,不要使用:
data = open(file)
S3Object.store file_name, data, BUCKET
使用以下代替:
S3Object.store file_name, open(file), BUCKET
不知道究竟如何 「流下載的」文件雖然。
0
boto效果很好。見this thread。使用boto,將對象從一個桶直接複製到另一個桶,而不是將它們下載到本地計算機,然後將它們上傳到另一個桶。
0
您可以使用fog寶石直接將存儲桶複製到存儲桶中。
s3 = Fog::Storage.new(your_aws_credentials)
s3.copy_object('source-bucket', 'source/path', 'dest-bucket', 'dest/path')
相關問題
- 1. 如何使用PowerShell在S3存儲桶之間複製大於5GB的文件
- 2. 在express/nodejs應用程序中存儲在S3中的文件
- 3. 在兩個應用程序之間存儲和管理文件?
- 4. 如何在SVN存儲庫之間複製文件夾?
- 5. 使用內部存儲在兩個應用程序之間共享文件
- 6. 如何在兩個應用程序之間共享存儲文件?
- 7. 如何使用Amazon AWS PHP SDK在區域之間複製S3對象?
- 8. 如何將存儲在亞馬遜S3服務器上的圖像導出到本地導軌應用程序?
- 9. 在S3上使用CollectionFS存儲文件
- 10. 在兩個s3存儲桶之間複製拋出404錯誤
- 11. 如何在應用程序之間備份和恢復數據存儲
- 12. 如何在導軌應用程序中使用SASS或LESS mixins?
- 13. 存儲在應用程序中的HTML文件使用存儲在應用程序中的drawable?
- 14. 用「雲」存儲在同一應用程序的用戶之間傳輸文件
- 15. 如何使用iOS SDK將AWS S3文件從一個存儲桶複製到另一個存儲區
- 16. 如何使用PHP在S3存儲桶中創建文件夾
- 17. 區域之間的S3複製
- 18. 如何將圖片從文件夾複製到應用程序文件夾窗口存儲應用程序
- 19. 如何在導軌中使用Todo應用程序的「X天/時間到期」?
- 20. 在火花中重複使用s3存儲桶之前,如何正確移除/清除s3存儲桶?
- 21. 如何使用存儲在文本文件中的python程序?
- 22. 如何在應用程序中存儲文件
- 23. 在一個應用程序中使用OneDrive來存儲文件
- 24. 在Unity中的Amazon S3存儲桶之間傳輸文件
- 25. 在iOS應用程序中從S3存儲桶中刪除文件(Swift)
- 26. 在應用程序之間導航android
- 27. 如何保護兩個導軌(在heroku上)應用程序之間的通信?
- 28. 如何跨導軌應用程序重複使用模型和控制器
- 29. 無法在不同應用程序池中的應用程序之間共享獨立的存儲文件
- 30. 如何重用導軌應用程序
我可以將參數傳遞給s3.copy(...)來指定新文件的權限嗎? – deb 2010-08-12 19:30:52