Thom Nichols


Technology is evolution outside the gene pool

Upload to S3 with Groovy

So, uploading to S3 is not always as simple as it should be. Here's a completely self-contained Groovy script that can upload files to your S3 bucket, plus provide a signed link to access the uploaded file.

The script uses Groovy's Grab macro to download the JetS3t library which does the heavy lifting.

/* Script to manipulate S3 objects. 
 * @author Tom Nichols
 * @see
 * @see

import org.jets3t.service.model.*

bucketName =  'CHANGEME'
accessKey =  'CHANGEME'
secretKey =  'CHANGEME'
folder =   'CHANGEME' // optional folder name before the file

public putS3() {}

def login = new AWSCredentials( accessKey, secretKey )
def expiry = new GregorianCalendar( 2011,0,1 ).time
def s3 = new RestS3Service( login ) 
def bucket = new S3Bucket( bucketName )

args.each { fileName ->
 def key = "$folder/$fileName"
// s3.deleteObject bucketName, key 
 def s3obj = new S3Object( bucket, new File( fileName ) )
 s3obj.key = key 
 println "\nUploading $fileName to $bucketName/$key"
 s3obj = s3.putObject( bucket, s3obj )
 def link = s3.createSignedGetUrl( bucketName, key, login, expiry, false )
 println "$fileName : $link"

Just change the bucket name, key and folder at the top of the script, or optionally you could pull them in via system properties or environment variables. Enjoy.

Category: AWS Groovy Java S3