Project/Boilerplate

이미지 저장용 EC2 + S3 버킷 연동

조용우 2025. 4. 14. 18:41
@Configuration
public class S3Config {

    @Bean
    public S3Client s3Client() {
        return S3Client.builder()
            .region(Region.AP_NORTHEAST_2) // 서울 리전
            .credentialsProvider(DefaultCredentialsProvider.create())
            .build();
    }
}

✅ DefaultCredentialsProvider란?

DefaultCredentialsProvider는 AWS SDK가 제공하는 기본 전략입니다.
아래 순서대로 자격 증명을 탐색합니다:

순위 위치 설명
1️⃣ 시스템 속성 (-Daws.accessKeyId) JVM 실행 시 전달된 값
2️⃣ 환경 변수 (AWS_ACCESS_KEY_ID) EC2/Linux 환경 변수
3️⃣ Web Identity Token EKS 또는 IRSA
4️⃣ ~/.aws/credentials 파일 aws configure로 설정된 CLI 인증
5️⃣ 컨테이너 메타데이터 ECS 컨테이너 전용
6️⃣ EC2 인스턴스 메타데이터 IAM Role로 연결된 EC2에서 가장 많이 사용함

생략해도 기본이 DefaultCredentialsProvider라서 동일하게 동작합니다.

 


S3 버킷 생성


IAM 생성 -> 권한 -> 권한 추가 -> 인라인 정책 생성

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"s3:PutObject",
				"s3:GetObject"
			],
			"Resource": "arn:aws:s3:::boilerplate-image/*"
		}
	]
}

이 정책은 해당 버킷(boilerplate-image)에 있는 객체만 업로드/다운로드 가능하게 제한합니다.