2014-04-20 150 views
4

我正在開發一個iOS應用程序,它將上傳小視頻到亞馬遜s3。視頻將公開,用戶可以分享每個視頻的URL。我擔心流式傳輸成本(例如,如果視頻病毒傳播)。每GB帶寬約爲0.12美元,這可能會很快變得昂貴。限制亞馬遜s3下載

我想對每個視頻實施某種下載限制來防止這種情況。一旦視頻每月下載一定次數,視頻就不再公開,無法下載。

我查看了各種文檔,並沒有找到一個很好的方法來實現這一點。我找到的唯一潛在解決方案是定期下拉我的s3存儲桶的日誌文件,並使用該數據確定某些視頻已下載了多少次。這是我最好的選擇,還是有更好的方法?

謝謝!

回答

0

你可以做到這一點,但需要你在你的一端做一些編碼才能使它工作。

方法1將啓用詳細S3日誌統計,然後編寫代碼來分析這些日誌文件,並通過文件確定何時已達到極限,然後在文件撤銷的許可,以防止其被服務任何更多。

這裏是如何啓用詳細S3日誌記錄信息:

http://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html

比較簡單,但或許有點不雅和你運行的準備,因爲在日誌中的固有延遲超過你的極限風險可用性和處理日誌的時間延遲 - 所以可能需要20分鐘到1小時或更長時間才能購買,一旦達到限制,但是在應用程序有足夠的信息來實現它之前。

方法2,這海事組織更優雅一點,無疑將EC2實例(或實例)在iOS應用和S3之間 - iOS應用使得以EC2實例的請求時,它查找了實時統計(它已經積累了自己,也許已經成爲dynamodb或rds),然後返回一個s3 url到合適的視頻,或者嚮應用程序返回超限錯誤。使用這種方法,不需要撤消s3權限,因爲ec2實例充當交通警察,並且可以實時啓用/禁用特定文件的訪問權限 - 您還可以輕鬆添加實時報告/通知容量使用這種方法來讓你知道什麼時候文件或文件發生病毒,如果這是有用的。

+0

感謝您的詳細解答!不幸的是,方法2不適用於我們的用例,因爲視頻網址將公開並可從任何地方訪問,而不僅僅是應用。因此,每次觀看視頻時,我們都無法通知終端。方法1是我心目中的,但我同意它遠非理想。 – Dimitar08

+0

**更新**:AWS現在(實際上已經有一段時間了)改進了度量功能 - 稱爲「CloudWatch」。涵蓋此帖的一個非常簡單的用法:http://docs.aws.amazon.com/AmazonS3/latest/user-guide/configure-metrics.html – ymz