돌봄 워크 프로젝트에서 사진 저자을 클라우드가 아닌 로컬에 저장하는 방식을 이어오다 클라우드로 이전해야 겠다고 생각했다. 그래서, 기존 팀원이 구현해 놓은 로컬 폴더에 사진을 저장하는 방식으로 리팩토링을 진행해 내 서버에 저장하였다.
제공해주신 Java 코드 스니펫들은 AWS S3와 상호작용하여 파일을 업로드하는 기능을 구현한 것으로 보입니다. 특히 Presigned URL을 사용하고, S3 Multipart Upload 기능을 염두에 둔 DTO 설계가 포함되어 잇다.
S3 Multipart Upload는 "어떻게 큰 파일을 S3에 올릴 것인가?"에 대한 업로드 전략/프로세스
S3 Multipart Upload 과정에서, 특히 Upload Part (파트 업로드) 단계에서 Presigned URL이 매우 유용하게 사용됩니다.
UploadId를 받습니다.package com.balybus.galaxy.global.config;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3Client;
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 S3Config {
@Value("${cloud.aws.credentials.access-key}")
private String accessKey;
@Value("${cloud.aws.credentials.secret-key}")
private String secretKey;
@Value("${cloud.aws.region.static}")
private String region;
@Bean
public AmazonS3Client amazonS3Client() {
BasicAWSCredentials awsCredentials= new BasicAWSCredentials(accessKey, secretKey);
return (AmazonS3Client) AmazonS3ClientBuilder.standard()
.withRegion(region)
.withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
.build();
}
}