我的问题
我有一个公共 S3 存储桶,它用作我发送给同事和客户的大文件 (GB) 的存储解决方案。这些文件会在几周后自动删除。
此设置的问题是,如果有人启动 DDOS 并大量下载我的链接之一,我可能会遭受巨额费用。我最终可能会支付巨额的出口网络费用,我想避免这种情况。
一种解决方案可能是每当有人下载对象时触发 Lambda 函数,并为该对象增加一个 DynamoDB 计数器。如果计数器超过一个合理的阈值(例如,50 次下载),Lambda 函数会将文件设为私有以避免进一步的费用。
我的问题
如何配置 Lambda 函数以在有人从特定 S3 存储桶请求文件时触发?
与其将它们公开供任何人下载,我会将它们设为私有,并且仅将预签名的 URL分发给您的同事和客户。
您可以创建一个简单的门户,您的客户可以在其中登录并获得一个指向 S3 对象的预签名链接,该链接会在一小时内到期。如果他们需要再次下载,他们可以随时获得新链接。这将使您可以完全控制和审计谁可以下载您的 S3 对象,而不会冒巨额出口费用的风险。
看看这个:https ://aws.nz/best-practice/s3-presigned-url/
希望有帮助:)
正如@MLu 提到的,您可以使用预签名的 URL。你也可以这样做: