我正在尝试使用AWS S3 cli列出具有给定前缀的对象。但是,对于看似相同的文件夹结构,有时会返回不同的结果。
好的,这是命令#1
aws s3api list-objects --bucket b --prefix 38d2f2e0-8091-11e9-aaa9-03fd73386354/raw
38d2f2e0-8091-11e9-aaa9-03fd73386354/raw/Pogonocherus_hispidus_Max.1001.png
38d2f2e0-8091-11e9-aaa9-03fd73386354/raw/Pogonocherus_hispidus_Max.mtl
38d2f2e0-8091-11e9-aaa9-03fd73386354/raw/Pogonocherus_hispidus_Max.obj
这里#2
aws s3api list-objects --bucket b --prefix 5d5c3abe-1a95-4e92-a03d-11fbf37d7851/raw
5d5c3abe-1a95-4e92-a03d-11fbf37d7851/raw/
5d5c3abe-1a95-4e92-a03d-11fbf37d7851/raw/Pogonocherus_hispidus_Max.1001.png
5d5c3abe-1a95-4e92-a03d-11fbf37d7851/raw/Pogonocherus_hispidus_Max.mtl
5d5c3abe-1a95-4e92-a03d-11fbf37d7851/raw/Pogonocherus_hispidus_Max.obj
我不知道为什么要这么做。理想情况下,我希望输出始终看起来像#1。
这是怎么回事?
答案 0 :(得分:2)
两个列表之间的区别是raw/
子文件夹对象在第二个列表中存在。使用S3,无需在将对象写入该文件夹之前创建文件夹。并且,当您创建诸如folder1/folder2/image.jpg
之类的对象时,S3不会创建folder1/folder2/
结构。它只是写对象。
因此,您正在使用的某些过程是在5d5c3abe-1a95-4e92-a03d-11fbf37d7851/raw/
处故意创建一个对象来表示raw/
子文件夹。通常不需要创建此文件夹,但是某些客户端可以。如您所见,在没有raw/
子文件夹的第一个示例中,一切正常。
因此,请查看是否可以确定填充S3的方式上的某些差异,这些差异可能导致创建uuid/raw/
子文件夹。