Estou tentando setar a região por configuração no Spring quando crio o bucket e não esta setando. Alguma sugestão?
s3Client.setRegion(Region.getRegion(Regions.SA_EAST_1));
Estou tentando setar a região por configuração no Spring quando crio o bucket e não esta setando. Alguma sugestão?
s3Client.setRegion(Region.getRegion(Regions.SA_EAST_1));
oi, Clerman
tudo bem?
nem todas as regions estão disponíveis para o s3. De qual pacote você está pegando esse enum Region? Me parece que você quer usar esse:
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/Region.html
repare que a opção SA_EAST_1 nem aparece, justamente por não ser compatível. Experimenta usar esse com US_East_2, por exemplo?
abracos
Olá Rodrigo, aqui aparare disponível sim, da uma olhada na config:
AmazonS3 s3Client = new AmazonS3Client(credentials, new ClientConfiguration());
s3Client.setS3ClientOptions(S3ClientOptions.builder().setPathStyleAccess(true).build());
s3Client.createBucket("clipboard-images");
s3Client.setRegion(Region.getRegion(Regions.SA_EAST_1));
s3Client.setEndpoint("https://s3.amazonaws.com/");
oi, Clerman
mas qual é esse Regions que você está usando? mande a linha do import com o pacote de onde ele vem, por favor.
no link que eu te mandei, da ultima versão da documentação, o import tem um "s3" no pacote, justamente por ser um enum específico com as regiões suportadas pelo recurso do s3.
com/amazonaws/services/s3/model/Region
você consegue importar dessa classe na versão que está usando? E mesmo que não consiga, com a versão atual que você está, mudando de SA_EAST_1 para SA_EAST_2 a configuração funciona? (dá erro, é ignorada, etc)
Olá Rodrigo, estou usando uma dependência gerenciada pelo Maven no pom.xml que é essa daqui:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.10.77</version>
</dependency>
e os imports são esses:
import com.amazonaws.ClientConfiguration;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.S3ClientOptions;
e não da a opção de uma segunda região.
repare no pacote que comentei. No lugar desses, de região, que você está usando:
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
use o do pacote do s3:
import com.amazonaws.services.s3.model.Region;
nele tem as regions que ele suporta. SA_EAST_1 não é uma delas.
Tentei importar outra dependência para habilitar o pacote mas o obj s3Client.setRegion da erro em setRegion
s3Client.setRegion(com.amazonaws.services.s3.model.Region.SA_SaoPaulo);
Outra situação é que esse pacote que citou parece que não faz parte do com.amazonaws.services.s3.AmazonS3. quando tento habilitar os erros aumentam e a solução fica mais distante.
Talvez seja um bug dessa versão. Esse método que você está usando está deprecated
new AmazonS3Client(credentials, new ClientConfiguration())
Caso não consiga resolver seu problema você pode tentar usar uma versão mais recente e usar um builder para construir seu S3Client.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.166</version>
<scope>compile</scope>
</dependency>
AmazonS3 s3 = AmazonS3ClientBuilder.standard()
.withRegion(Regions.SA_EAST_1)
.withCredentials(credentials)
.build();