java - amazon s3 生成链接的最长过期时间是多少?

标签 java amazon-s3

我尝试将到期日期设置为 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/

相关文章:

java - JFrame 大小不正确

java - 如何使用 jets3t 访问 S3?

amazon-s3 - 未经身份验证的认知角色用户的 Amazon S3 存储桶权限

php - 无法将 S3 与 Laravel 5.4 一起使用

java - 动态更新 JLabel 会导致 GUI 扭曲 - 在调整窗口大小后有效

java - Android SAXParser,解析成数组并获取子节点

java - 动态更新 fragment 调用

java - 在 Java 中使用 .compareTo() 时如何使 .equals() 对称

php - 如何使用 Php 将我的 Android 应用程序连接到 Amazon RDS MySQL 数据库?

hadoop - 运行 MR 作业时出现 "Unable to verify integrity of data"