파일을 저장할 떄 AWS S3를 사용할 예정이다.
먼저 properties access ket, secret key를 작성해준다.
cloud.aws.credentials.accessKey = 엑세스 키
cloud.aws.credentials.secretKey = 비밀 키
cloud.aws.stack.auto = false
# Bucket Name
cloud.aws.s3.bucket = 버킷명
# region
cloud.aws.region.static = 리전명
참고로
cloud.aws.stack.auto = false
부분은 AWS CloudFormation 스택 자동 생성 기능을 비활성화하는 것이다.
// https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-s3
implementation group: 'com.amazonaws', name: 'aws-java-sdk-s3', version: '1.12.619'
aws-java-sdk-s3 라이브러리를 추가해 준다.
@Configuration // 이 어노테이션은 이 클래스가 Spring의 Bean 설정 클래스임을 나타냅니다.
public class S3Config {
@Value("${cloud.aws.credentials.access-key}") // AWS 액세스 키를 application.properties 또는 application.yml 파일에서 가져옵니다.
private String awsAccessKey;
@Value("${cloud.aws.credentials.secret-key}") // AWS 비밀 키를 application.properties 또는 application.yml 파일에서 가져옵니다.
private String awsSecretKey;
@Value("${cloud.aws.region.static}") // AWS 리전을 application.properties 또는 application.yml 파일에서 가져옵니다.
private String region;
@Bean // 이 어노테이션은 이 메소드가 Spring Bean을 생성하는 팩토리 메소드임을 나타냅니다.
public AmazonS3 s3client() {
BasicAWSCredentials awsCredentials = new BasicAWSCredentials(awsAccessKey, awsSecretKey); // AWS 액세스 키와 비밀 키를 사용하여 AWS 자격 증명을 생성합니다.
// AmazonS3 클라이언트를 생성합니다. 이 클라이언트는 AWS S3 서비스와 상호 작용하는 데 사용됩니다.
// 클라이언트는 설정된 리전과 자격 증명을 사용합니다.
return AmazonS3ClientBuilder.standard()
.withRegion(region)
.withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
.build();
}
}