Spring Cloud AWS - S3

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.

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. Einfaches 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

Dass3Url wird im folgenden Format dargestellt:

s3:///


Befindet sich beispielsweise eine Dateibar.zip im Ordnerfoo in einemmy-s3-bucket-Bucket, lautet die URL:

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

Außerdem können wir mitResourcePatternResolver und dem Mustervergleich im Ant-Stil mehrere Objekte gleichzeitig herunterladen:

@Autowired
ResourcePatternResolver resourcePatternResolver;

public void downloadMultipleS3Objects(String s3Url) throws IOException {
    Resource[] allFileMatchingPatten = this.resourcePatternResolver
      .getResources(s3Url);
        // ...
    }
}

URLs können Platzhalter anstelle von genauen Namen enthalten.

Beispielsweise suchen dies3://my-s3-bucket/*/a.txt URL rekursiv nach allen Textdateien, deren Name mit "a" in einem beliebigen Ordner dermy-s3-bucket beginnt.

Beachten Sie, dass die BeansResourceLoader undResourcePatternResolver 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.

Innext article of the series werden wir die EC2-Unterstützung des Frameworks untersuchen.

Wie üblich sind die Beispiele inover on GitHub verfügbar.