Frühlingswolke AWS - S3

In diesem kurzen Artikel werden wir die AWS-Unterstützung der Spring Cloud-Plattform untersuchen und uns dabei auf S3 konzentrieren.

Inhaltsserie: Dieser Artikel ist Teil einer Reihe: • Spring Cloud AWS - S3 (aktueller Artikel) • Spring Cloud AWS - EC2

• Spring Cloud AWS - RDS

• Spring Cloud AWS - Messaging-Unterstützung

1. Einfacher S3-Download

Beginnen wir mit dem einfachen Zugriff auf in S3 gespeicherte Dateien:

@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. Einfacher S3-Upload

Wir können auch Dateien hochladen:

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

Die s3Url wird im folgenden Format dargestellt:

s3:///

Befindet sich beispielsweise eine Datei bar.zip im Ordner foo in einem my-s3-Bucket- Bucket, lautet die URL wie folgt:

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

Mit ResourcePatternResolver und dem Mustervergleich im Ant-Stil können wir auch mehrere Objekte gleichzeitig herunterladen :

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); // ... } }

URLs können Platzhalter anstelle von genauen Namen enthalten.

Beispielsweise sucht die URL s3: //my-s3-bucket/**/a*.txt rekursiv nach allen Textdateien, deren Name in einem beliebigen Ordner des my-s3- Buckets mit ' a ' beginnt .

Beachten Sie, dass die Beans ResourceLoader und ResourcePatternResolver beim Start der Anwendung mithilfe der automatischen Konfigurationsfunktion von Spring Boot erstellt werden.

4. Fazit

Und wir sind fertig - dies ist eine schnelle und präzise Einführung in den Zugriff auf S3 mit Spring Cloud AWS.

Im nächsten Artikel der Reihe werden wir die EC2-Unterstützung des Frameworks untersuchen.

Wie üblich sind die Beispiele auf GitHub verfügbar.

Weiter » Spring Cloud AWS - EC2