Когда я загружаю файл на S3, используя локальный сервер, т.е. localhost, я могу загрузить на сервер S3, но, когда я пытаюсь загрузить с сервера, появляется ошибка, например IOE Error Message: P_103_Dt_2020-04-23_user1.png (Permission denied)
Показывает имя файла и В доступе отказано
public PatientProfilePic uploadFileToS3(MultipartFile multipartFile, Integer patientId,
boolean enablePublicReadAccess) throws IIOException {
logger.info("REQUEST RECEIVED:::/uploadProfilePic for " + patientId);
String f = Integer.toString(patientId);
String path = "PatientDocs/";
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
String fileName = "P_" + patientId + "_Dt_" + dateFormat.format(date) + "_"
+ StringUtils.cleanPath(multipartFile.getOriginalFilename());
String fn = path + f + "/ProfilePics/" + fileName;
File file = new File(fileName);
try {
// creating the file in the server (temporarily)
FileOutputStream fos = new FileOutputStream(file);
fos.write(multipartFile.getBytes());
fos.close();
PutObjectRequest putObjectRequest = new PutObjectRequest(this.awsS3AudioBucket, fn, file);
if (enablePublicReadAccess) {
putObjectRequest.withCannedAcl(CannedAccessControlList.PublicRead);
}
this.amazonS3.putObject(putObjectRequest);
logger.info("===================== Upload File - Done! =====================" + putObjectRequest);
// removing the file created in the server
file.delete();
} catch (AmazonServiceException ase) {
logger.info("Caught an AmazonServiceException from GET requests, rejected reasons:");
logger.info("Error Message: " + ase.getMessage());
logger.info("HTTP Status Code: " + ase.getStatusCode());
logger.info("AWS Error Code: " + ase.getErrorCode());
logger.info("Error Type: " + ase.getErrorType());
logger.info("Request ID: " + ase.getRequestId());
} catch (AmazonClientException ace) {
logger.info("Caught an AmazonClientException: ");
logger.info("Error Message: " + ace.getMessage());
} catch (IOException ioe) {
logger.info("IOE Error Message: " + ioe.getMessage());
}
return uploadS3Files(multipartFile, patientId, date, fileName);
}
Это перехват исключения и выполнение метода возврата. Это прекрасно работает, когда я работаю с LocalServer, но когда я разверну его в AWS, он не работает. Предложите мне лучшее решение.