22
33import com .back .global .exception .ServiceException ;
44import lombok .RequiredArgsConstructor ;
5+ import org .springframework .beans .factory .annotation .Value ;
56import org .springframework .stereotype .Service ;
67import software .amazon .awssdk .services .s3 .S3Client ;
78import software .amazon .awssdk .services .s3 .model .*;
1718public class S3Service {
1819 private final S3Presigner presigner ;
1920 private final S3Client s3Client ;
21+ @ Value ("${aws.s3.bucket}" )
22+ private String bucket ;
23+
24+ public URL generateUploadUrl (String objectKey , Integer expireMinutes ) {
25+ validateRequest (objectKey );
2026
21- public URL generateUploadUrl (String bucket , String objectKey , Integer expireMinutes ) {
2227 PutObjectRequest request = PutObjectRequest .builder ()
2328 .bucket (bucket )
2429 .key (objectKey )
@@ -33,19 +38,15 @@ public URL generateUploadUrl(String bucket, String objectKey, Integer expireMinu
3338 throw new ServiceException ("500" , "Presigned URL 생성 실패" );
3439 }
3540
36- URL url = presignedRequest .url ();
37-
38- return url ;
41+ return presignedRequest .url ();
3942 }
4043
41- public URL generateUploadUrl (String bucket , String objectKey ) {
42- validateRequest (bucket , objectKey );
43-
44- return generateUploadUrl (bucket , objectKey , 30 );
44+ public URL generateUploadUrl (String objectKey ) {
45+ return generateUploadUrl (objectKey , 30 );
4546 }
4647
47- public URL generateDownloadUrl (String bucket , String objectKey , Integer expireHours ) {
48- isExist (bucket , objectKey );
48+ public URL generateDownloadUrl (String objectKey , Integer expireMinutes ) {
49+ isExist (objectKey );
4950
5051 GetObjectRequest request = GetObjectRequest .builder ()
5152 .bucket (bucket )
@@ -54,25 +55,22 @@ public URL generateDownloadUrl(String bucket, String objectKey, Integer expireHo
5455
5556 PresignedGetObjectRequest presignedRequest =
5657 presigner .presignGetObject (builder -> builder
57- .signatureDuration (Duration .ofMinutes (expireHours ))
58+ .signatureDuration (Duration .ofMinutes (expireMinutes ))
5859 .getObjectRequest (request ));
5960
6061 if (presignedRequest == null ) {
6162 throw new ServiceException ("500" , "Presigned URL 생성 실패" );
6263 }
6364
64- URL url = presignedRequest .url ();
65-
66- return url ;
65+ return presignedRequest .url ();
6766 }
6867
69- public URL generateDownloadUrl (String bucket , String objectKey ) {
70- validateRequest (bucket , objectKey );
71-
72- return generateDownloadUrl (bucket , objectKey , 60 );
68+ public URL generateDownloadUrl (String objectKey ) {
69+ return generateDownloadUrl (objectKey , 60 );
7370 }
7471
75- public void isExist (String bucket , String objectKey ) {
72+ public void isExist (String objectKey ) {
73+ validateRequest (objectKey );
7674 try {
7775 HeadObjectRequest headRequest = HeadObjectRequest .builder ()
7876 .bucket (bucket )
@@ -87,9 +85,9 @@ public void isExist(String bucket, String objectKey) {
8785 }
8886 }
8987
90- public void validateRequest (String bucket , String objectKey ) {
91- if (bucket == null || bucket . isEmpty () || objectKey == null || objectKey .isEmpty ()) {
92- throw new ServiceException ("400" , "버킷 이름과 객체 키는 필수입니다." );
88+ public void validateRequest (String objectKey ) {
89+ if (objectKey == null || objectKey .isEmpty ()) {
90+ throw new ServiceException ("400" , "객체 키는 필수입니다." );
9391 }
9492 }
9593}
0 commit comments