Spring Cloud AWS S3上传SignatureDoesNotMatch

时间:2020-01-30 22:32:44

标签: java amazon-s3

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上进行了一些研究,但未找到任何资源来说明我如何正确签署请求。谁能解释为什么此代码未运行?

0 个答案:

没有答案