Meu código
package br.com.ghnetsoft.s3amazon.service;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.Bucket;
import com.amazonaws.services.s3.model.S3Object;
import com.amazonaws.services.s3.model.S3ObjectInputStream;
import br.com.ghnetsoft.s3amazon.exception.GeralException;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
public class S3AmazonService implements Serializable {
private static final long serialVersionUID = -8430710375947645965L;
@Value("${amazon.login}")
private String usuario;
@Value("${amazon.senha}")
private String senha;
public void salvar(MultipartFile file) {
try {
AmazonS3 s3 = credentials();
final String extensao = buscarExtensao(file.getContentType());
final File novoArquivo = File.createTempFile("s3amazon", extensao);
final FileOutputStream fos = new FileOutputStream(novoArquivo);
fos.write(file.getBytes());
s3.putObject(file.getName(), file.getOriginalFilename(), novoArquivo);
fos.close();
} catch (AmazonServiceException | IOException e) {
log.error(e.getMessage(), e);
throw new GeralException("Erro em salvar arquivo do servidor de arquivos !");
}
}
public void deletar(String nome) {
try {
credentials().deleteBucket(nome);
} catch (AmazonServiceException e) {
log.error(e.getMessage(), e);
throw new GeralException("Erro em deletar arquivo do servidor de arquivos !");
}
}
public void listar() {
try {
List<Bucket> buckets = credentials().listBuckets();
for (Bucket bucket : buckets) {
log.info(bucket.getName());
}
} catch (AmazonServiceException e) {
log.error(e.getMessage(), e);
throw new GeralException("Erro em deletar arquivo do servidor de arquivos !");
}
}
public void buscar(String nome) {
try {
S3Object s3object = credentials().getObject(nome, nome);
S3ObjectInputStream inputStream = s3object.getObjectContent();
FileUtils.copyInputStreamToFile(inputStream, new File("/Users/user/Desktop/hello.txt"));
} catch (IOException | AmazonServiceException e) {
log.error(e.getMessage(), e);
throw new GeralException("Erro em buscar arquivodo servidor de arquivos !");
}
}
private AmazonS3 credentials() {
try {
return AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(usuario, senha)))
.withRegion(Regions.US_EAST_2).build();
} catch (AmazonServiceException e) {
log.error(e.getMessage(), e);
throw new GeralException("Erro ao conectar no servidor de arquivos !");
}
}
private String buscarExtensao(final String extensaoArquivo) {
String extensao = ".pdf";
if ("IMAGE/BMP".equalsIgnoreCase(extensaoArquivo)) {
extensao = ".bmp";
} else if ("IMAGE/PNG".equalsIgnoreCase(extensaoArquivo.toUpperCase())) {
extensao = ".png";
} else if ("IMAGE/JPEG".equalsIgnoreCase(extensaoArquivo.toUpperCase())) {
extensao = ".jpeg";
} else if ("IMAGE/JPG".equalsIgnoreCase(extensaoArquivo.toUpperCase())) {
extensao = ".jpg";
} else if ("application/vnd.ms-Excel".equalsIgnoreCase(extensaoArquivo.toUpperCase())) {
extensao = ".xlsx";
}
return extensao;
}
}
Exceção
com.amazonaws.services.s3.model.AmazonS3Exception: The bucket is in this region: us-east-1. Please use this region to retry the request (Service: Amazon S3; Status Code: 301; Error Code: PermanentRedirect; Request ID: Q09PG4HCPVFSJ5P7)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1587) ~[aws-java-sdk-core-1.11.163.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1257) ~[aws-java-sdk-core-1.11.163.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1029) ~[aws-java-sdk-core-1.11.163.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:741) ~[aws-java-sdk-core-1.11.163.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:715) ~[aws-java-sdk-core-1.11.163.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:697) ~[aws-java-sdk-core-1.11.163.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:665) ~[aws-java-sdk-core-1.11.163.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:647) ~[aws-java-sdk-core-1.11.163.jar:na]
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:511) ~[aws-java-sdk-core-1.11.163.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4227) ~[aws-java-sdk-s3-1.11.163.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4174) ~[aws-java-sdk-s3-1.11.163.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1722) ~[aws-java-sdk-s3-1.11.163.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1577) ~[aws-java-sdk-s3-1.11.163.jar:na]
at br.com.ghnetsoft.s3amazon.service.S3AmazonService.salvar(S3AmazonService.java:44) ~[classes/:na]
O que pode ser ?