如何限制S3中的用户上传

时间:2016-03-09 09:32:28

标签: amazon-web-services amazon-s3

我正在撰写将在AWS上运行的应用程序。它包含用户上传,如图像和视频,我想在S3中存储该数据。我想知道如何防止一个用户上传数十亿字节的数据,因为我会为此付费。我可以:

  • 限制单个文件上传大小(假设允许视频为50MB)
  • 限制文件上传量(让我们说1000,只是一个任意数字)

但如果有人想要,他可以制作几个帐户并用垃圾填满我的存储空间。我还可以在每次上传之前检查我的存储桶大小,并且仅在我的存储桶容量<例如50GB。但是这些计算对于一些简单的上传来说非常昂贵。

我是否应该更改为可以设置限制的其他存储服务? 或者有一种解决我的问题的常用方法吗? 或者我应该相信我的用户?

1 个答案:

答案 0 :(得分:1)

在不详细了解您的用例的情况下,很难推荐解决方案。没有一个解决方案,但是解决方案的组合:

  • 将您的存储桶设为私有 - 不要让任何人直接上传,而是为每个请求生成一个签名的S3网址,并且过期时间很短(例如5分钟),然后让用户使用签名网址上传他/她的图片< / LI>
  • 使用AWS Lambda(非常便宜)监控您的广告资源PutObject。它的工作方式是你的桶中的PutObject将触发lambda函数,该函数接收有关对象的一些信息,包括大小和IP地址。您可以编写一些简单的Python / node.js / Java应用程序来跟踪和存储某些数据库中的大小和IP(微观RedisDynamoDB)。如果您从特定IP上看到过多上传或大量上传,请生成IAM策略以动态阻止该IP,将其附加到您的存储桶并向您发送SES电子邮件。
  • 使用CloudWatch - 如果BucketSizeObjectCount超出限制,您可以CloudWatch发送提醒
  • 虽然我没有使用过,但您可以设置AWS Billing Alerts,以便在结算超过预设阈值时尽快知道,而不是在结算周期结束时感到惊讶