我们正在尝试使用 SHA256 校验和对 S3 PUT 操作实施对象完整性检查。对于分段上传请求,如果我们在 CompleteMultipartUploadAsync 方法中传递 SHA256 校验和,则此功能似乎有效
var completeRequest = new CompleteMultipartUploadRequest
{
BucketName = bucketName,
Key = key,
UploadId = uploadId,
ChecksumSHA256 = sha56ofFile
};
completeRequest.AddPartETags(parts.Select(p => new PartETag(p.PartNumber, p.ETag)).ToArray());
await amazonS3Client.CompleteMultipartUploadAsync(completeRequest);
我们使用以下代码上传小文件
public async Task SimplePutAsync(string presignedURL , ByteArrayContent content , string sha56Value)
{
var httpClient = new HttpClient();
content.Headers.Add("x-amz-checksum-sha256", sha56Value);
var response = await httpClient.PutAsync(presignedURL, content);
response.EnsureSuccessStatusCode();
}
如果我们指定标头:“x-amz-checksum-sha256”和 SHA256 值,我们会得到错误:403 Forbidden
还找到了下面AWS rePost的帖子
它提到了将校验和标头添加到预签名 url 的方法,但是在 .NET SDK 的 AmazonS3Client 类中,
感谢任何帮助