티스토리 뷰
SMALL
build.gradle
// AWS s3
implementation 'software.amazon.awssdk:s3:2.20.14'
application.yml
보안을 위해 AWS S3와 관련된 access key나 secret key 등은 모두 application.properties파일에 적어주고 ${}를 통해 참고하도록 해주었다.
cloud:
aws:
credentials:
accessKey: ${AWS_ACCESS_KEY}
secretKey: ${AWS_SECRET_KEY}
region:
static: ${AWS_REGION}
stack:
auto: false
application:
bucket:
name: ${AWS_BUCKET_NAME}
S3Service
Spring boot의 Scheduled를 이용하여 자동 삭제 기능을 찾느라 다른 블로그를 많이 찾아봤다
다른 블로그에는 AmazonS3Client를 많이 사용한 모습을 볼 수 있었다
내가 사용할 건 S3Client이다
AmazonS3Client는 Java의 v1용 AWS SDK이고, S3Client는 Java의 v2용 AWS SDK이라고 한다.
v2의 SDK가 v1 SDK에 비해 AWS 서비스와 상호 작용하는 데 있어 현대적이고 차단되지 않은 접근 방식을 제공한다고 해서 S3Client를 사용하려고 한다
@Service
public class S3Service {
private final S3Client s3Client;
@Autowired
public S3Service(S3Client s3Client) {
this.s3Client = s3Client;
}
@Value("${AWS_BUCKET_NAME}")
private String bucketName;
@Value("${AWS_REGION}")
private String region;
public String uploadFileToS3(File file){
try{
String fileName = file.getName();
PutObjectRequest putObjectRequest = PutObjectRequest.builder()
.bucket(bucketName)
.key(fileName)
.build();
PutObjectResponse response = s3Client.putObject(putObjectRequest, file.toPath());
// 파일의 S3 경로 반환
return "https://%s.s3.%s.amazonaws.com/%s".formatted(bucketName, region, fileName);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Failed to upload file to S3", e);
}
}
}
반응형
LIST
'JAVA & Spring' 카테고리의 다른 글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준
- 파이썬
- gradleload오류
- SPRING오류해결
- randint
- 문제풀이
- JAVA오류해결
- 오븐시계
- 사람검출
- python공부
- database연결
- YOLO
- Turtle Graphic
- baekjoon
- 터틀그래픽예제
- 에러발생
- springboot
- UnsupportedClassVersionError
- streamlistener
- 터틀그래픽 명령어
- yolov8
- 사람수세기
- 터틀그래픽
- 10828번
- 다인승
- randrange
- konlpy
- tweepy
- Kkma
- 다인승탑승
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함