Je voulais montrer une liste de tous les fichiers dans un dossier s3 afin de pouvoir obtenir toutes les dates de dernière modification afin de déterminer quels fichiers ont été modifiés.
J'ai essayé d'utiliser objects.with_prefix ('Folder1'), il me donne une liste complète mais contient également la clé Folder1.1
Je ne sais pas si je devais utiliser un délimiteur mais je ne trouvais rien comment utiliser un délimiteur dans aws sdk.
Merci beaucoup d'avance!
J'utilise la gemme 'aws-sdk'
Voici la structure de mon seau -Folder1 -Fichier1 -Fichier2 -Folder.1.1
Voici mon code
bucket = s3.buckets[bucket_name]
data = bucket.objects.with_prefix('Folder1/')
data.each do |object|
puts "#{object.key}\t#{object.last_modified}";
end
Réponse trop tardive mais mieux que jamais.
Tu peux faire
s3_bucket.objects.with_prefix('folder_name').collect(&:key)
Selon la documentation officielle ici
Vous pouvez utiliser ce petit morceau de code pour obtenir la liste des fichiers d'un dossier spécifique.
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)
Actuellement, je suis aussi coincé avec ce problème. Jusqu'ici, la solution consiste à récupérer tous les objets et à les filtrer plus tard:
data = bucket.objects(bucketname, prefix: 'Folder1')
data_without_folders = data.select { |obj| !(obj.key =~ /\/$/) }
Pour le délimiteur, il vous suffit de le passer dans bucket.objects call comme
data = bucket.objects(bucketname, prefix: 'prefix', delimiter: 'delimiter')
Si une meilleure solution est disponible, je vous le ferai savoir.
https://docs.aws.Amazon.com/sdk-for-Ruby/v3/api/Aws/S3/Client.html#list_objects_v2-instance_method
SDK V3 a l'option de préfixe pour le client!
resp = client.list_objects_v2({
bucket: "BucketName", # required
prefix: "FolderName",
})