如何设置 Amazon S3 存储桶预签名 URL 过期时间(从当前日期算起 1 年内)

2024-03-16

图像上传到 Amazon S3 存储桶。我需要得到一个预签名 URL来自亚马逊服务器。我还想设置该 URL 的到期时间。这最多只需要 17 天。但我无法设置最多 1 年的到期时间。

      Calendar cal = Calendar.getInstance();
        cal.add(Calendar.YEAR, 1);
        Date nextYear = cal.getTime();

    GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(
                "bucketName", "accessname");
        generatePresignedUrlRequest.setMethod(HttpMethod.GET);
        generatePresignedUrlRequest
                .setExpiration(nextYear);
        URL url = s3client
                .generatePresignedUrl(generatePresignedUrlRequest);
        bucketURL = url.toString();

您不会“从服务器”“获取”预签名 URL。签名计算在客户端完成。预签名 URL 实际上是在您的计算机上计算的,而不是由服务计算的。

如果您使用的是当前的 SDK,则它可能使用的是 Signature V4。如果签名的 URL 包含X-Amz-Signature=那么这就证实了V4。较旧的 V2 算法仅使用Signature=在签名的 URL 中。

如果您的签名确实是 V4,那么您会看到一个故意的限制:

预签名 URL 的有效期最长为 7 天,因为您在签名计算中使用的签名密钥的有效期最长为 7 天。

http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html

如果您已经在使用 V2,则应该能够对过期时间最晚为 2038 年的 URL 进行签名。如果您正在使用 V4,则可以通过切换到使用 V2 来解决该限制,但这并不可取。较新的 S3 区域(例如法兰克福)不支持 V2,如果您按照应有的方式轮换 AWS 访问密钥,最终的密钥失效也会使使用该密钥创建的任何签名失效。

大多数情况下,更正确的方法是在需要时生成签名 URL。如前所述,该操作不需要与 S3 服务交互,并且通常可以实时完成。

