2017-01-18 5 views
0

Ich versuche, alle Dateipfade in einem Eimer zu bekommen. Mit der Funktion listobjects kann ich das erreichen. Aber es gibt ein Dateipfadproblem.Amazon S3 - Kopieren eingefügten Dateipfad Problem

Betrachten Sie dies ist die Ordnerstruktur

SampleBucket -> A (Stammordner) -> B (Unterordner) -> c (Unterordner innerhalb B)

Was ich brauche, ist

http://SampleBucket.s3.amazonaws.com/A/

http://SampleBucket.s3.amazonaws.com/A/B/

http://SampleBucket.s3.amazonaws.com/A/B/C

Was ich bekomme ist

http://SampleBucket.s3.amazonaws.com/A/

http://SampleBucket.s3.amazonaws.com/A/B/C

Dies geschah, als ich "A" Ordner & Kopie eingefügt "B" Ordner von meinem lokalen Laufwerk zu Cloud-Beere erstellt

Dies ist mein Code, um alle Ordner & Dateien in einem Eimer zu bekommen.

public List<S3ObjectSummary> getObjectslistFromFolder(String bucketName, String folderKey) {  
AWSCredentials awsCreds = new BasicAWSCredentials(accessKey, secretKey); 
AmazonS3 s3client = new AmazonS3Client(awsCreds); 
ObjectListing current = s3client.listObjects(bucketName,folderKey); 
List<S3ObjectSummary> keyList = current.getObjectSummaries(); 
current = s3client.listNextBatchOfObjects(current); 
while (current.isTruncated()){ 
    keyList.addAll(current.getObjectSummaries()); 
    current = s3client.listNextBatchOfObjects(current); 
} 
keyList.addAll(current.getObjectSummaries()); 
return keyList; 

}

Antwort

0

scheint Wolke Beere zwei Objekte erstellt. a/und a/b/c /. Ich kann es mit diesen cli Befehlen reproduzieren:

$ aws s3api put-object --bucket testBucket --key "a/" 
$ aws s3api put-object --bucket testBucket --key "a/b/c/" 
$ aws s3api list-objects --bucket testBucket --prefix a --output json | jq -r .Contents[].Key 
a/ 
a/b/c/ 

In AWS S3-Konsole sehen sie aus wie normale Unterordner, a, b und c. Sie sollten wissen, dass S3 nicht wirklich Unterordner hat, das/ist nur ein Teil der Schlüssel.

+0

Ich habe meine Frage bearbeitet. Bitte überprüfen. Ich habe den B-Ordner im Stammordner nicht gelöscht. In einem Ordner eingefügt. – Hari

+0

ok aktualisiert die Antwort. – at0mzk

1

S3 hat keine Ordner. Es hat grundsätzlich Schlüssel => Objekt-Zuordnungen + die Fähigkeit, am Schlüsselpräfix zu entsprechen.

Wenn Sie für A suchen/betrachten Sie alle Schlüssel, die einen Präfix haben, die mit A/

beginnt

Die Illusion des Ordners ist in der Regel gebaut Client-Seite durch die Software, die Sie verwenden (Moltebeeren) oder wenn Ihre Anwendungslogik davon abhängt, können Sie auch die Schlüssel analysieren, die zurückkommen, um die Ordner lokal neu zu erstellen.

Auch hier kennt S3 nur Schlüssel und kann Präfixabgleich auf Schlüsseln vornehmen.