AWS SSE не устанавливается?

#java #angularjs #amazon-web-services

#java #angularjs #amazon-веб-сервисы

Вопрос:

Мы работаем над процессом загрузки, который получает с сервера предварительно указанный URL-адрес для загрузки файлов в нашу корзину s3. Наш запрос строится следующим образом

 GeneratePresignedUrlRequest gpur = new GeneratePresignedUrlRequest(bucketName, file);
gpur.setMethod(HttpMethod.PUT);
gpur.setExpiration(expiration);
//gpur.setSSEAlgorithm(SSEAlgorithm.getDefault().getAlgorithm());
url = client.generatePresignedUrl(gpur);
  

и потребляется вот так

 $http({
    method: 'PUT',
    url: gpur url,
    transformRequest: angular.identity,
    uploadEventHandlers: {progress: function(progress) {
        file.uploadProgress = Math.round(progress.loaded / progress.total * 100);
    }},
    data: file,
})
  

который отлично работает. Файл перемещается в корзину без проблем. Однако, когда мы добавляем gpur.setSEEAlgorithm(SSEAlgorithm.getDefault().getAlgorithm()) обратно, мы получаем ошибку «SignatureDoesNotMatch». Что мы не понимаем об ошибке, так это то, что в <CanonicalRequest> тегах значение x-amz-server-side-encryption пусто.

Есть ли что-то очевидное, чего нам здесь не хватает?

РЕДАКТИРОВАТЬ: после небольшого исследования я нашел аналогичный вопрос здесь: https://salesforce.stackexchange.com/questions/114544/amazon-s3-specifying-sse-s3-with-pre-signed-urls-usingapex

Я добавил

 headers:{
    'X-Amz-Server-Side-Encryption': 'AES256',
},
  

на запрос, и он работает, хотя, похоже, он чувствителен к регистру.

Комментарии:

1. Сможете ли вы добавить свою правку в качестве ответа на свой вопрос для будущих читателей? Спасибо

Ответ №1:

Добавляю свою правку в качестве ответа. 🙂

После небольшого исследования я нашел аналогичный вопрос здесь: https://salesforce.stackexchange.com/questions/114544/amazon-s3-specifying-sse-s3-with-pre-signed-urls-usingapex

Я добавил

заголовки: { ‘X-Amz-Server-Side-Encryption’: ‘AES256’, }, на запрос, и он работает, хотя, похоже, чувствителен к регистру