기능 명세 자세하게 작성
인증 filter
사진 보내기
클라이언트 → (서버는 URL만 발급) → S3 (직접 전송, 서버 경유 안 함)
java
@GetMapping("/presigned-url")
public String getPresignedUrl(@RequestParam String filename) {
PutObjectRequest objectRequest = PutObjectRequest.builder()
.bucket("my-bucket")
.key("images/" + filename)
.build();
PutObjectPresignRequest presignRequest = PutObjectPresignRequest.builder()
.signatureDuration(Duration.ofMinutes(10))
.putObjectRequest(objectRequest)
.build();
return s3Presigner.presignPutObject(presignRequest).url().toString();
}
클라이언트는 이 URL로 S3에 직접 PUT 요청을 보냅니다.
javascript
await fetch(presignedUrl, {
method: 'PUT',
body: file // 서버를 거치지 않고 S3로 바로 전송
});
