diff --git a/s3/s3.go b/s3/s3.go
index 64c319e2db0a1d735b8bb5a227e8794babd803a3..11c9c7a0da980a223a99e29423b37c17d27fe6db 100644
--- a/s3/s3.go
+++ b/s3/s3.go
@@ -30,7 +30,7 @@ type S3UploadResponse struct {
 type S3UploadSettings struct {
 	MimeType              MIMEType
 	RetrieveSignedUrl     bool
-	ExpiryDuration        *time.Duration
+	ExpiryDuration        *time.Duration // Used to set expiry datetime of download links. NB: does not affect deletion of object from S3 bucket.
 	AddContentDisposition bool
 	FileName              string
 }
@@ -112,6 +112,12 @@ func (s SessionWithHelpers) UploadWithSettings(data []byte, bucket, fileName str
 		Body:        bytes.NewReader(data),
 	}
 
+	// This sets the expiry date of the download link, not the deletion date of the object in the bucket.
+	if settings.ExpiryDuration != nil {
+		expiry := time.Now().Add(*settings.ExpiryDuration)
+		putInput.Expires = &expiry
+	}
+
 	_, err := s.S3Session.PutObject(putInput)
 	if err != nil {
 		return "", err