如果您需要授予特定用户对“直接链接”的访问权限,请考虑在应用程序中创建一个端点,可以在其中评估用户的凭据,此时您可以生成签名 URL 并使用 HTTP 重定向浏览器302回复。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置 Amazon S3 存储桶预签名 URL 过期时间(从当前日期算起 1 年内) 的相关文章

  • Java 中的 sscanf 等效项[重复]

    这个问题在这里已经有答案了 可能的重复 用于使用已知模式解析字符串中的值的 sscanf 的 Java 等效项是什么 https stackoverflow com questions 8430022 what is the java eq
  • 用于将字符串与预定义字符混合/混淆的简单算法

    我有一个字符串如下 它的长度是10 它代表基数 36 因此包含数字和大写字母 字符串的来源是数据库生成的序列 即从 1 及以上 正在转换为基数 36 我的问题是转换为base 36转换的结果也是连续 顺序的 例如 ID 1402 gt 00
  • Spring Boot“没有可用消息”错误(状态 = 404),

    我正在使用带有嵌入式 Tomcat 的 Spring Boot 当它启动时 它会登录到控制台 s w s m m a RequestMappingHandlerMapping 将 home 映射到公共 java lang String co
  • 为什么需要使用java.util.TimerTask的purge()?

    Timer cancel 取消任务 Timer purge 从此计时器的任务队列中删除所有已取消的任务 如果我不在这里使用 purge 会发生什么 当计时器的任务队列已满时会发生什么 除非您正在运行的计时器数量过多 否则实际计时器行为不会发
  • 访问 java jigsaw 模块中的资源文件[重复]

    这个问题在这里已经有答案了 我正在尝试从项目中的类访问 Eclipse 项目中的文件 我需要将该项目声明为 jigsaw 模块才能从其他项目访问它 但是通过这样做 我无法再访问项目中的 example png 等文件 这是我的项目结构 pr
  • 使用 Morphia 配置 Spring Boot?

    我不想利用 Spring DATA MongoDB 支持 我想利用名为 Morphia 的 MongoDB ORM https github com mongodb morphia https github com mongodb morp
  • Android 中的 ImageView 拖动限制

    我在布局中有一个 ImageView 并在 ImageView 上设置 OnTouchListener 来拖动 ImageView 它工作得很好 我的问题是如何防止将 ImageView 移动到布局范围之外 这是我的代码 活动类别 publ
  • Netflix Archaius 动态配置

    我正在将 Hystrix 集成到现有项目中 并且希望从 xml 文件中读取配置值 而不是使用配置管理器提供配置属性 当 xml 文件中的值更新时 我希望 Hystrix 配置在运行时更新 这是我遵循的指南 https github com
  • 想要从 beanIO 字段名称标签在 csv 中写入标题

    我想在 csv 文件中写入标题 因为我的文本文件不包含任何标题 所以我想从 beanIO 字段名称标签写入它 我有一个 beanIO 有两个流 一个用于读取 另一个用于写入 这是输入文件 文本输入 txt 1 约翰 露 BA xxx1萨姆
  • Spring Boot,使用 EhCache 进行缓存

    我需要在我的应用程序中缓存一些数据 我正在考虑使用 Ehcache 我有几个问题 Ehcache需要另外一台服务器吗 我需要其他客户端来使用 Ehcache 吗 Ehcache 如何与多个实例配合使用 是否有可能使用 Ehcache 创建类
  • 关于 mongodb java 驱动程序的困惑[重复]

    这个问题在这里已经有答案了 我是 MongoDB 的初学者 我正在使用 JAVA 驱动程序来使用它 我有以下代码 MongoClient client new MongoClient DB d client getDB world DBCo
  • 使用 Hibernate 作为 ORM 机制的 Web 应用程序中的 L1 和 L2 缓存有什么区别?

    我只想要一些有关使用 L1 缓存和 L2 缓存的标准用途的一般信息 我很好奇 因为我正在研究使用赤土陶器作为二级缓存的系统 并且我发现它也有一级缓存 L1 缓存是每个 Hibernate 会话都存在的缓存 并且该缓存不在线程之间共享 该缓存
  • 带有 CONTAINS 查询的PreparedStatement

    我有一个查询需要连续运行 28000 次 所以我认为使用准备好的语句可能是一个聪明的主意 这是我的查询 String requestWithFirstName SELECT SE ELEMENT ID SE LASTNAME SE FIRS
  • waitUntilObjectExists() Amazon S3 PHP SDK 方法,它到底是如何工作的?

    该函数是否会暂停 php 脚本 直到在 s3 服务器上找到该对象 我将它放在 foreach 循环中 一张一张地上传图像 找到对象后 我调用一个方法在本地删除图像 然后删除本地文件夹 如果为空 这是正确的处理方式吗 谢谢 foreach f
  • 无法渲染非字符串的属性,toString 返回:null SPRING MVC 中的错误

    我正在尝试按照本教程为我的 spring mvc 项目创建一个通用错误处理程序 http www mkyong com spring mvc spring mvc exceptionhandler example http www mkyo
  • 如何从 Java 类调用 Kotlin 类

    我需要将意图从 java 活动传递到 Kotlin 活动 Java活动ProfileActivity class Intent selectGameIntent new Intent ProfileActivity this kotlin
  • java POI XSSF 公式评估器

    我在保存新的 Excel 文件时遇到问题 我希望当它被保存时 公式会自行计算 但目前它只是返回 Excel 文件中的一个字符串 公式是正确的 我不知道到底要得到FormulaEvaluator上班 这是我输入返回字符串的公式的地方 data
  • OkHttp javax.net.ssl.SSLPeerUnverifiedException:主机名domain.com未验证

    我几天来一直在努力让它发挥作用 我正在尝试通过以下方式连接到我的服务器https带有自签名证书 我认为现在没有任何页面或示例是我未读过的 我做了什么 按照本教程创建了 bks 密钥库 http blog crazybob org 2010
  • ByteBuddy 变基、合成类型和 OSGi

    我为 byte buddy 开发了以下拦截器 public class SecurityInterceptor RuntimeType public static Object intercept SuperCall Callable su
  • 在同一项目上使用 Eclipse 和 NetBeans

    Eclipse 是一个非常棒的编辑器 我更喜欢使用它 但是缺少 Eclipse 的 GUI 设计工具 另一方面 NetBeans 非常适合 GUI 设计 在同一项目中使用 NetBeans 进行 GUI 设计和 Eclipse 进行其他所有

