如何知道已使用s3放置对象请求的签名URL,并且文件已完全上传?

问题描述

我正在开发一个Web应用程序,用户在其中将文件上传到s3中,

  1. 请求签名的URL从AWS lambda函数上传
  2. 使用签名的URL将文件上传到s3存储桶中。

  1. 上传的s3文件URL保存到数据库中。

对于第三步,我需要知道用户是否已针对给定的签名URL将文件完全上传到s3存储桶中,以便可以将该URL存储在该特定用户MysqL数据库中。

解决方法

您可以将目标存储桶与S3事件相关联。上传完成后,您将使用URL更新数据库。

有两种选择:

  1. 接受文件上传数据并将其保存为状态待定的数据库;
  2. 发送回signedUrl作为响应;
  3. 文件由前端上传;
  4. S3触发发送到Lambda函数的事件
  5. 使用上传状态和正确的URL更新数据库

如果您不需要保存任何元数据,只需保存URL,就可以使用signedUrl进行回答,而无需在第一步中更新数据库。

您可以在S3 official docs中找到有关此策略的更多信息。