Ruby aws-sdk - “.exists?”说该文件不存在,即使我在存储桶中看到它
Ruby aws-sdk - ".exists?" says the file doesn't exist even though I see it in the bucket
我整个下午都在检查是否存在上传到 AWS S3 的文件。我在 Rails 上使用 Ruby 并且 gem 称为 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 仪表板中创建文件 public,但没有成功,仍然是 false
。单击生成的 link.
时可以看到该文件
但问题是,当我使用 aws-sdk
检查文件是否存在时,输出仍然是 false
。
我做错了什么?
谢谢。
您需要传递对象的完整路径(不包括存储桶名称)- users/10/file_test.pdf
我整个下午都在检查是否存在上传到 AWS S3 的文件。我在 Rails 上使用 Ruby 并且 gem 称为 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 仪表板中创建文件 public,但没有成功,仍然是 false
。单击生成的 link.
但问题是,当我使用 aws-sdk
检查文件是否存在时,输出仍然是 false
。
我做错了什么?
谢谢。
您需要传递对象的完整路径(不包括存储桶名称)- users/10/file_test.pdf