Search code examples
scalaamazon-web-servicesamazon-s3bucket

List files on S3


I'm getting frustrated by not finding any good explanation on how to list all files in a S3 bucket.

I have this bucket with about 20 images on. All I want to do is to list them. Someone says "just use the S3.list-method". But without any special library there is no S3.list-method. I have a S3.get-method, which I dont get to work. Arggh, would appreciate if someone told me how to simply get an list of all files(filenames) from an S3 bucket.

val S3files = S3.get(bucketName: String, path: Option[String], prefix: Option[String], delimiter: Option[String])

returns an Future[Response]

I dont know how to use this S3.get. What would be the easiest way to list all files in my S3 bucket?

Answers much appreciated!


Solution

  • Using the library here:

    https://github.com/Rhinofly/play-s3

    You should be able to do something like this:

    import concurrent.ExecutionContext.Implicits._
    
    val bucket = S3("bucketName")
    val result = bucket.list
    result.map {
      case Left(error) => throw new Exception("Error: " + x)
      case Right(list) => 
        list.foreach {
            case BucketItem(name, isVirtual) => //...
        }
    }
    

    You'll have to tweak this a bit in regards to your credentials, but the examples show how to do that.