我正在尝试将文件异步上传到Amazon S3时打开服务器端加密。我有文件上传工作但无法确定在何处指定加密选项。有什么想法吗?
using (var s3Client = new AmazonS3Client(awsAccessKeyID, awsSecretAccessKey, regionEndPoint))
{
using (TransferUtility fileTransferUtility = new TransferUtility(s3Client))
{
await fileTransferUtility.UploadAsync(filePath, bucketName, objectkey);
}
}
编辑:
我意识到亚马逊有关于如何使用putObjectRequest指定加密的文档,但是想知道是否可以使用FileTransferUtility来完成。
http://docs.aws.amazon.com/AmazonS3/latest/dev/SSEUsingDotNetSDK.html
答案 0 :(得分:2)
请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/SSEUsingDotNetSDK.html,具体请注意:
使用高级分段上传API(请参阅Using the High-Level .NET API for Multipart Upload)时,TransferUtility类提供上传对象的方法(Upload和UploadDirectory)。在这种情况下,您可以使用TransferUtilityUploadRequest和TransferUtilityUploadDirectoryRequest对象请求服务器端加密。
它应该是这样的(对不起,暂时不在测试它的地方):
TransferUtilityUploadRequest fileTransferUtilityRequest = new TransferUtilityUploadRequest
{
BucketName = existingBucketName,
FilePath = filePath,
StorageClass = S3StorageClass.ReducedRedundancy,
PartSize = 6291456, // 6 MB.
Key = keyName,
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
};
fileTransferUtility.UploadAsync(fileTransferUtilityRequest, someCancelToken);