Skip to content

Instantly share code, notes, and snippets.

@satendrakumar
Created January 12, 2018 06:03
Show Gist options
  • Save satendrakumar/a72c824dfa6515cdb9d8fbde0773a961 to your computer and use it in GitHub Desktop.
Save satendrakumar/a72c824dfa6515cdb9d8fbde0773a961 to your computer and use it in GitHub Desktop.
Scala S3 Api
import java.io._
import com.amazonaws.ClientConfiguration
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain
import com.amazonaws.services.s3.AmazonS3Client
import com.amazonaws.services.s3.model._
object S3Api {
private val config = new ClientConfiguration() //in milliseconds
config.setConnectionTimeout(5 * 1000)
config.setMaxErrorRetry(5)
private val s3client = new AmazonS3Client(new DefaultAWSCredentialsProviderChain, config)
def upload(bucketName: String, key: String, stream: InputStream, length: Long): PutObjectResult = {
val metadata = new ObjectMetadata()
metadata.setContentLength(length)
s3client.putObject(new PutObjectRequest(bucketName, key, stream, metadata))
}
def upload(bucketName: String, key: String, stream: InputStream, encoding: String, length: Long): PutObjectResult = {
val metadata = new ObjectMetadata()
metadata.setContentLength(length)
metadata.setContentEncoding(encoding)
s3client.putObject(new PutObjectRequest(bucketName, key, stream, metadata))
}
def upload(bucketName: String, key: String, file: File): PutObjectResult =
s3client.putObject(new PutObjectRequest(bucketName, key, file))
def download(bucketName: String, key: String, destinationFile: String): ObjectMetadata =
s3client.getObject(new GetObjectRequest(bucketName, key), new File(destinationFile))
}
// sbt dependency => "com.amazonaws" % "aws-java-sdk" % "1.8.0"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment