Код: Выделить всё
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
import software.amazon.awssdk.services.s3.S3AsyncClient;
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
private final S3AsyncClient s3;
@GetMapping(path = "/{file}")
Mono downloadFile(@PathVariable("file") String file) {
final var request =
GetObjectRequest.builder()
.bucket("my-bucket")
.key("aPrefix/" + file)
.build();
return Mono.fromFuture(s3.getObject(request, AsyncResponseTransformer.toPublisher()))
.map(
response ->
ResponseEntity.ok()
.header(CONTENT_TYPE, response.response().contentType())
.header(
CONTENT_LENGTH,
Long.toString(response.response().contentLength()))
.header(CACHE_CONTROL, CACHE_CONTROL_VALUE)
.body(Flux.from(response)));
}
Код: Выделить всё
... is not authorized to perform: s3:ListBucket on resource: ...
Подробнее здесь: https://stackoverflow.com/questions/790 ... -getobject