Я создал иерархию в S3 через консоль управления AWS S3. Если я запустил следующий код, чтобы перечислить ведро:
AmazonS3 s3 = new AmazonS3Client(CRED);
ListObjectsRequest lor = new ListObjectsRequest()
.withBucketName("myBucket")
.withPrefix("code/");
ObjectListing objectListing = s3.listObjects(lor);
for (S3ObjectSummary summary: objectListing.getObjectSummaries()) {
System.out.println(summary.getKey());
}
Я получаю:
code/
code/03000000-0001-0000-0000-000000000000/
code/03000000-0001-0000-0000-000000000000/special.js
code/03000000-0001-0000-0000-000000000000/test.js
code/03000000-0002-0000-0000-000000000000/
Именно это я и ожидал. Если я добавлю разделитель, так что я только перечисляю содержимое непосредственно под "code/", я теперь не получаю никаких вспомогательных "каталогов".
Измените строку выше (добавьте с конца в конец) в:
ListObjectsRequest lor = new ListObjectsRequest().withBucketName("myBucket")
.withPrefix("code/")
.withDelimiter("/");
И теперь я получаю только:
code/
Я знаю, что у S3 нет "каталогов", вместо этого ограничены ключи, но это поведение кажется странным? Как бы я перечислил, что находится только под "кодом"?