public async Task <string> UploadFileAsync(string bucketName) { try { var fileTransferUtility = new TransferUtility(_client); // option 1 await fileTransferUtility.UploadAsync(filePath, bucketName); // option 2 await fileTransferUtility.UploadAsync(filePath, bucketName, uploadWithKeyName); // option 3 using (var fileToUpload = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { await fileTransferUtility.UploadAsync(fileToUpload, bucketName, fileStreamUpload); } // option 4 var fileTransferUtilityRequest = new TransferUtilityUploadRequest { BucketName = bucketName, FilePath = filePath, StorageClass = S3StorageClass.Standard, PartSize = 6291456, CannedACL = S3CannedACL.NoACL }; fileTransferUtilityRequest.Metadata.Add("param1", "value1"); fileTransferUtilityRequest.Metadata.Add("param2", "value2"); await fileTransferUtility.UploadAsync(fileTransferUtilityRequest); return(fileTransferUtilityRequest.ToString() + fileTransferUtility.ToString()); } catch (AmazonS3Exception aExe) { Console.WriteLine(aExe.Message); return(aExe.Message); } catch (Exception exe) { Console.WriteLine(exe.Message); return(exe.Message); } }