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 ResourceLoaderResourcePatternResolver是在應用程序啟動時使用Spring Boot的自動配置功能創建的。

4。結論

我們已經完成了–這是使用Spring Cloud AWS訪問S3的快速而直接的介紹。

在本系列的下一篇文章中,我們將探索對框架的EC2支持。

和往常一樣,這些示例可以在GitHub上找到