Amazon S3 - объектное хранилище. Для работы с S3 (Amazon S3 или любым S3-совместимым хранилищем — MinIO, Yandex Object Storage и т.п.) в Java чаще всего используют AWS SDK for Java.
Создать бакет (bucket):
String bucketName = "my-java-bucket";
try {
s3.createBucket(CreateBucketRequest.builder()
.bucket(bucketName)
.build());
System.out.println("Бакет создан: " + bucketName);
} catch (S3Exception e) {
System.err.println("Ошибка: " + e.awsErrorDetails().errorMessage());
}
Адресация в S3 по имени бакета и ключу.
Загрузить файл.
Можно загрузить из локального файла, из строки или потока:
s3.putObject(PutObjectRequest.builder()
.bucket(bucketName)
.key("docs/report.pdf")
.build(),
RequestBody.fromFile(Paths.get("/home/user/report.pdf")));
// Или загрузка строки
s3.putObject(PutObjectRequest.builder()
.bucket(bucketName)
.key("hello.txt")
.build(),
RequestBody.fromString("Hello, S3!"));
Получить объект.
s3.getObject(GetObjectRequest.builder()
.bucket(bucketName)
.key("docs/report.pdf")
.build());
Удалить объект.
s3.deleteObject(DeleteObjectRequest.builder()
.bucket(bucketName)
.key("docs/report.pdf")
.build());
Удалить БАКЕТ.
DeleteBucketRequest deleteRequest = DeleteBucketRequest.builder()
.bucket(bucketName)
.build();
s3.deleteBucket(deleteRequest);
В SDK есть методы для работы с метаданными объекта (metadata), для получения списка объектов в бакете (listObjectsV2).
Ссылки:
https://www.baeldung.com/java-aws-s3