Amazon web services 如何在S3中限制用户上传

Amazon web services 如何在S3中限制用户上传,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我正在写一个将在AWS上运行的应用程序。它包含用户上传的图像和视频,我想将这些数据存储在S3中。我想知道如何防止一个用户上传千兆字节的数据,因为我会为此付费。我可以: 限制单个文件上传大小(比如50MB,因为视频是允许的) 限制文件上传量(比如1000,只是一个任意数字) 但如果有人愿意,他可以开几个账户,把我的仓库装满垃圾。我还可以在每次上传之前检查我的存储桶大小,并且仅在存储桶容量

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

  • 限制单个文件上传大小(比如50MB,因为视频是允许的)
  • 限制文件上传量(比如1000,只是一个任意数字)
但如果有人愿意,他可以开几个账户,把我的仓库装满垃圾。我还可以在每次上传之前检查我的存储桶大小,并且仅在存储桶容量<50GB时上传。但是这些计算对于一些简单的上传来说是非常昂贵的

我是否应该切换到另一个可以设置限制的存储服务? 还是有一个共同的方法来解决我的问题?
或者我应该信任我的用户吗?

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

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