이번에 진행하는 프로젝트에서 AWS S3에 파일을 저장/수정/삭제할 수 있는 기능 구현을 담당하게 되었다.
버킷 생성부터 업로드 로직 구현까지의 과정을 정리해 본다.
S3를 사용하는 이유
- S3는 거의 무제한의 데이터를 저장하고 확장할 수 있다. 데이터가 커져도 저장 공간이 부족할까 봐 걱정할 필요가 없는 것이다. (하지만 프리티어ㅠ)
- 일반적인 파일 서버는 트래픽이 증가함에 따라 장비를 증설해야 하지만 S3는 이 작업을 대행한다.
- 저장할 수 있는 파일 수의 제한이 없다.
S3 버킷 생성
이미지를 관리할 S3 버킷을 생성한다.
1. S3 서비스
2. 버킷 만들기
버킷 만들기를 눌러 버킷 설정을 해준다.
3. 일반 구성
버킷 이름은 지역과 상관없이 AWS 리전에 상관없이 고유한 이름이어야 한다. AWS 리전은 서울로 설정한다.
4. 객체 소유권
ACL을 활성화하면 다른 AWS 계정에서 소유권을 갖거나 접속 제어가 가능하게 된다.
내 계정만 소유할 수 있도록 ACL을 비활성화했다.
5. 퍼블릭 액세스 차단 설정
퍼블릭 액세스 차단을 위한 버킷 설정에 기본적으로 체크가 되어있다. 이 경우 외부에서 버킷에 접근할 수 없다.
이번에는 퍼블릭 접근을 허용하기 위해 체크를 해제했다.
단, 모든 액세스 차단 혹은 ACL을 이용하여 액세스 차단해 주는 것이 보안을 위해 좋다.
6. 나머지 설정
7. 버킷 생성 완료
IAM 계정 생성
이제 S3에 접근할 수 있는 IAM 계정을 생성한다. 생성된 계정 정보를 통해 우리 서비스에서 해당 S3로 접근할 수 있도록 할 수 있다.
💡 IAM은 AWS 리소스에 대한 액세슬 안전하게 관리할 수 있는 웹 서비스다. IAM을 통해 AWS 사용자, 그룹 및 역할을 생성, 관리하고 AWS 서비스 및 리소스에 액세스 하고 사용할 수 있는 특정 권한을 할당할 수 있다.(참고 링크)
1. IAM 서비스
AWS 서비스 중 IAM에 접근한다. 즐겨찾기를 해놓으면 편하다.
2. 사용자 추가
메뉴바에서 사용자 → 사용자 추가 버튼 클릭
3. 사용자 세부 정보 지정
사용자 이름을 작성한다.
4. 권한 설정
S3에 접근하기 위한 AmazonS3FullAccess를 정책으로 설정해 준다.
AmazonS3FullAccess는 S3에 대한 전체 액세스를 허용하는 권한이다.
5. 액세스 키 생성
액세스 키를 발급받아야 한다. 발급된 Access Key와 Secret Key를 활용해서 우리 서비스 애플리케이션에서 버킷에 접근할 수 있다.
IAM 생성 후 해당 IAM의 보안 증명 등록으로 이동 → 액세스 키 탭
6. 액세스 키 생성 완료
발급된 Access Key와 Secret Key는 잘 보관해두어야 한다.
버킷 생성부터 업로드 로직 구현까지의 과정을 정리해 본다.
이제 Spring 애플리케이션에서 S3로 이미지를 업로드하는 기능을 구현해 보자
다음 글은 아래 링크로!
'AWS' 카테고리의 다른 글
AWS - RDS Connection timed out 연결 오류 해결 (2) | 2023.03.16 |
---|---|
AWS - EC2 환경에서 AccessKey와 SecretAccessKey를 안전하게 관리하기 (0) | 2023.03.10 |