2016-04-14 6 views
1

Ich versuche, Objekte aus AWS S3 mit bestimmten Wörtern in einer Ruby-App zu erhalten. Es gibt viele Dateien mit "lektion_id_" als Teil des Schlüssels, und ich würde gerne alle Dateien mit diesem Schlüsselwort herunterladen. Aber wenn ich mit 'lection_id_ *' suche, heißt das AWS :: S3 :: Errors :: NoSuchKey No Solcher Schlüssel.So erhalten Sie Objekte aus AWS S3 mit unvollständigem Schlüssel mit Ruby-App

Ich möchte alle Dateien einschließlich dieses Schlüsselwort effizient herunterladen. Bitte geben Sie mir Feedback, wie Sie "Keywords" anstelle von perfekten "Schlüssel" verwenden.

obj = S3_BUCKET.objects['lesson_id_*'] 

begin 

File.open("name", 'wb') do |file| 
obj.read do |chunk| 
file.write(chunk) 
end 
end 

rescue 
end 
+1

http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/ObjectCollection.html Sie nach etwas suchen, schlägt vor, prüfen, die aussieht wie 'bucket.objects.with_prefix ('lection_id _')' ... Sie wollen nicht das '*', sicher - Sie geben ein String-Präfix, keine Wildcard-Unterstützung. –

Antwort

1

Sie könnten so etwas tun. Holen Sie alle Objekte und überprüfen Sie sie, bevor Sie sie herunterladen. Anschließend können Sie einen regulären Ausdruck verwenden, oder was auch immer Sie mögen die

require 'aws-sdk' 

s3 = Aws::S3::Resource.new(region: 'us-west-2') 

bucket = s3.bucket('your-bucket') 

bucket.objects.limit(1000).each do |item| 
    if item.key.start_with?('lesson_id_') 
     obj = bucket.object(item.key) 
     obj.get(response_target: item.key) 
    end 
end 
Verwandte Themen