Рубрики
Без рубрики

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

Краткое введение в поддержку Spring Cloud для AWS S3.

Автор оригинала: baeldung.

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

Url-адрес s3 представлен в формате:

s3:///

Например, если файл bar.zip находится в папке foo на my-s3-bucket bucket, тогда URL-адрес будет:

s3://my-s3-bucket/foo/bar.zip

Кроме того, мы также можем загрузить несколько объектов одновременно, используя ResourcePatternResolver и сопоставление шаблонов в стиле муравьев:

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 будет рекурсивно искать все текстовые файлы, имя которых начинается с ‘ a ‘ в любой папке my-s3-bucket .

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

4. Заключение

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

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

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