如何使 S3 上生成的下载 link 过期

How can I expire a generated download link on S3

我知道我们可以为具有特定过期时间的对象生成下载密钥。但是如何手动使已经生成的密钥失效?

想象一下,我从成功下载文件的客户端收到确认,所以我想使生成的密钥无效。

您似乎指的是 Pre-Signed URL,它授予 time-limited 对 Amazon S3 中私有对象的访问权限。

pre-signed URL 使用来自访问密钥的凭据, 有权访问该对象。 URL 然后使用密钥的散列版本签名以验证请求。它实际上是在说 "I approve this request until this timestamp."

无法使 pre-signed URL. 无效,但是,由于批准与身份相关联,您可以使该身份的权限无效访问对象,这将使 pre-signed URL 无效。它实际上是在说 "That's great that you authorize the request, but you are no longer authorized to access it yourself, so you can't authorize anybody else, either!"

示例:

  • IAM 用户 User-A 有权访问私有对象
  • User-A 为对象
  • 生成一个pre-signed URL
  • pre-signedURL作品
  • User-A 的权限已被撤销,因此他们不再有权访问该对象
  • pre-signed URL 不再有效

这不一定适合您的 "download only once" use-case。为此,您确实需要通过应用程序发送请求和下载,而不是依赖 Amazon S3 来执行 "once-only" 规则。