Я огляделся и не встретил ничего особенного .NET, поэтому теперь я прошу помощи. Мне нужно загружать и шифровать (во время операции загрузки) объекты размером более 5 ГБ. У меня также будет необходимость скопировать эти объекты из папки в папку в ведре. Я могу загружать и копировать без проблем, проблема в том, что на стороне сервера шифрование объекта происходит не так, как ожидалось. В обоих случаях я пытаюсь использовать класс CopyPartRequest для выполнения шифрования. Мой код ниже. После этой операции объект есть и имеет правильный размер, просто не зашифрован. Есть что-то, что мне не хватает?Amazon S3 .NET SDK Шифрование объектов больше, чем 5 ГБ
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
К, что я прочитал, указав шифрование в copypartrequest должны это сделать, но это не для меня.
Код выше - vb.net, но я могу делать либо VB, либо C#. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.
Заранее благодарен!