code: func (l *Handler) Upload(ctx context.Context, sessionID session.ID, reader io.Reader) (string, error) {
  	path := l.path(sessionID)
  	_, err := l.uploader.UploadWithContext(ctx, &s3manager.UploadInput{
  		Bucket:               aws.String(l.Bucket),
  		Key:                  aws.String(path),
  		Body:                 reader,
  		ServerSideEncryption: aws.String(s3.ServerSideEncryptionAwsKms),
  	})
  	if err != nil {
  		return "", ConvertS3Error(err)
  	}
  	return fmt.Sprintf("%v://%v/%v", teleport.SchemeS3, l.Bucket, path), nil
  }
docs: // Upload uploads object to S3 bucket, reads the contents of the object from reader
  // and returns the target S3 bucket path in case of successful upload.