Ruby 如何检查AWS S3bucket中是否存在资源

Ruby 如何检查AWS S3bucket中是否存在资源,ruby,aws-sdk,Ruby,Aws Sdk,我有一个AWS S3存储桶,其中有多个文件夹 s3 = AWS::S3.new bucket = s3.buckets['test'] bucket.exists? => true 假设我有一个名为demo/index.html的资源,我将如何检查此资源是否存在于此bucket中 也许我的问题太简单了,但我找不到一个合适的答案。感谢您的帮助。#是否存在?⇒ 布尔值 如果对象存在于S3中,则返回true 谢谢@Arsen,我应该投反对票。我只是在“存在”方法中遗漏了“?”。非常感谢您的友

我有一个AWS S3存储桶,其中有多个文件夹

s3 = AWS::S3.new
bucket =  s3.buckets['test']
bucket.exists? => true
假设我有一个名为
demo/index.html
的资源,我将如何检查此资源是否存在于
此bucket

也许我的问题太简单了,但我找不到一个合适的答案。感谢您的帮助。

#是否存在?⇒ 布尔值

如果对象存在于S3中,则返回true


谢谢@Arsen,我应该投反对票。我只是在“存在”方法中遗漏了“?”。非常感谢您的友好回复。这里有一些意外行为-如果对象存在,
存在?
将返回
true
。但否则它将引发一个
Aws::S3::Errors::probled
错误!您可以挽救错误并将其解释为
false
。SMHArsen,我在github回购协议上发布了一个问题,AWS团队做出了回应。
# new object, does not exist yet
obj = bucket.objects["my-text-object"]
# no instruction file present
begin
  bucket.objects['my-text-object.instruction'].exists? #=> false
rescue
  # exists? can raise an error `Aws::S3::Errors::Forbidden`
end


# store the encryption materials in the instruction file
# instead of obj#metadata
obj.write("MY TEXT",
  :encryption_key => MY_KEY,
  :encryption_materials_location => :instruction_file)

begin
  bucket.objects['my-text-object.instruction'].exists? #=> true
rescue
  # exists? can raise an error `Aws::S3::Errors::Forbidden`
end