知識庫 / Spring / Spring Cloud RSS 訂閱

Spring Cloud AWS – S3 存儲服務指南

Spring Cloud
HongKong
5
02:09 PM · Dec 06 ,2025

在本文中,我們將探討在 Spring Cloud 平台上提供的 AWS 支持,重點關注 S3。

內容系列:
本文是系列的一部分
• Spring Cloud AWS – S3 (當前文章)
• Spring Cloud AWS – EC2
• Spring Cloud AWS – RDS
• Spring Cloud AWS – Messaging Support

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 位於 foo 文件夾中,並且存儲在 my-s3-bucket 存儲桶中,則 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 可以包含通配符,而不是確切的名稱。

例如,URL s3://my-s3-bucket/**/a*.txt 將會遞歸地查找所有名稱以 ‘a’ 開頭,且位於 my-s3-bucket 任何文件夾中的文本文件。

請注意,Spring Boot 的自動配置功能在應用程序啓動時會創建 Bean ResourceLoaderResourcePatternResolver

4. 結論

我們完成了 – 這是一份快速且簡潔的介紹,説明如何使用 Spring Cloud AWS 訪問 S3。

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

下一條 »
Spring Cloud AWS – EC2
user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.