Ich verwende den unten erwähnten Code, um eine Liste aller Dateinamen von s3 bucket zu erhalten. Ich habe zwei Eimer in s3. Für einen der unteren Bucket-Code gibt alle Dateinamen zurück (mehr als 1000), aber der gleiche Code gibt nur 1000 Dateinamen für einen anderen Bucket. Ich verstehe einfach nicht, was passiert. Warum läuft der gleiche Code nur für einen Bucket und nicht für andere?
Auch mein Bucket hat die Hierarchiestruktur folder / filename.jpg.
%Vor%Für Scala-Entwickler ist es hier eine rekursive Funktion, einen vollständigen Scan und eine Karte des Inhalts eines AmazonS3-Buckets mit dem offiziellen AWS SDK für Java
%Vor% Um die obige curried map()
-Funktion aufzurufen, übergeben Sie einfach das bereits erstellte (und ordnungsgemäß initialisierte) AmazonS3Client-Objekt (siehe das offizielle AWS SDK für Java-API-Referenz ), der Bucket-Name und der Präfixname in der ersten Parameterliste. Übergeben Sie auch die Funktion f()
, die angewendet werden soll, um jede Objektzusammenfassung in der zweiten Parameterliste abzubilden.
Zum Beispiel
%Vor% gibt die vollständige Liste der (key, owner)
-Tupel in diesem Bucket / Präfix
oder
%Vor%wie Sie normalerweise von Monaden in der funktionalen Programmierung
kommen würdenIch habe nur den obigen Code geändert, um addAll anstelle der für -Schleife zu verwenden, um ein Objekt einzeln hinzuzufügen, und es hat für mich funktioniert. Codeänderungen sind wie folgt:
%Vor%Danach können Sie einfach einen Iterater über die Liste keyList verwenden.