【问题标题】:How to limit user uploads in S3如何在 S3 中限制用户上传
【发布时间】:2016-03-09 09:32:28
【问题描述】:

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

  • 限制单个文件上传大小(比如说 50MB,因为允许视频)
  • 限制文件上传数量(比如说 1000,只是一个任意数字)

但是,如果有人愿意,他可以创建多个帐户,然后用垃圾填满我的存储空间。我还可以在每次上传之前检查我的存储桶大小,并且仅在我的存储桶容量

我应该改用另一个可以设置限制的存储服务吗? 还是有解决我问题的通用方法? 还是我应该只信任我的用户?

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    如果不详细了解您的用例,很难推荐解决方案。没有一种解决方案,而是多种解决方案的组合:

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

    【讨论】:

      猜你喜欢
      • 2015-01-10
      • 1970-01-01
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      相关资源
      最近更新 更多