Ich habe eine Hierarchie in S3 über die AWS S3 Management Console erstellt. Wenn ich den folgenden Code ausführen, um die Eimer zur Liste:Amazon S3 Auflistung "Verzeichnisse"
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());
}
ich:
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/
das ist genau das, was ich erwarten würde. Wenn ich aber ein Trennzeichen hinzufüge, so dass ich den Inhalt nur direkt unter "code /" aufliste, bekomme ich jetzt keine Unterverzeichnisse zurück.
Ändern Sie Zeile oben (add withDelimiter() am Ende) zu:
ListObjectsRequest lor = new ListObjectsRequest().withBucketName("myBucket")
.withPrefix("code/")
.withDelimiter("/");
Und ich bekomme jetzt nur:
code/
Ich weiß, dass S3 nicht über "Verzeichnisse", stattdessen abgegrenzte Schlüssel, aber dieses Verhalten scheint seltsam? Wie würde ich aufführen, was direkt unter "Code" steht?
hast du versucht 'mitPrefix (" code ")' (den Schrägstrich weglassen) – Thilo
Ja, das bringt mir nichts. Pro AWS-Doco müssen Sie das nachgestellte Trennzeichen an das Präfix anhängen. – Kong
Diese Antwort ist vollständiger http://stackoverflow.com/questions/14653694/listing-just-the-sub-folders-in-an-s3-bucket – samthebest