Spring Cloud AWS - S3
Dans cet article rapide, nous allons explorer le support AWS fourni dans la plate-forme Spring Cloud, en nous concentrant sur S3.
1. Téléchargement S3 simple
Commençons par accéder facilement aux fichiers stockés sur 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. Téléchargement S3 simple
Nous pouvons également télécharger des fichiers:
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. Structure de l'URL S3
Les3Url est représenté au format:
s3:///
Par exemple, si un fichierbar.zip se trouve dans le dossierfoo sur un compartimentmy-s3-bucket, alors l'URL sera:
s3://my-s3-bucket/foo/bar.zip
Et, nous pouvons également télécharger plusieurs objets à la fois en utilisantResourcePatternResolver et la correspondance de modèle de style Ant:
@Autowired
ResourcePatternResolver resourcePatternResolver;
public void downloadMultipleS3Objects(String s3Url) throws IOException {
Resource[] allFileMatchingPatten = this.resourcePatternResolver
.getResources(s3Url);
// ...
}
}
Les URL peuvent contenir des caractères génériques au lieu de noms exacts.
Par exemple, less3://my-s3-bucket/*/a.txt URL chercheront récursivement tous les fichiers texte dont le nom commence par «a» dans n'importe quel dossier desmy-s3-bucket.
Notez que les beansResourceLoader etResourcePatternResolver sont créés au démarrage de l'application à l'aide de la fonction de configuration automatique de Spring Boot.
4. Conclusion
Et nous avons terminé - il s'agit d'une introduction rapide et précise à l'accès à S3 avec Spring Cloud AWS.
Dans lesnext article of the series, nous explorerons la prise en charge EC2 du framework.
Comme d'habitude, les exemples sont disponiblesover on GitHub.