From 012f7104c1907a88b47920fd62400a3f503ce768 Mon Sep 17 00:00:00 2001 From: yunyoung1819 Date: Sat, 15 Jul 2023 21:51:14 +0900 Subject: [PATCH 1/2] :sparkles: feat(api): Add AWS S3 Config, S3 Service --- backend/streetdrop-api/build.gradle | 1 + .../external/aws/s3/AwsS3Config.java | 36 +++++++++++++++++++ .../external/aws/s3/AwsS3Service.java | 29 +++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 backend/streetdrop-api/src/main/java/com/depromeet/external/aws/s3/AwsS3Config.java create mode 100644 backend/streetdrop-api/src/main/java/com/depromeet/external/aws/s3/AwsS3Service.java diff --git a/backend/streetdrop-api/build.gradle b/backend/streetdrop-api/build.gradle index d3d60010..4f975d49 100644 --- a/backend/streetdrop-api/build.gradle +++ b/backend/streetdrop-api/build.gradle @@ -34,6 +34,7 @@ dependencies { annotationProcessor "jakarta.persistence:jakarta.persistence-api" implementation 'org.springframework.boot:spring-boot-starter-webflux' + implementation 'io.awspring.cloud:spring-cloud-starter-aws:2.3.1' } test { diff --git a/backend/streetdrop-api/src/main/java/com/depromeet/external/aws/s3/AwsS3Config.java b/backend/streetdrop-api/src/main/java/com/depromeet/external/aws/s3/AwsS3Config.java new file mode 100644 index 00000000..4843388c --- /dev/null +++ b/backend/streetdrop-api/src/main/java/com/depromeet/external/aws/s3/AwsS3Config.java @@ -0,0 +1,36 @@ +package com.depromeet.external.aws.s3; + +import com.amazonaws.auth.AWSStaticCredentialsProvider; +import com.amazonaws.auth.BasicAWSCredentials; +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class AwsS3Config { + + @Value("${cloud.aws.credentials.access-key}") + private String accessKey; + + @Value("${cloud.aws.credentials.secret-key}") + private String secretKey; + + @Value("${cloud.aws.s3.region.static}") + private String region; + + + @Bean + public BasicAWSCredentials basicAWSCredentials() { + return new BasicAWSCredentials(accessKey, secretKey); + } + + @Bean + public AmazonS3 amazonS3(BasicAWSCredentials basicAWSCredentials) { + return AmazonS3ClientBuilder.standard() + .withRegion(region) + .withCredentials(new AWSStaticCredentialsProvider(basicAWSCredentials)) + .build(); + } +} diff --git a/backend/streetdrop-api/src/main/java/com/depromeet/external/aws/s3/AwsS3Service.java b/backend/streetdrop-api/src/main/java/com/depromeet/external/aws/s3/AwsS3Service.java new file mode 100644 index 00000000..f6b6587c --- /dev/null +++ b/backend/streetdrop-api/src/main/java/com/depromeet/external/aws/s3/AwsS3Service.java @@ -0,0 +1,29 @@ +package com.depromeet.external.aws.s3; + +import com.amazonaws.services.s3.AmazonS3; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class AwsS3Service { + private final AmazonS3 amazonS3; + + public static final String DIR_NAME = "USER_PROFILE"; + + @Value("${cloud.aws.s3.bucket}") + private String bucket; + + public String getS3(String bucket, String fileName) { + return amazonS3.getUrl(bucket, fileName).toString(); + } + + public String getS3FilePaths() { + return bucket; + } + + public String getFileName() { + return DIR_NAME + "/" + "Level1.png"; + } +} From 4d19c76054008f47e786de275ada8bd6749f00ef Mon Sep 17 00:00:00 2001 From: yunyoung1819 Date: Sat, 15 Jul 2023 21:54:29 +0900 Subject: [PATCH 2/2] :sparkles: feat(api): remove hard coding strings --- .../java/com/depromeet/external/aws/s3/AwsS3Service.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/backend/streetdrop-api/src/main/java/com/depromeet/external/aws/s3/AwsS3Service.java b/backend/streetdrop-api/src/main/java/com/depromeet/external/aws/s3/AwsS3Service.java index f6b6587c..639ed2d2 100644 --- a/backend/streetdrop-api/src/main/java/com/depromeet/external/aws/s3/AwsS3Service.java +++ b/backend/streetdrop-api/src/main/java/com/depromeet/external/aws/s3/AwsS3Service.java @@ -10,8 +10,6 @@ public class AwsS3Service { private final AmazonS3 amazonS3; - public static final String DIR_NAME = "USER_PROFILE"; - @Value("${cloud.aws.s3.bucket}") private String bucket; @@ -22,8 +20,4 @@ public String getS3(String bucket, String fileName) { public String getS3FilePaths() { return bucket; } - - public String getFileName() { - return DIR_NAME + "/" + "Level1.png"; - } }