Ответ 1
Слишком поздно ответить, но лучше, чем никогда.
Вы можете сделать
s3_bucket.objects.with_prefix('folder_name').collect(&:key)
Согласно официальной документации здесь
Мне хотелось показать список всех файлов в папке s3, чтобы я мог получить все последние измененные даты, чтобы я мог определить, какие файлы были изменены.
Я попытался использовать objects.with_prefix ('Folder1'), он дал мне полный список, но также содержит клавишу Folder1.1
Я не знаю, нужно ли мне использовать разделитель, но я не мог найти ничего, как использовать разделитель в aws sdk.
Большое спасибо заранее!
Я использую 'aws-sdk' gem
Вот моя конструкция ковша -Folder1 -File1 -File2 -Folder.1.1
Вот мой код
bucket = s3.buckets[bucket_name]
data = bucket.objects.with_prefix('Folder1/')
data.each do |object|
puts "#{object.key}\t#{object.last_modified}";
end
Слишком поздно ответить, но лучше, чем никогда.
Вы можете сделать
s3_bucket.objects.with_prefix('folder_name').collect(&:key)
Согласно официальной документации здесь
Вы можете использовать этот небольшой фрагмент кода для получения списка файлов для определенной папки.
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)
В настоящее время я также придерживаюсь этой проблемы. До сих пор решение заключалось в том, чтобы получить все объекты и отфильтровать их позже:
data = bucket.objects(bucketname, prefix: 'Folder1')
data_without_folders = data.select { |obj| !(obj.key =~ /\/$/) }
Для разделителя вам просто нужно передать его в bucket.objects, например:
data = bucket.objects(bucketname, prefix: 'prefix', delimiter: 'delimiter')
Если доступно лучшее решение, я дам вам знать.