Spring Cloud AWS - S3
Neste artigo rápido, vamos explorar o suporte AWS fornecido na plataforma Spring Cloud - com foco em S3.
1. Download S3 Simples
Vamos começar acessando facilmente os arquivos armazenados no S3:
@Autowired
ResourceLoader resourceLoader;
public void downloadS3Object(String s3Url) throws IOException {
Resource resource = resourceLoader.getResource(s3Url);
File downloadedS3Object = new File(resource.getFilename());
try (InputStream inputStream = resource.getInputStream()) {
Files.copy(inputStream, downloadedS3Object.toPath(),
StandardCopyOption.REPLACE_EXISTING);
}
}
2. Upload S3 Simples
Também podemos fazer upload de arquivos:
public void uploadFileToS3(File file, String s3Url) throws IOException {
WritableResource resource = (WritableResource) resourceLoader
.getResource(s3Url);
try (OutputStream outputStream = resource.getOutputStream()) {
Files.copy(file.toPath(), outputStream);
}
}
3. Estrutura de URL S3
Os3Url é representado usando o formato:
s3:///
Por exemplo, se um arquivobar.zip estiver na pastafoo em um intervalomy-s3-bucket, o URL será:
s3://my-s3-bucket/foo/bar.zip
E também podemos baixar vários objetos de uma vez usandoResourcePatternResolvere a correspondência de padrões no estilo Ant:
@Autowired
ResourcePatternResolver resourcePatternResolver;
public void downloadMultipleS3Objects(String s3Url) throws IOException {
Resource[] allFileMatchingPatten = this.resourcePatternResolver
.getResources(s3Url);
// ...
}
}
Os URLs podem conter curingas em vez de nomes exatos.
Por exemplo, os3://my-s3-bucket/*/a.txt URL procurará recursivamente por todos os arquivos de texto cujo nome comece com ‘a’ em qualquer pasta demy-s3-bucket.
Observe que os beansResourceLoadereResourcePatternResolver são criados na inicialização do aplicativo usando o recurso de configuração automática do Spring Boot.
4. Conclusão
E pronto - esta é uma introdução rápida e direta para acessar o S3 com Spring Cloud AWS.
Nonext article of the series, exploraremos o suporte EC2 da estrutura.
Como de costume, os exemplos estão disponíveisover on GitHub.