Ruby aws-sdk - “.exists?”说文件不存在,即使我在桶中看到它

时间:2016-01-14 21:44:58

标签: ruby-on-rails ruby amazon-s3 aws-sdk

我整个下午都在检查是否存在上传到AWS S3的文件。我使用Ruby On Rails和名为aws-sdk的宝石,v2

首先 - 文件存在于存储桶中,它位于此处:

test_bucket/users/10/file_test.pdf

没有错字,这是确切的路径。此外,桶+凭证已正确设置。

以下是我尝试检查文件是否存在的方法:

config = {region: 'us-west-1', bucket: AWS_S3_CONFIG['bucket'], key: AWS_S3_CONFIG['access_key_id'], secret: AWS_S3_CONFIG['secret_access_key']}
Aws.config.update({region: config[:region], 
                   credentials: Aws::Credentials.new(config[:key], config[:secret]),
                   :s3 => { :region => 'us-east-1' }})
bucket = Aws::S3::Resource.new.bucket(config[:bucket])

puts bucket.object("file_test.pdf").exists?   

输出始终为false

我也尝试了puts bucket.object("test_bucket/users/10/file_test.pdf").exists?,但仍然是false

此外,我尝试在AWS S3仪表板中公开该文件,但没有成功,仍为false。单击生成的链接时,该文件可见。

但问题是当我使用aws-sdk检查文件是否存在时,输出仍为false

我做错了什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

您需要传递对象的完整路径(不包括存储桶名称) - users/10/file_test.pdf