@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)에 있는 객체만 업로드/다운로드 가능하게 제한합니다.
'Project > Boilerplate' 카테고리의 다른 글
AWS EC2 Next.js 배포 (1) | 2025.04.15 |
---|---|
AWS EC2+RDS SpringBoot+MySQL 배포 (2) | 2025.04.15 |
Prometheus + Grafana 연동 (0) | 2025.04.12 |
로컬 개발에서 배포, 개발 환경 분리하기 (0) | 2025.04.10 |
Mock 테스트 중 엔티티 id 및 SecurityContextHolder 설정 (0) | 2025.04.02 |