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