Lee*_*fin 0 ruby amazon-s3 amazon-web-services
在AWS S3中,我有一个名为 的存储桶my-bucket
,我正在使用AWS Ruby SDK来访问我的存储桶。
在my-bucket
我在S3中有以下目录结构(我知道它在S3中不称为“目录”,只是为了展示这个想法):
my-bucket/
customers/
products/
- data1.txt
- data2.txt
...
Run Code Online (Sandbox Code Playgroud)
我想检查my-bucket/customers/products
AWS Ruby SDK 是否存在,我尝试了以下代码:
s3 = Aws::S3::Resource.new
bucket = s3.bucket("my-bucket")
result = bucket.object("customers/products").exists?
Run Code Online (Sandbox Code Playgroud)
但是result
,false
即使我在 S3 中有该目录,我哪里错了?
那是因为“客户/产品”并不作为对象存在。它只是某些确实存在的对象的前缀。你说:
我知道它在S3中不被称为“目录”
然而,它不仅仅是 S3 中目录的不同术语。S3 中根本不存在目录(或文件夹)。只有带有键的对象。它就像一个单一的平面目录,其中的文件名可以包含斜杠字符。
为了方便起见,大多数 S3 浏览应用程序会将键名称中的斜杠解释为“目录”,并以文件系统等分层方式显示对象,但这些目录/文件夹实际上并不存在于 S3 中。
正如另一个答案中所指出的,最好的选择是检查是否存在包含该前缀的任何对象。
归档时间: |
|
查看次数: |
916 次 |
最近记录: |