Ruby AWS::S3::S3Object.find始终返回NoSuchKey异常

Ruby AWS::S3::S3Object.find始终返回NoSuchKey异常,ruby,amazon-s3,Ruby,Amazon S3,我试图在获取图像的url之前测试图像是否存在,因为如果我只是使用“url_for”方法,它不会在资源不可用的情况下抛出错误 但是,我可以从的url_获取有效的url,但是我使用具有完全相同参数的“find”方法获取NoSuchKey异常。这花的时间太长了。这真的不管用吗 更新:切换到AWS-S3,现在使用以下代码: bucket = "my_amazon_bucket" key = "my_amazon_key" begin s3 = RightAws::S3Interface.new(A

我试图在获取图像的url之前测试图像是否存在,因为如果我只是使用“url_for”方法,它不会在资源不可用的情况下抛出错误

但是,我可以从的url_获取有效的url,但是我使用具有完全相同参数的“find”方法获取NoSuchKey异常。这花的时间太长了。这真的不管用吗

更新:切换到AWS-S3,现在使用以下代码:

bucket = "my_amazon_bucket"
key = "my_amazon_key"

begin
  s3 = RightAws::S3Interface.new(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
  # This will trigger the exception if this image doesn't exist.
  s3.head(bucket,key)
  retval = s3.get_link(bucket,key)
rescue RightAws::AwsError => bang
  puts bang.message + ": #{bucket} : #{key}"
end

我与“aws-s3”宝石搏斗。看起来很老,没有人支持。我在“S3”创业板上玩得很开心:

其他人则使用“right_aws”


谢谢Seph,我昨天确实切换到了右侧aws,并且能够找到答案。但我可以看到它的一个缺点是,不能使用同一个对象来检查密钥的存在性和创建非公共url。他们的“get_link”方法,就像它在aws-s3中的类似方法一样,不会抛出异常,因为它只是使用本地算法来创建url。但是,在同一个接口中有一个“head”方法,如果找不到键,它将抛出异常,而不需要检索整个对象的开销,所以这就是我使用的方法。感谢您接受(我的第一个)。我将研究使用您的策略来检查S3中是否存在文件,而无需检索文件的开销。谢谢你的提示!不客气,我很荣幸,seph,我在上面贴了一些代码给你。