Spring Boot 3.2에서 AWS S3 설정하기

lv2dev·2024년 1월 30일
0

파일을 저장할 떄 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 스택 자동 생성 기능을 비활성화하는 것이다.

build.gradle

 // 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 라이브러리를 추가해 준다.

AWS CloudFormation Stack

  • AWS 리소스를 모델링하고 설정하여 애플리케이션에 필요한 모든 리소스를 한 번에 프로비저닝하고 관리하는 서비스
  • CloudFormation을 사용하면, JSON 또는 YAML 형식의 템플릿을 작성하여 애플리케이션에 필요한 모든 리소스와 그 설정을 정의할 수 있습니다. 이 템플릿을 CloudFormation에 제출하면, CloudFormation은 템플릿에 정의된 리소스를 자동으로 생성하고 설정한다.
  • 스택 자동 생성 기능을 true로 설정하면 애플리케이션이 AWS CloudFormation Stack을 자동으로 생성하고 관리한다.
  • 어차피 AWS CloudFormation을 사용하지 않는다면 무시되는 설정이지만 명확하게 표시하기위해 proeprties에 명시해둔다.

Configuration

@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();
    }
}

profile
언제나 레벨업을 하고 싶은 영원한 lv1

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN