- S3란? (Amazon Simple Storage Service)
- AWS의 대표적인 서비스
- 객체 스토리지
- 파일 업로드, 다운로드, 검색 가능
- 무제한 용량
- 다양한 인증 / 권한 부여 제공
- 특징
- 리전 기반 서비스
- 매우 안전
- CDN 서비스와 연동 가능
- s3를 정적인 컨텐츠에서 서버처럼 사용 가능
- 필요에따라 버저닝 기능 사용 가능
- 사용예
- 클라우드 저장소 (개인 파일 보관 용도)
- 서비스의 대용량 파일 저장소 (이미지, 동영상, 빅데이터)
- 서비스 로그 저장 및 분석 (서버에 저장되는 것은 안정성, 비용 측면에서 좋지않음)
- AWS 아데나를 이용한 빅데이터 업로드 및 분석
- 서비스 사용자의 데이터 업로드 서버 (이미지 서버, 동영상 서버)
- 중요한 파일은 EC2의 SSD(EBS)에 저장하지 말고 S3에 저장해야 함.
- 기본 실습 1
- 버킷(객체(파일)을 저장하기 위한 컨테이너) 생성
버킷의 이름은 글로벌하게 유니크 해야한다.
(전세계적으로 같은 이름이 존재해선 안된다.)
- 파일 업로드
s3에 올라가는 파일들은 무조건 고유한 URL을 갖게 된다. -> 버킷이 비공개이므로 기본적으로는 웹에서 볼 수 없지만, 권한 조정을 통해 가능하다.
- 폴더 사용
폴더 생성은 가능하지만, 실제로는 폴더가 아닌 prefix 개념이다.
- 파일 옮기기
복사 : 작업 > 복사 > 폴더명 변경
5. 버킷 내 파일, 버킷 자체 삭제
- 버킷을 삭제하기 전에 먼저 버킷 내부를 비워야 한다. (파일 하나하나 삭제 해야 하는 번거로움이 있음)
- 버킷 삭제 클릭 시 뜨는 팝업에서 버킷 비우기를 선택하여 한 번에 삭제 하는 것이 편리하다.
6. S3 관련 개념 2
- key: 버킷 안의 오브젝트를 식별하는 데 사용
버킷안에 폴더를 생성할 수 잇는데, 폴더는 사실 키의 접두사일 뿐이다.
예시를 들어서 설명하면 https://honux-inf.s3.amazonaws.com/2021-1/avartar.png 에서 2021-1/avatar는 폴더이기도 하지만, 버킷안의 오브젝트를 식별하는데 사용하는 key이다.
버킷 이름 : honux-inf, prefix(폴더) : 2021-1, 파일명 : avatar.png key : 2021-1/avatar.png
- versioning은 on/off가 가능하다.
7. S3 권한 제어
- ACL(Access Control List) : 객체마다 ACL 지정 가능. 간단한 제어에 사용
- Bucket Policy : IAM Policy와 유사한 문법. ACL보다 복잡하고 세부적으로 지정 가능
- IAM을 이용한 제어 : IAM 사용자에게 버킷 접근 권하능ㄹ 주기 위해 사용
- PresignedURL : URL을 이용하여 임시 권한을 부여하는 기능. 매우 유용함.
8. 권한 부여 실습
1. 버킷을 퍼블릭으로 만든다.
생성 시에 버킷 접근 권한을 허용할 수 있도록 만들 수 있지만,
아무 설정도 건드리지 않으면 퍼블릭이 아닌 상태로 만들어진다.
만약 허용하지 않았다면 객체 선택 > 권한에서 퍼블릭 액세스 비활성화 차단을 해제하면 된다.
2. 파일을 퍼블릭으로 만든다.
객체작업 > 퍼블릭으로 설정 (현재는 안되는 것 같다)
파일에 접속하여 권한 > ACL 편집
- bucket policy로 특정 폴더에 접근 권한 주기
디렉토리 이하의 모든 파일을 public으로 바꾸고 싶을 때 사용
버킷 권한의 버킷 정책을 수정한다. 편집 > 정책 생성기
- Policy type : S3 Bucket Policy
- Effect : Allow
- Principal : *
- Action : GetObject
- ARN 주소 기입 + /*
-
CLI로 S3 사용하기 -> 생략
-
S3 웹 호스팅
- 정적 웹 호스팅? S3를 웹 서버 처럼 사용가능 (정적인 웹페이지 한정)
- RouteS3를 이용해서 DNS 연동 가능
이 경우 버킷 이름이 도메인 이름과 같아야함 (ex. www.honux.io)
- 버킷을 버킷 정책을 이용하여 public으로 만든다.
- 버킷 속성에 정적 웹사이트 호스팅 활성화
인덱스 문서 - index.html 에러 문서 - error.html
- Multipart 업로드
- CLI, SDK 사용 시 단일 PUT 사용으로 5GB까지 업로드 가능(싱글파일 업로드) 관리 콘솔은 160GB까지
- Multipart Upload : 큰 파일을 쪼개서 병렬적으로 업로드. 5TB까지 가능
- 추가 사용에 유용한 정보
- 스토리지 클래스를 변경하면 요금을 절약할 수 있다.
- 라이프 사이클 규칙 지정을 통해 수명 관리가 가능하다.