amazon-web-services - 限制亚马逊 s3 下载

标签 amazon-web-services amazon-s3

我正在开发一个 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/

相关文章:

amazon-web-services - Boto3 错误 : The AWS Access Key Id you provided does not exist in our records

amazon-web-services - 无法到达 erlang 端口映射器 - Couchbase 错误

git - 将 git 标签部署到 Amazon Elastic Beanstalk

amazon-web-services - 资源 arn :aws:cloudformation:us-east-1:aws:transform 的权限问题

python - 如何使用 django-storages 在 AWS S3 存储桶中创建文件夹?

javascript - nodejs如何从aws s3存储桶获取JSON而不是Buffer

amazon-web-services - 如何在 CloudWatch 控制面板模板中使用参数

swift - AWS S3 图片上传

java - AWS使用aws java sdk配置获取

php - 如何通过 POST 将文件上传到 Amazon S3 存储桶子文件夹?