public CompleteMultipartUploadResult onCompletion(List<PartETag> partETags) {
        return s3.completeMultipartUpload(
            new CompleteMultipartUploadRequest(
                req.getBucketName(), req.getKey(), uploadId, partETags)
                .<CompleteMultipartUploadRequest>
                    withRequestCredentialsProvider(req.getRequestCredentialsProvider()));
    }
Notified from
{@link AmazonS3EncryptionClient#uploadObject(UploadObjectRequest)} when
all parts have been successfully uploaded to S3. This method is
responsible for finishing off the upload by making a complete multi-part
upload request to S3 with the given list of etags.

@param partETags
           all the etags returned from S3 for the previous part uploads.

@return the completed multi-part upload result
aws-java-sdk-s3/src/main/java/com/amazonaws/services/s3/UploadObjectObserver.java