Я выполняю задачу шифрования на стороне клиента для объектов, которые помещаются в мое ведро. Как я также проверил свой контент md5 для моего запроса.Во время этого процесса я использую приведенное ниже выполнение программы:
AmazonS3EncryptionClient s3 = null;
Map<String, String> userMetaData = new HashMap<String, String>();
userMetaData.put(clientSideEncMetaData, "true");
ObjectMetadata objectMetadata = Utility.setObjectMetadata(userMetaData);
if (service.canKeyRotate().equalsIgnoreCase("true")) {
SimpleMaterialProvider materialProvider = new SimpleMaterialProvider().withLatest(encryptionMaterials);
CryptoConfiguration config = new CryptoConfiguration().withStorageMode(CryptoStorageMode.InstructionFile)
.withIgnoreMissingInstructionFile(false);
s3 = Utility.getEncryptionClientWithProvider(service.getAwsAccessKey(), service.getAwsSecretKey(),
service.getKeyName(), materialProvider, config, null);
objectMetadata.addUserMetadata(rotationMetaData, "true");
} else {
s3 = Utility.getEncryptionClient(service.getAwsAccessKey(), service.getAwsSecretKey(), service.getKeyName(),
encryptionMaterials);
}
objectMetadata.setContentLength(service.getIos().available());
objectMetadata.setContentMD5(service.getMd5content());
objectMetadata.setHeader(md5header,service.getMd5content());
objectMetadata.setSSECustomerKeyMd5(md5Digest);
PutObjectRequest request = new PutObjectRequest(service.getBucketName(), service.getFileName(),
service.getIos(), objectMetadata);
request.putCustomRequestHeader(md5header, service.getMd5content());
request.putCustomRequestHeader(lockModeHeader, "GOVERNANCE");
request.putCustomRequestHeader(lockExpiryHeader, "2020-01-05T00:00:00.000Z");
request.putCustomRequestHeader(legalHoldFlagHeader, "ON");
PutObjectResult objectResult = s3.putObject(request);
System.out.println(objectResult.getContentMd5());
}
Может кто-нибудь предложить мне подход, потому что контент md5 не проверен.