我尝试将到期日期设置为 2100 年,但它说它无效。 还是有可能以某种方式使其永久化?
最佳答案
对于使用 S3 签名版本 2 签名的 URL,时间限制似乎是 2038 年 Unix 纪元结束,但对于签名版本 4,时间限制是 7 天,因为 V4 中的签名 key 本身有一个最长有效期为 7 天。
如果您不熟悉 V2 和 V4 之间的区别,区分它们的一个简单方法是 V2 URL 包含 &Expires=
而 V4 URL 使用 &X-Amz-Expires=
。
但重要的是,如果您停用用于签署 URL 的 IAM 用户凭据(访问 key / secret ),则使用任一算法的签名都会立即失效...您应该在某个时候计划这样做,因为凭据的轮换被认为是一种最佳做法(或者,如果不是那样,那么因为您的凭据有一天可能会被泄露,或者被怀疑已被泄露)。
因此,不应将 S3 对象的签名 URL 视为永久性的。
如果不需要公开对象,那么下一个最佳方法是让您的应用程序(或您控制的任何类型的 HTTP 端点)验证用户下载对象的权限(可能基于您应用程序的 cookie),然后生成一个短暂的签名 URL 并返回一个重定向。浏览器应立即跟随它并获取对象,但不缓存重定向,因为您已指示原始 URL 应用于后续请求,并带有 302
响应代码。
来自您的应用程序的 HTTP 响应中值得注意的 header 如下所示:
HTTP/1.1 302 Found
Location: https://...generated-signed-url-here...
关于java - amazon s3 生成链接的最长过期时间是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35483723/