我正在开发一个 iOS 应用程序,它将小视频上传到亚马逊 s3。然后视频将是公开的,用户将能够为每个视频共享一个 URL。我担心流媒体成本(例如,如果视频要传播开来)。每 GB 带宽约 0.12 美元,这很快就会变得昂贵。
我想为每个视频实现某种下载限制以防止这种情况发生。一旦某个视频每月下载了一定次数,它就不再公开并且无法下载。
我查看了各种文档,但没有找到实现此目的的好方法。我发现的唯一可能的解决方案是定期拉取我的 s3 存储桶的日志文件,并使用该数据来确定某些视频的下载次数。这是我最好的选择,还是有更好的方法?
谢谢!
最佳答案
您可以这样做,但需要您在自己的一端进行一些编码才能使其工作。
方法一 将启用详细的 s3 日志记录统计信息,然后编写代码来解析这些日志文件并在达到限制时按文件确定,然后撤销对该文件的权限以防止其继续提供服务。
以下是有关如何启用详细 s3 日志记录的信息:
http://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html
相对简单,但可能有点不优雅,并且您确实存在超出限制的风险,因为日志可用的固有延迟和处理日志的延迟 - 因此可能需要 20 分钟到一个小时或更长时间一旦达到限制,但在您的应用程序有足够的信息来实现它之前购买。
方法二 ,哪个更优雅一点,imo 会在你的 ios 应用程序和 s3 之间放置一个 ec2 实例(或多个实例) - ios 应用程序向 ec2 实例发出请求,它查找实时统计信息(它一直在累积自己,也许进入 dynamodb 或 rds),然后将 s3 url 返回到相应的视频,或向应用程序返回超限错误。使用此方法无需撤销 s3 权限,因为 ec2 实例充当交通警察,并且可以实时启用/禁用对特定文件的访问 - 您还可以轻松添加实时报告/通知使用此方法让您知道文件或文件何时传播病毒是否有用。
关于amazon-web-services - 限制亚马逊 s3 下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23186289/