AWS S3列表对象不一致

时间:2019-05-27 17:58:04

标签: amazon-web-services amazon-s3

我正在尝试使用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。

这是怎么回事?

1 个答案:

答案 0 :(得分:2)

两个列表之间的区别是raw/子文件夹对象在第二个列表中存在。使用S3,无需在将对象写入该文件夹之前创建文件夹。并且,当您创建诸如folder1/folder2/image.jpg之类的对象时,S3不会创建folder1/folder2/结构。它只是写对象。

因此,您正在使用的某些过程是在5d5c3abe-1a95-4e92-a03d-11fbf37d7851/raw/处故意创建一个对象来表示raw/子文件夹。通常不需要创建此文件夹,但是某些客户端可以。如您所见,在没有raw/子文件夹的第一个示例中,一切正常。

因此,请查看是否可以确定填充S3的方式上的某些差异,这些差异可能导致创建uuid/raw/子文件夹。