Как установить заголовок запроса (x-amz-server-side-encryption: aws: kms) при сохранении файла на S3 в коде Java?

Ниже приведен код, который у меня есть для загрузки файлов на S3 с использованием шифрования на стороне сервера KMS. Однако я получаю исключение «Шифрование на стороне сервера с управляемым ключом AWS KMS требует HTTP-заголовка x-amz-server-side-encryption: aws: kms»;

Не знаете, где разместить заголовок в коде Java для сохранения файла.

private static void saveServerSideEncryptedFileToAWS(String clientRegion, String bucketName, String awsFilePath, File file) {
            AmazonS3 s3client = AmazonS3Client.builder()
                    .withRegion(clientRegion)
                    .withCredentials(new AWSStaticCredentialsProvider(credentials))
                    .build();

            ObjectMetadata objectMetadata = new ObjectMetadata();
            //objectMetadata.setHeader("x-amz-server-side-encryption" , "aws:kms");

            objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);

            PutObjectRequest putRequest = null;
            try {
                putRequest = new PutObjectRequest(bucketName,
                        awsFilePath,
                        new FileInputStream(file),
                        objectMetadata).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams("arn:aws:kms:<<key>>"));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            // Upload the object and check its encryption status.
            PutObjectResult putResult = s3client.putObject(putRequest);
            printEncryptionStatus(putResult);
        }

person user3115056    schedule 23.07.2019    source источник


Ответы (1)


Я получил ответ путем нескольких проб и ошибок... -- putRequest.putCustomRequestHeader("x-amz-server-side-encryption","aws:kms");

person user3115056    schedule 25.07.2019
comment
Я удивлен тем, как никто не проголосовал за это. Спасибо за это. ГГ - person Ankit Basarkar; 18.11.2020