2016-04-14 14 views
1

Bir Ruby uygulamasında belirli bir sözcükle AWS S3'ten nesne almaya çalışıyorum. Anahtarın bir parçası olarak "lesson_id_" olan birçok dosya var ve bu anahtar kelime de dahil olmak üzere tüm dosyaları indirmeyi çok isterim. Ama eğer 'lesson_id_ *' ile arama yaparsam, AWS :: S3 :: Hatalar :: NoSuchKey No Key.Ruby uygulamasıyla tamamlanmamış anahtarla AWS S3'ten nesneler nasıl alınır

Bu anahtar sözcük de dahil olmak üzere tüm dosyaları verimli bir şekilde indirmek istiyorum. Lütfen mükemmel "anahtar" yerine "anahtar kelimeler" in nasıl kullanılacağına dair geri bildirim verin.

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

görünüyor şey arıyor kontrol etmek gibi her türlü '' bucket.objects.with_prefix ('lesson_id _') 'gibi ...' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' –

cevap

1

Böyle bir şey yapabilirsiniz. Tüm nesneleri alın ve bunları indirmeden önce kontrol edin. Daha sonra bir regex kullanabilir veya http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/ObjectCollection.html sizi anlaşılacağı

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