Spring Cloud AWS – S3
在這篇快速文章中,我們將探索Spring Cloud平台中提供的AWS支持-重點是S3。
1.簡單的S3下載
讓我們從輕鬆訪問存儲在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.簡單的S3上傳
我們還可以上傳文件:
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結構
s3Url
使用以下格式表示:
s3://<bucket>/<object>
例如,如果文件bar.zip
位於my-s3-bucket
存儲桶上的foo
文件夾中,則URL為:
s3://my-s3-bucket/foo/bar.zip
而且,我們還可以使用ResourcePatternResolver
和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);
// ...
}
}
URL可以包含通配符而不是確切名稱。
例如, s3://my-s3-bucket/**/a*.txt URL
將在my-s3-bucket
任何文件夾中遞歸查找名稱以' a
'開頭的所有文本文件。
請注意,bean ResourceLoader
和ResourcePatternResolver
是在應用程序啟動時使用Spring Boot的自動配置功能創建的。
4。結論
我們已經完成了–這是使用Spring Cloud AWS訪問S3的快速而直接的介紹。
在本系列的下一篇文章中,我們將探索對框架的EC2支持。
和往常一樣,這些示例可以在GitHub上找到。