Ruby S3为不存在的项创建签名URL

Ruby S3为不存在的项创建签名URL,ruby,amazon-web-services,amazon-s3,Ruby,Amazon Web Services,Amazon S3,正在为不存在的项创建S3预签名URL。这是正常的行为吗?我更希望在创建链接时知道该项是否不存在,而不是将用户发送到错误页面。显然,我可以在创建链接之前检查项目是否存在,但我想知道我是否做错了什么。是的,这是正常行为。预签名URL只是URL的本地计算和签名。它与S3服务完全没有交互 如果要在为某个对象生成预签名URL之前确保该对象存在,则应head该对象 注意:您可以使用预先签名的URL上载新对象,这些对象在生成URL时显然还不存在。您可能还希望使用预先签名的URL来下载尚未存在的对象,但在以后的

正在为不存在的项创建S3预签名URL。这是正常的行为吗?我更希望在创建链接时知道该项是否不存在,而不是将用户发送到错误页面。显然,我可以在创建链接之前检查项目是否存在,但我想知道我是否做错了什么。

是的,这是正常行为。预签名URL只是URL的本地计算和签名。它与S3服务完全没有交互

如果要在为某个对象生成预签名URL之前确保该对象存在,则应
head
该对象


注意:您可以使用预先签名的URL上载新对象,这些对象在生成URL时显然还不存在。您可能还希望使用预先签名的URL来下载尚未存在的对象,但在以后的某个日期会下载这些对象(尽管我承认这可能不是一个常见的用例)。

当我们没有代码可查看时,很难说您是否做错了什么。请参阅“”以及链接页面和“”。只需将预先签名的URL视为一张签名纸条,上面写着“我允许您下载具有此名称的对象,直到过期为止”。当实际请求发送到S3时,S3将验证预先签名的URL,有效地检查您的签名与文件中的签名,然后如果请求有效,则允许该请求。是否在任何地方记录了该请求,或者只是我们知道的如此明显?我不知道有任何与此相关的特定文档,但是,如果您将这个预签名的URL视为/usr/james/area51/proof.xml的文件路径,那么您可以看到,无论是在引用时还是在使用(尝试)访问该文件时,都不能保证该文件存在。