Spring Cloud AWS S3 Загрузить подпись DoesNotMatch - PullRequest
1 голос
/ 31 января 2020
public void upload(MultipartFile multipartFile, boolean publicAccess) {
    String fileName = this.generateUniqueFilename(multipartFile);

    try {
        File file = new File(Objects.requireNonNull(fileName));
        FileOutputStream outputStream = new FileOutputStream(file);
        outputStream.write(multipartFile.getBytes());
        outputStream.close();

        PutObjectRequest request = new PutObjectRequest(this.awsS3UploadBucket, fileName, file);

        if (publicAccess) {
            request.withCannedAcl(CannedAccessControlList.PublicRead);
        }

        this.amazonS3.putObject(request);

    } catch (Exception exception) {
        logger.error("error [" + exception.getMessage() + "] occurred while uploading [" + fileName + "] ");
    }
}

generateUniqueFilename генерирует уникальное имя для загруженного файла. Например 143119066552807424.png.

Когда код запускается, я получил это исключение

error [The request signature we calculated does not match the signature you provided. Check your key and signing method. 
(Service: Amazon S3; Status Code: 403; Error Code: SignatureDoesNotMatch; Request ID: XXX; S3 Extended Request ID: XXXX)] occurred while uploading [143119066552807424.png] 

Я провел небольшое исследование в Google, но не нашел ресурса, который объяснял бы, как я могу правильно подписать запрос. Кто-нибудь может объяснить, почему этот код не работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...