Encryption Amazon S3.NET SDK加密大于5GB的对象

Encryption Amazon S3.NET SDK加密大于5GB的对象,encryption,amazon-web-services,amazon-s3,Encryption,Amazon Web Services,Amazon S3,我环顾四周,没有发现任何与.NET相关的信息,所以现在我在这里寻求帮助。我需要上传和加密(上传操作期间)大于5GB的对象。我还需要将这些对象从一个bucket中的一个文件夹复制到另一个文件夹。我可以上传和复制没有问题,问题是对象的服务器端加密没有按预期进行。在这两种情况下,我都尝试使用CopyPartRequest类来执行加密。我的代码如下。在这个操作之后,对象就在那里并且大小合适,只是没有加密。有什么我遗漏的吗 Dim s3Client As IAmazonS3 s3Client = New

我环顾四周,没有发现任何与.NET相关的信息,所以现在我在这里寻求帮助。我需要上传和加密(上传操作期间)大于5GB的对象。我还需要将这些对象从一个bucket中的一个文件夹复制到另一个文件夹。我可以上传和复制没有问题,问题是对象的服务器端加密没有按预期进行。在这两种情况下,我都尝试使用CopyPartRequest类来执行加密。我的代码如下。在这个操作之后,对象就在那里并且大小合适,只是没有加密。有什么我遗漏的吗

Dim s3Client As IAmazonS3
s3Client = New AmazonS3Client(accessKey, secretAccessKeyID, Amazon.RegionEndpoint.USEast1)

Dim uploadResponses As New List(Of UploadPartResponse)()
Dim copyResponses As New List(Of CopyPartResponse)()

Dim initiateRequest As New InitiateMultipartUploadRequest() With { _
    .BucketName = bucketName, _
    .Key = destObject _
}

Dim initResponse As InitiateMultipartUploadResponse = s3Client.InitiateMultipartUpload(initiateRequest)

Dim uploadId As [String] = initResponse.UploadId

Dim metadataRequest As New GetObjectMetadataRequest() With { _
    .BucketName = bucketName, _
    .Key = objToCopy _
}

Dim metadataResponse As GetObjectMetadataResponse = s3Client.GetObjectMetadata(metadataRequest)
Dim objectSize As Long = metadataResponse.ContentLength
Dim partSize As Long = 5 * CLng(Math.Pow(2, 20))

Dim bytePosition As Long = 0
Dim i As Integer = 1

While bytePosition < objectSize
    Dim copyRequest As New CopyPartRequest() With { _
        .DestinationBucket = bucketName, _
        .DestinationKey = destObject, _
        .SourceBucket = bucketName, _
        .SourceKey = objToCopy, _
        .UploadId = uploadId, _
        .FirstByte = bytePosition, _
        .LastByte = If(bytePosition + partSize - 1 >= objectSize, objectSize - 1, bytePosition + partSize - 1), _
         .ServerSideEncryptionMethod = Amazon.S3.ServerSideEncryptionMethod.AES256, _
         .PartNumber = i _
     }

     copyResponses.Add(s3Client.CopyPart(copyRequest))

     bytePosition += partSize

     If (bytePosition * 100) / objectSize >= 99 Then
         bgCopyMoveFile.ReportProgress(99)
     Else
         bgCopyMoveFile.ReportProgress((bytePosition * 100) / objectSize)
     End If

     i += 1
End While
将S3客户端设置为IAmazonS3
s3Client=新的AmazonS3Client(accessKey、secretAccessKeyID、Amazon.RegionEndpoint.USEast1)
Dim uploadResponses作为新列表(UploadPartResponse的)()
将copyResponses设置为新列表(CopyPartResponse)()
Dim initiateRequest作为新的InitiateMultipartUploadRequest()与{_
.BucketName=BucketName_
.Key=destObject_
}
Dim initResponse As InitiateMultipartUploadResponse=s3Client.InitiateMultipartUpload(initiateRequest)
Dim uploadId为[String]=initResponse.uploadId
Dim metadataRequest作为新的GetObjectMetadataRequest(),带有{_
.BucketName=BucketName_
.Key=objToCopy_
}
Dim metadataResponse作为GetObjectMetadataResponse=s3Client.GetObjectMetadata(metadataRequest)
Dim objectSize As Long=metadataResponse.ContentLength
长度为5*CLng的尺寸零件尺寸(数学功率(2,20))
Dim bytePosition的长度=0
尺寸i为整数=1
而bytePosition=objectSize,objectSize-1,bytePosition+partSize-1)_
.ServerSideEncryptionMethod=Amazon.S3.ServerSideEncryptionMethod.AES256_
.PartNumber=i_
}
copyResponses.Add(s3Client.CopyPart(copyRequest))
bytePosition+=零件尺寸
如果(bytePosition*100)/objectSize>=99,则
bgCopyMoveFile.ReportProgress(99)
其他的
bgCopyMoveFile.ReportProgress((bytePosition*100)/objectSize)
如果结束
i+=1
结束时
据我所知,在copypartrequest中指定加密应该可以做到这一点,但这不适合我

上面的代码是vb.net,但我可以使用vb或C。如果需要更多信息,请告诉我


提前谢谢

如果有人遇到这种情况,问题是启动多部分上传请求…我必须在那里指定AES256加密,所以

Dim initiateRequest As New InitiateMultipartUploadRequest() With { _
    .BucketName = bucketName, _
    .Key = destObject _
}
变成

Dim initiateRequest As New InitiateMultipartUploadRequest() With { _
    .BucketName = bucketName, _
    .ServerSideEncryptionMethod = Amazon.S3.ServerSideEncryptionMethod.AES256, _  
    .Key = destObject _
}