Spring Cloud AWS - S3

In questo rapido articolo, esploreremo il supporto AWS fornito nella piattaforma Spring Cloud, concentrandoci su S3.

Serie di contenuti: questo articolo fa parte di una serie: • Spring Cloud AWS - S3 (articolo corrente) • Spring Cloud AWS - EC2

• Spring Cloud AWS - RDS

• Spring Cloud AWS - Supporto per la messaggistica

1. Download semplice di S3

Cominciamo accedendo facilmente ai file archiviati su 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. Semplice caricamento S3

Possiamo anche caricare file:

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. Struttura URL S3

Il s3Url è rappresentato utilizzando il formato:

s3:///

Ad esempio, se un file bar.zip si trova nella cartella foo su un bucket my-s3- bucket, l'URL sarà:

s3://my-s3-bucket/foo/bar.zip

Inoltre, possiamo anche scaricare più oggetti contemporaneamente utilizzando ResourcePatternResolver e la corrispondenza del modello in stile Ant:

private ResourcePatternResolver resourcePatternResolver; @Autowired public void setupResolver(ApplicationContext applicationContext, AmazonS3 amazonS3) { this.resourcePatternResolver = new PathMatchingSimpleStorageResourcePatternResolver(amazonS3, applicationContext); } public void downloadMultipleS3Objects(String s3Url) throws IOException { Resource[] allFileMatchingPatten = this.resourcePatternResolver .getResources(s3Url); // ... } }

Gli URL possono contenere caratteri jolly invece di nomi esatti.

Ad esempio, l' URL s3: //my-s3-bucket/**/a*.txt cercherà in modo ricorsivo tutti i file di testo il cui nome inizia con " a " in qualsiasi cartella di my-s3-bucket .

Notare che i bean ResourceLoader e ResourcePatternResolver vengono creati all'avvio dell'applicazione utilizzando la funzione di configurazione automatica di Spring Boot.

4. Conclusione

E il gioco è fatto: questa è un'introduzione rapida e precisa all'accesso a S3 con Spring Cloud AWS.

Nel prossimo articolo della serie, esploreremo il supporto EC2 del framework.

Come al solito, gli esempi sono disponibili su GitHub.

Avanti » Spring Cloud AWS - EC2