Spring Cloud AWS - S3

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.