【问题标题】:Limiting amazon s3 downloads限制亚马逊 s3 下载
【发布时间】:2014-06-04 20:41:22
【问题描述】:

我正在开发一个 iOS 应用程序,该应用程序会将小视频上传到亚马逊 s3。然后视频将公开,用户将能够分享每个视频的 URL。我担心流媒体成本(例如,如果视频要传播开来)。每 GB 带宽约 0.12 美元,这很快就会变得昂贵。

我想对每个视频实施某种下载限制以防止这种情况发生。每月下载一定次数的视频后,该视频将不再公开且无法下载。

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

谢谢!

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    您可以这样做,但需要您自己进行一些编码才能使其正常工作。

    方法 1 是启用详细的 s3 日志记录统计信息,然后编写代码来解析这些日志文件并在达到限制时通过文件确定,然后撤销对该文件的权限以防止不再提供服务。

    以下是有关如何启用详细 s3 日志记录的信息:

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

    相对简单,但可能有点不雅,而且您确实冒着超出限制的风险,因为日志可用的固有延迟和处理日志的延迟 - 所以可能需要 20 分钟到一个小时或更长时间一旦达到限制,但在您的应用程序有足够的信息来实现它之前,时间可能会被浪费。

    方法 2,更优雅的 imo 会在您的 ios 应用程序和 s3 之间放置一个 ec2 实例(或多个实例) - ios 应用程序向 ec2 实例发出请求,它会查找真实的-time 统计信息(它一直在累积,可能是在 dynamodb 或 rds 中),然后要么将 s3 url 返回到相应的视频,要么向应用程序返回超限错误。使用此方法无需撤销 s3 权限,因为 ec2 实例充当交通警察,并且可以实时启用/禁用对特定文件的访问 - 您还可以轻松添加实时报告/通知容量使用这种方法让您知道文件或文件何时传播病毒是否有用。

    【讨论】:

    • 感谢您的详细解答!不幸的是,方法 2 不适用于我们的用例,因为视频 URL 将是公开的,并且可以从任何地方访问,而不仅仅是应用程序。因此,我们无法在每次观看视频时通知端点。方法 1 是我的想法,但我同意它远非理想。
    • 更新:AWS 现在(实际上……有一段时间)改进了指标能力 - 称为 CloudWatch。涵盖这篇文章的一个非常简单的用法:docs.aws.amazon.com/AmazonS3/latest/user-guide/…
    猜你喜欢
    • 1970-01-01
    • 2018-01-22
    • 2010-10-20
    • 1970-01-01
    • 2011-08-25
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多