В этой краткой статье мы рассмотрим поддержку 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 .