2013-10-15 3 views
28

Ich wollte eine Liste aller Dateien in einem S3-Ordner anzeigen, damit ich alle zuletzt geänderten Daten abrufen kann, damit ich bestimmen kann, welche Dateien hat wurde geändert.Wie alle Dateien in einem S3-Ordner mit AWS-SDK gem in Ruby auf Schienen aufgelistet werden

ich versucht, mit objects.with_prefix (‚Folder1‘) ist es mir eine vollständige Liste geben, sondern auch enthalten Folder1.1 Schlüssel

Ich weiß nicht, ob ich Trennzeichen verwendet werden benötigt, aber ich konnte nichts finden wie man delimiter in aws sdk benutzt.

Vielen Dank im Voraus!

Ich verwende 'aws-sdk' gem

Hier ist mein Eimer Struktur -Folder1 -File1 -File2 -Folder.1.1

Hier ist mein Code

bucket = s3.buckets[bucket_name] 
data = bucket.objects.with_prefix('Folder1/') 
data.each do |object| 
    puts "#{object.key}\t#{object.last_modified}"; 
end 
+0

haben Sie eine Lösung dafür bekommen? – r15

Antwort

2

Momentan bin ich auch mit diesem Problem festgefahren. Bisher Lösung ist es, alle Objekte zu holen und sie später zu filtern:

data = bucket.objects(bucketname, prefix: 'Folder1') 

data_without_folders = data.select { |obj| !(obj.key =~ /\/$/) } 

Für Begrenzer, Sie müssen es nur passieren in bucket.objects wie nennen:

data = bucket.objects(bucketname, prefix: 'prefix', delimiter: 'delimiter') 

Wenn bessere Lösung verfügbar ist , Ich werde Ihnen Bescheid geben.

24

Zu spät Antwort, aber besser als nie.

Sie können here

+26

Mit Version 2 ist es: 's3_bucket.objects (Präfix: 'Ordner_Name'). Collect (&: Schlüssel)' – Gpx

8

Nach offizieller Dokumentation

s3_bucket.objects.with_prefix('folder_name').collect(&:key) 

tun können Sie dieses kleine Stück Code verwenden, um für einen bestimmten Ordner Liste der Dateien zu bekommen.

s3 = Aws::S3::Resource.new(region: 'ap-southeast-1', access_key_id: ENV['AWS_ACCESS_KEY_ID'], secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']) 
data_files = s3.bucket(bucket_name).objects(prefix: 'prefix/', delimiter: 'delimiter').collect(&:key) 
+0

Was als Trennzeichen angeben, wenn Sie alle Schlüssel mit einem Präfix erhalten möchten. Ich möchte nicht mit irgendetwas abgrenzen. –

Verwandte Themen