diff --git a/s3/s3.go b/s3/s3.go
index 9784db880c32a3062afa80d14554fb49fc4e04de..6cde7c0ff732325d145071704815419a488caefb 100644
--- a/s3/s3.go
+++ b/s3/s3.go
@@ -249,14 +249,14 @@ func (s SessionWithHelpers) GetObjectMetadata(bucket string, fileName string, is
 }
 
 // MoveObjectBucketToBucket - Move object from one S3 bucket to another
-func (s SessionWithHelpers) MoveObjectBucketToBucket(sourceBucket string, destinationBucket string, sourceFileName string, destinationFileName string, isDebug bool) error {
+func (s SessionWithHelpers) MoveObjectBucketToBucket(sourceBucket string, destinationBucket string, sourceFileName string, destinationFileName string, settings S3UploadSettings) error {
 
-	err := s.CopyObjectBucketToBucket(sourceBucket, destinationBucket, sourceFileName, destinationFileName, isDebug)
+	err := s.CopyObjectBucketToBucket(sourceBucket, destinationBucket, sourceFileName, destinationFileName, settings)
 	if err != nil {
 		return err
 	}
 
-	err = s.DeleteObjectFromBucket(sourceBucket, sourceFileName, isDebug)
+	err = s.DeleteObjectFromBucket(sourceBucket, sourceFileName)
 	if err != nil {
 		return err
 	}
@@ -265,7 +265,7 @@ func (s SessionWithHelpers) MoveObjectBucketToBucket(sourceBucket string, destin
 }
 
 // CopyObjectBucketToBucket - Copy an object from one S3 bucket to another
-func (s SessionWithHelpers) CopyObjectBucketToBucket(sourceBucket string, destinationBucket string, sourceFileName string, destinationFilename string, isDebug bool) error {
+func (s SessionWithHelpers) CopyObjectBucketToBucket(sourceBucket string, destinationBucket string, sourceFileName string, destinationFilename string, settings S3UploadSettings) error {
 	// copy the file
 	copySource := url.QueryEscape(sourceBucket + "/" + sourceFileName)
 	copyObjectInput := &s3.CopyObjectInput{
@@ -273,6 +273,12 @@ func (s SessionWithHelpers) CopyObjectBucketToBucket(sourceBucket string, destin
 		CopySource: aws.String(copySource),          // source path (ie: myBucket/myFile.csv)
 		Key:        aws.String(destinationFilename), // filename on destination
 	}
+
+	if settings.ExpiryDuration != nil {
+		expiry := time.Now().Add(*settings.ExpiryDuration)
+		copyObjectInput.Expires = &expiry
+	}
+
 	_, err := s.S3Session.CopyObject(copyObjectInput)
 	if err != nil {
 		return err
@@ -288,7 +294,7 @@ func (s SessionWithHelpers) CopyObjectBucketToBucket(sourceBucket string, destin
 }
 
 // DeleteObjectFromBucket - Delete an object from an S3 bucket
-func (s SessionWithHelpers) DeleteObjectFromBucket(bucket string, fileName string, isDebug bool) error {
+func (s SessionWithHelpers) DeleteObjectFromBucket(bucket string, fileName string) error {
 	// delete the file
 	deleteObjectInput := &s3.DeleteObjectInput{
 		Bucket: aws.String(bucket),