2016-09-03 1 views
1

In AWS S3, ich habe einen Eimer my-bucket genannt, mit AWS Ruby SDK, ich alle Elemente unter my-bucket von Ruby-Code auflisten:Liste alle unter einem bestimmten Schlüssel meiner Eimer AWS S3

require 'aws-sdk' 

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

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

# Show only the first 50 items 
bucket.objects.limit(50).each do |item| 
    puts "Name: #{item.key}" 
    puts "URL: #{item.presigned_url(:get)}" 
end 

Dies ist fein. Aber unter my-bucket Ich habe die folgende Dateistruktur in S3:

my-bucket/ 
    customers/ 
     products/ 
       - data1.txt 
       - data2.txt 
       ... 

Meine Fragen sind:

Q1. Mit AWS Ruby SDK, wie kann ich alle Artikel unter my-bucket/customers/products/ auflisten?

Q2. Wie kann ich z.B. my-bucket/customers/products/data3.txt existiert?

Antwort

3

Q1. Wie kann ich mit AWS Ruby SDK alle Artikel unter my-bucket/customers/products/auflisten?

bucket.objects({prefix: "customers/products/"})

Q2. Wie kann ich z.B. my-bucket/Kunden/Produkte/data3.txt existiert?

Verwenden Sie die S3-Objekt #exists? Methode wie:

bucket.objects["customers/products/data3.txt"].exists?

+0

Dank ist es möglich, Platzhalter für den 'data3.txt' Teil zu benutzen? Zum Beispiel möchte ich prüfen, ob eine Datei mit der Endung '.txt' unter' customers/products/'existiert. –

+0

Nein, Sie müssten die Liste aller Objekte mit diesem Präfix abrufen und dann die zurückgegebene Liste nach Objekten mit dem Suffix ".txt" durchsuchen. –

+0

Gut zu wissen, danke! –