【问题标题】:AWS Lambda: Delete S3 File After DownloadedAWS Lambda:下载后删除 S3 文件
【发布时间】:2017-05-25 10:34:14
【问题描述】:

我有一个 Lambda 函数,它将文件写入 S3,然后将签名 URL 返回到该文件。在我的 Angular 应用程序中,接收到该值并立即转到以从 S3 下载文件。下载文件后,我希望将其从 S3 中删除。

我知道我可以从 Angular 应用程序触发删除,但我真的希望删除不依赖于客户端,以便我知道它确实发生了。处理这个问题的最佳方法是什么?

我认为在返回 URL 后 15-30 秒删除文件可能真的很安全,但我不确定使用 Lambda 触发此操作的最佳方法。

我正在考虑使用 setInterval,但这似乎很麻烦,因为我让 Lambda 运行的时间比它需要运行的时间长得多。

是否有任何不太复杂的更简洁的选项?

我的 S3 存储桶已经过期,但您可以设置的最短时间间隔是 1 天。这比我想保留该项目的时间要长得多。

【问题讨论】:

  • 我不认为在 Lambda 中有一个好方法可以做到这一点,例如下载文件所需的时间将超过 15-30 秒。为什么保留文件 1 天不是您的选择?作为一种解决方法,您可以使用一项服务来删除早于 1 小时的文件,或者如果需要,您可以将此类代码合并到您的 Lambda 中
  • 或者您可以利用 CloudTrail 来检测相关的 GetObject API 调用并对其采取行动。这是一个示例:docs.aws.amazon.com/lambda/latest/dg/…
  • @VsevolodGoloviznin 文件内容非常敏感。我持有数据的时间越少,我面临的风险就越小。我将检查使用服务删除 1 小时前的所有内容的可能性。这是个好主意。
  • @jarmod CloudTrail 看起来是另一个不错的可能性,也在考虑这个选项。谢谢!
  • 我对云跟踪的一个担忧是事件何时被触发 - 文件何时被下载,或何时发出获取文件的请求,因此值得检查它何时发生!

标签: javascript node.js amazon-web-services amazon-s3 lambda


【解决方案1】:

执行此操作的最佳方法是使用可在下载后直接触发 Lambda 的 S3 事件。如果需要额外的延迟,您还可以让 S3 事件先进入 SQS 队列(设置将消息传递延迟 x 时间),然后让 SQS 队列触发新的 lambda 函数进行删除。

【讨论】:

    猜你喜欢
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2021-12-19
    • 2021-10-01
    • 2015-04-09
    • 1970-01-01
    • 2018-12-01
    相关资源
    最近更新 更多