2016-04-14 4 views
1

Rubyアプリケーションで特定の単語を使用してAWS S3からオブジェクトを取得しようとしています。キーの一部として「lesson_id_」を持つファイルが数多くあり、このキーワードを含むすべてのファイルをダウンロードしたいと考えています。しかし、「lesson_id_ *」で検索すると、AWS :: S3 :: Errors :: NoSuchKey No Such Keyと表示されます。AWS S3からRubyアプリケーションで不完全なキーでオブジェクトを取得する方法

このキーワードを含むすべてのファイルを効率的にダウンロードしたいと考えています。完璧な "キー"の代わりに "キーワード"の使い方をフィードバックしてください。

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

に見える何かを探しているチェックしたいものは何でも'bucket.objects.with_prefix( 'lesson_id _')'のようなものです...あなたは '*'は必要ありません。文字列接頭辞を指定しています。ワイルドカードはサポートしていません。 –

答えて

1

このようなことが可能です。ダウンロードする前に、すべてのオブジェクトを取得して確認してください。その後、正規表現を使用するか、http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/ObjectCollection.htmlがあなたを示唆

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 
関連する問題