限制亚马逊S3下载

Dim*_*r08 6 amazon-s3 amazon-web-services

我正在使用一个iOS应用,该应用会将小视频上传到Amazon s3。然后,视频将是公开的,用户将可以共享每个视频的URL。我担心流媒体的成本(例如,如果视频要传播病毒)。每GB带宽约$ 0.12,这很快就会变得昂贵。

我想对每个视频实施某种下载限制,以防止出现这种情况。视频每月被下载一定次数后,就不再公开并且无法下载。

我浏览了各种文档,但没有找到实现此目的的好方法。我发现的唯一可能的解决方案是定期拉出s3存储桶的日志文件,并使用该数据来确定已下载某些视频的次数。这是我最好的选择,还是有更好的方法?

谢谢!

E.J*_*nan 2

您可以执行此操作,但需要您自行编写一些代码才能使其正常工作。

方法 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 实例充当交通警察,并且可以实时启用/禁用对特定文件的访问 - 您还可以轻松添加实时报告/通知使用此方法的能力可以让您知道某个文件或文件何时病毒式传播(如果这有用)。