Ruby AWS::S3::S3Object.find始终返回NoSuchKey异常
我试图在获取图像的url之前测试图像是否存在,因为如果我只是使用“url_for”方法,它不会在资源不可用的情况下抛出错误 但是,我可以从的url_获取有效的url,但是我使用具有完全相同参数的“find”方法获取NoSuchKey异常。这花的时间太长了。这真的不管用吗 更新:切换到AWS-S3,现在使用以下代码: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
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,我在上面贴了一些代码给你。