随机推荐

  • 如何在 OS X C 代码中创建异步计时器?

    所以这个问题实际上是 为什么 time h 在 OS X 和 Linux 上不一样 但是 我已经接受了这些分歧 为了在 Unix 系统上创建计时器 我遵循了本教程http www helsinki fi atk unix dec manua
  • WordPress:为特定插件管理页面加载自定义 CSS

    我正在学习 WordPress 我想为我的插件的特定管理页面加载自定义 CSS 我阅读了 WordPress Plugin API 并执行了如下操作 I ADD MY OPTION PAGES add action admin menu m
  • 迭代 socket.io v1 中的套接字? “......没有方法‘客户’”

    在我能够写出这样的东西之前 io sockets clients forEach function socket socket emit signal data 现在 我不能并且收到错误Object
  • 关于扩展 GAS 电子表格用途的问题

    I would like to offer the opportunity to view output from the same data in a spreadsheet TBA http glasier hk blazer scri
  • 本地化 IOS 按钮标签

    我使用本地化字符串来本地化 UI 元素 除了本地化按钮标题之外 一切正常 21 title 应该是本地化文本 不起作用 我认为这可能是由按钮状态引起的 forState UIControlStateNormal 标题可以通过视图状态设置 我
  • 为更多字段设置相同的属性

    我有两个或更多文本字段 我想对它们应用相同的属性 避免编写两次或多次相同的代码 这不起作用 form validate rules name surname required true minlength 3 maxlength 50 有任
  • Line3DCollection 多彩线条边缘呈“锯齿状”

    基于matplotlib 示例代码 http matplotlib org examples pylab examples multicolored line html我构建了一条彩色线条的 3D 版本 我正在 jupyter 笔记本中工作
  • Smullyan 数值机的解决方案

    在这里我建议找到 Smullyan 数值机的解决方案 此处定义 http heras gilsanz com manuel smullyan machines html 问题陈述 它们是接受数字列表作为输入 并根据输入模式遵循一些规则将其转
  • JavaScript 字符串替换与replaceAll

    ECMAScript 2021 添加了新的 String 函数replaceAll 很久以前 在一个不远的星系里 人们使用split join或正则表达式替换所有出现的字符串 https stackoverflow com question
  • 使用 POST 进行 jQuery 缓存

    虽然我在 jQuery AJAX Post 请求中设置了 cache false 但它不会添加额外的 randomg 字符串 这是因为 post 不缓存吗 感谢您的时间 RFC 2616 http www faqs org rfcs rfc
  • 将 TextField 限制为特定的数字范围 JavaFX?

    您好 我需要限制 TextField javaFX 的输入 不仅适用于整数 还适用于 1 19 之间的数字 例如 我应该允许输入 3 19 但不能输入 33 44 例如 在 JavaFX 中创建数字 TextField 的推荐方法是什么 h
  • 如何查看Linux线程的状态?

    如何使用代码而不是工具来检查 Linux 线程的状态 我想知道线程是否正在运行 被锁阻塞或因其他原因而休眠 我知道 Linux 工具 top 可以完成这项工作 但如何在我自己的代码中实现它 谢谢 我认为你应该详细研究 proc http l
  • 对函数体评估感到困惑

    我对以下行为感到困惑Function In 1 InlineCellInMessage Function expr DisplayForm Cell BoxData MakeBoxes expr StandardForm Input Hol
  • XSLT:将平面列表转变为层次结构

    我尝试了解 XSLT 2 0 中的分组功能 我的源文件是
  • Flash/ActionScript 3.0 中的 StackTrace

    我想在代码的任何函数中查看堆栈跟踪 因此我做了类似的事情来调用它并打印堆栈跟踪 public function PrintStackTrace try throw new Error StackTrace catch e Error tra
  • 合并两个多维数组并重新索引所有子数组

    我有两个数组 我想将这两个数组合并为单个数组 请查看下面的详细信息 第一个数组 Array 0 gt Array a gt 1 b gt 2 c gt 3 1 gt Array a gt 3 b gt 2 c gt 1 第二个数组 Arra
  • 我可以将 CSS3 与 XHTML 1.0 一起使用吗?

    我可以将 CSS3 属性与 XHTML 一起使用 还是仅与 HTML5 网页一起使用 HTML版本和CSS之间有关系吗 还是完全没有关系 Thanks 如果浏览器支持 CSS3 和 XHTML 1 0 则可以同时使用两者 这两个标准彼此之间
  • github“网络推送通知”如何工作?

    github 似乎在其 Web 界面上使用轮询服务器进行实时通知 live github com 看起来该技术既不是基于 Websocket 也不是 XHR 轮询 它是如何开发的 他们似乎使用 HTML5 服务器发送事件 一段时间后 我通过
  • 为什么暂存目录也称为 Index/Git Index?

    我对 Git 中的暂存目录 Git Index 的命名感到困惑 叫Index有什么特殊含义吗 为什么不直接称为Cache 或Temp目录以便我们更容易理解呢 对我来说 索引可以帮助我们更快地搜索内容 就像 DBMS 中的索引一样 它与暂存区
  • 如何设置 Amazon S3 存储桶预签名 URL 过期时间(从当前日期算起 1 年内)

    图像上传到 Amazon S3 存储桶 我需要得到一个预签名 URL来自亚马逊服务器 我还想设置该 URL 的到期时间 这最多只需要 17 天 但我无法设置最多 1 年的到期时间 Calendar cal Calendar getInsta