我能够从本地将图像上传到S3,但是当部署到EBS时却不能。当我在本地运行该代码时,此代码有效,但是当我在AWS EBS中部署相同的代码时,图像上传根本不起作用。我没有看到任何错误日志。试图搜索所有死胡同的解决方案。如果有人能指出正确的方向,我将为之倾倒。我正在使用t2.micro实例
application.properties
amazonProperties.endpointUrl: https://s3.us-east-2.amazonaws.com
amazonProperties.bucketName: "BUCKETNAME"
ProductController.java
@Controller
public class ProductController {
@Autowired
private AmazonClient amazonClient;
@Value("${amazonProperties.endpointUrl}")
private String endpointUrl;
@Value("${amazonProperties.bucketName}")
private String bucketName;
@RequestMapping(value="/addmaincategory", method=RequestMethod.POST)
public String
addmaincategory(@ModelAttribute("product") Product product,BindingResult result,Model model){
MultipartFile image= product.getProductImage();
String imageName = amazonClient.addImage(image);
product.setProductImageName(imageName );
productRepository.save(category);
model.addAttribute("product",product);
return "productdetails";
}
}
AmazonClient.java
@Service
public class AmazonClient {
@Autowired
private AmazonS3 s3client;
@Value("${amazonProperties.endpointUrl}")
private String endpointUrl;
@Value("${amazonProperties.bucketName}")
private String bucketName;
private File convertMultiPartToFile(MultipartFile file) throws IOException {
File convFile = new File(file.getOriginalFilename());
FileOutputStream fos = new FileOutputStream(convFile);
fos.write(file.getBytes());
fos.close();
return convFile;
}
private void uploadFileTos3bucket(MultipartFile file) {
File file = convertMultiPartToFile(file);
String fileName = "myfile.png";
s3client = AmazonS3ClientBuilder.defaultClient();
PutObjectRequest request = new PutObjectRequest(bucketName, fileName, file).withCannedAcl(CannedAccessControlList.PublicRead);
s3client.putObject(request);
}
}
具有受信任实体的IAM角色
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"elasticbeanstalk.amazonaws.com",
"ec2.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
附加的策略权限
答案 0 :(得分:0)
Elasticbeanstalk可信实体
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "elasticbeanstalk.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EC2受信任实体
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
在两种情况下均具有权限