我的问题

我的问题

我的问题

我有一个公共 S3 存储桶,用于存储我发送给同事和客户的大文件 (GB)。这些文件会在几周后自动删除。

这种设置的问题在于,如果有人发起 DDOS 攻击并大量下载我的某个链接,我可能会遭受巨额费用。我最终可能会支付巨额出口网络费用,我想避免这种情况。

一种解决方案是,每当有人下载​​对象时触发 Lambda 函数,并增加该对象的 DynamoDB 计数器。如果计数器超过合理阈值(例如,50 次下载),Lambda 函数将使文件保密,以避免进一步收费。

我的问题

如何配置当有人从特定 S3 存储桶请求文件时触发的 Lambda 函数?

答案1

正如@MLu提到的,您可以使用预签名的URL。您还可以执行以下操作:

  1. 使用类似的项目这个创建一个快速网站(在 S3 上运行),允许用户注册和登录
  2. 然后使用登录时获取的 JWT 令牌调用 Lambda 函数。Lambda 函数将对用户进行身份验证并生成指向 S3 对象的预签名 URL。可以找到一个很好的例子这里
  3. 用户可以使用预签名的url下载对象。

答案2

而不是让它们公开任何人下载我会将它们设为私人,并且只分发预签名 URL您的同事和客户。

您可以创建一个简单的门户,您的客户登录后即可获得一个预签名的 S3 对象链接,该链接将在一小时内过期。如果他们需要再次下载,他们可以随时获得新链接。这将使您能够完全控制和审核谁可以下载您的 S3 对象,而无需承担巨额出口费用的风险。

看一下这个:https://aws.nz/best-practice/s3-presigned-url/

希望有帮助:)

相关内容