如何知道使用了 s3 put-object 请求的已签名 URL 并且文件已完全上传?

How to know that the signed URL for s3 put-object request was used and file was uploaded completely?

我正在开发一个网络应用程序,用户可以通过

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

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

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

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

更新数据库

有两种选择:

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

如果你不需要保存任何元数据,只需要url,你可以用signedUrl回答,不要在第一步更新数据库。

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