Перейти к основному содержимому

Весеннее облако AWS — S3

· 2 мин. чтения

В этой быстрой статье мы собираемся изучить поддержку AWS, предоставляемую платформой Spring Cloud, уделяя особое внимание 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. Структура URL S3

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 .

Обратите внимание, что bean-компоненты ResourceLoader и ResourcePatternResolver создаются при запуске приложения с использованием функции автоматической настройки Spring Boot.

4. Вывод

И мы закончили — это краткое и точное введение в доступ к S3 с помощью Spring Cloud AWS.

В следующей статье серии мы рассмотрим поддержку EC2 фреймворка.

Как обычно, примеры доступны на GitHub .