我正在开发一款iOS应用,可以将小视频上传到亚马逊s3。视频将公开,用户可以分享每个视频的网址。我担心流媒体费用(例如视频会传播病毒)。每GB带宽约为0.12美元,这很快就会变得昂贵。
我想为每个视频实施某种下载限制以防止这种情况发生。一旦视频每月下载一定次数,它就不再公开,无法下载。
我查看了各种文档,但找不到实现这一目标的好方法。我发现的唯一可能的解决方案是定期下载我的s3存储桶的日志文件,并使用该数据来确定某些视频的下载次数。这是我最好的选择,还是有更好的方法?
谢谢!
答案 0 :(得分:0)
你可以这样做,但需要你在你的头上做一些编码才能使它发挥作用。
方法1 将启用详细的s3日志记录统计信息,然后编写代码来解析这些日志文件,并在达到限制时通过文件确定,然后撤消对文件的权限以防止它不再被提供。
以下是有关如何启用详细s3日志记录的信息:
http://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html
相对简单,但可能有点不优雅,并且由于日志的固有延迟以及处理日志的延迟,您确实冒着超出限制的风险 - 因此可能需要20分钟到一小时或更长时间一旦达到限制,但在您的应用程序有足够的信息来实现它之前,时间可能会被购买。
方法2 ,imo更优雅会在您的ios应用程序和s3之间放置一个ec2实例(或实例) - ios应用程序向ec2实例发出请求,它查找真实时间统计(它一直在累积,可能是在dynamodb或rds中),然后将s3 url返回到相应的视频或向应用程序返回超限错误。使用此方法无需撤消s3权限,因为ec2实例充当交通警察,并且可以实时启用/禁用对特定文件的访问 - 您还可以轻松添加实时报告/通知使用此方法的容量可以让您知道文件或文件何时传播病毒(如果有用)。