使用 aws-sdk gem 检查 AWS S3 路径上是否存在文件

Ekt*_*rma 5 rubygems ruby-on-rails amazon-s3 amazon-web-services aws-sdk

我正在尝试使用 ruby​​ on rails 应用程序中的 aws-sdk gem(版本 2)检查 AWS S3 上是否存在特定的 pdf 文件。

我已经建立了 AWS 连接,目前正在使用exists?方法:

puts @bucket.objects(prefix:"path/sample_100.pdf").exists?
Run Code Online (Sandbox Code Playgroud)

在运行上述语句时,我得到以下无方法错误:

undefined method 'exists?' for Aws::Resources::Collection
Run Code Online (Sandbox Code Playgroud)

检查了一些文件,但没有太大帮助。有没有其他方法可以实现相同的目标?

提前致谢

Bru*_*eis 1

我自己不是 Ruby 开发人员,但我也许可以提出一些建议。

检查 Amazon S3 中是否存在对象的常用方法是使用HEAD 对象操作。基本上,如果对象存在,它会返回元数据(但不返回内容);如果不存在,则返回 404 错误。它类似于 GET Object,但没有对象的内容。

我刚刚在 AWS SDK for Ruby API Reference 中查找并找到了这个方法:

http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Client.html#head_object-instance_method

看看这个,它可能就是您正在寻找的。

  • 非常感谢您的见解。我基本上是尝试在 AWS S3 存储桶上搜索 pdf 文件,如果存在,则对其执行进一步的操作。**存在吗?**方法对我有用。我只是将 aws 文件路径放在一个变量中,然后对其调用存在方法。执行时返回 true。`file = "path/sample_100.pdf "` `@bucket.objects(file).exists?` (2认同)