我有一个Lambda函数,它将文件写入S3,然后将signed-url返回给该文件。在我的角度应用程序中,此值被接收并立即转到,以便从S3下载文件。下载文件后,我希望它从S3中删除。
我知道我可以从Angular应用程序中触发删除,但我真的希望删除不依赖于客户端,以便我知道它实际发生了。处理这个问题的最佳方法是什么?
我认为在返回URL后15-30秒删除文件可能非常安全,但我不确定使用Lambda触发此操作的最佳方法。
我正在考虑使用setInterval,但这看起来很混乱,因为我让Lambda运行的时间比它需要运行的时间长得多。
是否有任何不太复杂的清洁选项?
我已经在S3存储桶上过期,但您可以设置的最短间隔为1天。这比我想保留物品要长得多。
答案 0 :(得分:1)
执行此操作的最佳方法是使用S3事件,这些事件可以在下载后直接触发Lambda。如果需要额外的延迟,您还可以使S3事件首先进入SQS队列(设置为将消息传递延迟x时间),然后让SQS队列触发新的lambda函数以进行删除。