我目前正在開發一個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. 在兩個應用程序之間存儲和管理文件?
- 2. 如何在SVN存儲庫之間複製文件夾?
- 3. 如何在兩個應用程序之間共享存儲文件?
- 4. 如何使用Amazon AWS PHP SDK在區域之間複製S3對象?
- 5. 在兩個s3存儲桶之間複製拋出404錯誤
- 6. 在S3上使用CollectionFS存儲文件
- 7. 如何在應用程序之間備份和恢復數據存儲
- 8. 用「雲」存儲在同一應用程序的用戶之間傳輸文件
- 9. 區域之間的S3複製
- 10. 如何使用PHP在S3存儲桶中創建文件夾
- 11. 如何在導軌中使用Todo應用程序的「X天/時間到期」?
- 12. 如何將圖片從文件夾複製到應用程序文件夾窗口存儲應用程序
- 13. 如何使用存儲在文本文件中的python程序?
- 14. 在一個應用程序中使用OneDrive來存儲文件
- 15. 如何在應用程序中存儲文件
- 16. 在Unity中的Amazon S3存儲桶之間傳輸文件
- 17. 在iOS應用程序中從S3存儲桶中刪除文件(Swift)
- 18. 如何保護兩個導軌(在heroku上)應用程序之間的通信?
- 19. 如何跨導軌應用程序重複使用模型和控制器
- 20. 無法在不同應用程序池中的應用程序之間共享獨立的存儲文件
- 21. 如何重用導軌應用程序
- 22. 在j2ee應用程序中的站點之間複製數據
- 23. 使用複製命令從Amazon S3到Redshift的數據加載 - 如何在Redshift中存儲複製時間
- 24. 在導軌應用程序中顯示響應時間
- 25. Android限制複製,粘貼在應用程序之間查看
- 26. 將文件複製到WP7中的應用程序隔離存儲(如iOS中)
- 27. 如何在Windows應用程序中使用C#存儲doc,xls,pdf,image.xml文件?
- 28. Android - 在內部存儲器之間複製文件
- 29. 存儲在應用程序二進制
- 30. 在Django 1.2.5中使用靜態文件應用程序的S3存儲靜態文件可能嗎?
我可以將參數傳遞給s3.copy(...)來指定新文件的權限嗎? – deb 2010-08-12 19:30:52