【发布时间】: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