【发布时间】:2017-10-16 16:53:54
【问题描述】:
我无法使用以下方法通过部署在 Amazon Elastic Beanstalk 上的 Spring Boot 应用程序将图像上传到 S3:
@Autowired
private AmazonS3Client amazonS3Client;
amazonS3Client.setEndpoint(S3_REGION_ENDPOINT);
amazonS3Client.putObject(new PutObjectRequest(S3_BUCKET_NAME, key, fileToUpload));
日志显示如下错误:
Caused by: java.io.IOException: Permission denied
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:1012)
at com.g2m.persistence.image.service.FileArchiveService.convertFromMultiPart(FileArchiveService.java:91)
at com.g2m.persistence.image.service.FileArchiveService.saveFileToS3(FileArchiveService.java:44)
但是当尝试使用本地端点(在本地运行 Spring Boot)上传图像时,我成功地将图像上传到 S3 并检索它。
知道如何解决这个问题吗?它与 S3 权限有关还是完全没有关系?
【问题讨论】:
-
您是否查看了您的 EC2 实例角色?您是否在本地计算机上使用相同的用户/凭据?有一个类似的问题stackoverflow.com/questions/41667916/…
-
@siomes 是的,我已经审查了该角色,并且在从本地计算机上传时也使用了相同的凭据
-
请检查您是否设置了存储桶策略并授予了正确的IAM角色和权限。还要确保正确定义了您为文件或图像提供的路径。 :)
标签: spring-boot amazon-s3 amazon-ec2 amazon-elastic-beanstalk