我正在撰写将在AWS上运行的应用程序。它包含用户上传,如图像和视频,我想在S3中存储该数据。我想知道如何防止一个用户上传数十亿字节的数据,因为我会为此付费。我可以:
但如果有人想要,他可以制作几个帐户并用垃圾填满我的存储空间。我还可以在每次上传之前检查我的存储桶大小,并且仅在我的存储桶容量<例如50GB。但是这些计算对于一些简单的上传来说非常昂贵。
我是否应该更改为可以设置限制的其他存储服务? 或者有一种解决我的问题的常用方法吗? 或者我应该相信我的用户?
答案 0 :(得分:1)
在不详细了解您的用例的情况下,很难推荐解决方案。没有一个解决方案,但是解决方案的组合:
PutObject
。它的工作方式是你的桶中的PutObject
将触发lambda函数,该函数接收有关对象的一些信息,包括大小和IP地址。您可以编写一些简单的Python / node.js / Java应用程序来跟踪和存储某些数据库中的大小和IP(微观Redis
或DynamoDB
)。如果您从特定IP上看到过多上传或大量上传,请生成IAM
策略以动态阻止该IP,将其附加到您的存储桶并向您发送SES
电子邮件。BucketSize
或ObjectCount
超出限制,您可以CloudWatch发送提醒