✅ 개요
프로필 이미지를 저장할 AWS S3의 인프라를 구성하는 실습을 진행할 것이다.
✅ S3 버킷 만들기
1️⃣ 버킷 만들기 클릭
2️⃣ 버킷 만들기
1. 버킷 이름 지정
이름 같은 경우에는 중복이 없어야 하기 때문에 나만의 고유한 bucket 이름을 지정해야 한다.
2. 모든 퍼블릭 액세스 차단 해제
현재는 S3에 어디서든 접근가능하게 설정하기 위해 해제해준다.
이후 나머지 설정은 그대로 둔 뒤 버킷 만들기 클릭
3️⃣ 버킷 생성 확인
버킷이 정상적으로 잘 만들어졌다.
✅ 버킷 접근 권한 설정하기
앞서 모든 퍼블릭 액세스 차단을 해제했지만 그럼에도 버킷의 객체에 대한 접근은 기본적으로 막혀있다.
그렇기 때문에 따로 설정해 주어야 한다.
나는 다음과 같이 접근권한을 설정할 것이다.
1. 다운로드는 모두가
서비스를 사용하는 유저들은 S3의 이미지를 다운 받을 수 있어야 한다. 그렇기 때문에 다운로드 권한(GetObject)는 모두가 가능하게 설정할 것이다.
2. 업로드는 백엔드 서버만
아무나 이미지를 업로드하게 하면 안될 것이다. 그렇기 때문에 백엔드 서버에서만 업로드가 가능하게 설정할 것이다.
1️⃣ 다운로드 권한 설정하기
모든 사람들이 다운로드가 가능하도록 설정할 것이다.
1. 해당 버킷에 권한 탭에 들어간다.
2. 밑으로 내려 ‘버킷 정책’에서 ‘편집’ 클릭
3. 새 문 추가 클릭
4. S3>GetObject 추가
5. Principal “*”로 수정
각 항목의 의미
- Principal: “*” → 모든 사람에게
- Effect: “Allow” → 허락한다.
- Action: [ “s3:GetObject” ] s3에서 Object를 가져오는 것을
- Resource: [”arn:aws:s3:::bucket-test-jhk/*”] bucket-test-jhk 버킷의 모든 객체들에 대해서
변경사항 저장을 누르면 설정이 완료된다.
2️⃣ 업로드 권한 설정하기
내 백엔드 서버만 업로드가 가능하도록 설정할 것이다.
IAM유저를 생성해서 해당 권한을 설정하고 액세스 키를 통해 s3에 접근한다.
1. IAM에서 ‘사용자’ 메뉴로 들어가기
2. 사용자 생성 클릭
3. 사용자 세부 정보 입력
- Console에 대한 접근보다는 S3에 대한 접근을 설정할 것이기 때문에 [AWS Management Console에 대한 사용자 액세스 권한 제공]은 체크 해제했다.
4. S3 관련 권한 설정
- 권한 옵션에서 ‘직접 정책 연결’은 AWS가 사용자들이 많이 사용하는 권한들을 미리 정의해 놓은 것이다.
- AmazonS3FullAccess 권한을 추가한다.
5. 사용자 생성 클릭
6. 생성한 IAM 사용자 클릭
7. 보안자격증명 클릭
8. 액세스 키 만들기 클릭
9. 액세스 키 모범 사례 및 대안 선택
- 나는 AWS EC2에 S3에 접근하는 Spring Boot 서버를 띄울 것이기 때문에 AWS 컴퓨팅 서비스에서 실행되는 애플리케이션을 선택했다.
- ❗️ 하지만! 사용 사례의 구분은 일종의 가이드라인이지 어느것을 사용하더라도 동일하게 작동한다. 하지만 이후 유지용이성을 위해 적절하게 선택해주는 것이 좋다.
10. 액세스 키 정보 기억해두기
.csv 파일로 다운로드해도 괜찮고 따로 메모장에 복사-붙여넣기 해놓아도 괜찮다.
✅ 마치며
S3에 대한 인프라 설정은 기본적으로 끝이 났다 이제 Spring Boot와 연동하면 된다.
글이 너무 길어져 이 부분은 다음 포스트에서 다루도록 하겠다.
'AWS' 카테고리의 다른 글
[AWS 실습 프로젝트] 5. EC2에 스프링부트 백엔드 서버 배포하기 (0) | 2024.09.17 |
---|---|
[AWS 실습 프로젝트] 4. Spring boot로 S3에 이미지 업로드 및 수정 비즈니스 로직 구현하기 (0) | 2024.09.17 |
[AWS 실습 프로젝트] 3. Spring Boot와 S3 연동해서 이미지 업로드하기 (0) | 2024.09.17 |
[AWS 실습 프로젝트] 1. 프로젝트 개요 (0) | 2024.09.17 |
Amazon Ec2 인스턴스 생성하기 (0) | 2024.04.01 |