S3
- Simple Storage Service
- 글로벌 서비스 / 단, 데이터는 리전에 저장
- 무제한 용량
- 객체 스토리지 서버
- 스토리지 서버의 종료
- 버킷
- S3의 저장공간을 구분하는 단위
- 디렉토리 / 폴더와 같은 개념
- 버킷 이름은 전 세계에서 고유 값 : 리전에 관계 없이 중복된 이름이 존재할 수 없음
- 객체
- Owner : 소유자
- Key : 파일의 이름
- Value : 파일의 데이터
- Version Id : 파일의 버전 아이디
- Metadata : 파일의 정보를 담은 데이터
- 0byte가 가능한 경우
- 실제 파일의 데이터가 0이지만 메타 데이터만 담아서 쓰는 경우
- S3의 내구성
- 최소 3개의 가용 영역에 데이터를 분산 저장
- 99.99…%의 내구성
- 파일 잃어버릴 확률이 로또 당첨 확률보다 122배 작음
- 보안 설정
- S3의 모든 버킷은 새로 생성 시 기본적으로 Private
- 보안 설정은 객체 단위와 버킷 단위로 구성
- Bucket Policy : 버킷 단위
- ACL(Access Control List) : 객체 단위
- MFA를 활용해 객체 삭제 방지 가능
- 버저닝 가능
- 엑세스 로그 생성 및 전송 가능
버킷의 사용 목적별로 분리하자
- 정적 웹 호스팅 버킷
- 만약 백엔드 서버 없이 정적 웹 페이지만 배포하고자 할 때 사용가능
- 모든 접근을 다 허용 설정
- 대신 Cloudfront 같은 CDN 서비스를 앞 단에 두고 해당 도메인만 S3에 직접 접근 가능하게 변경
- Route 53를 사용해서 CNAME 레코드로 클라우드 프론트 엔드 포인트에 별칭을 붙여줌
- Amazon WAF를 클라우드 프론트 앞 단에 사용해서 아이피를 컨트롤 해줌
- Presigned URL
- 프라이빗 버킷이어도 URL이 있으면 접근 가능
- Time To Live 시간이 정해져 있어서 보안적으로 이점이 있음
- 누군가 버킷 내 파일에 접근해야 할 때 버킷 전체를 퍼블릭으로 전환하지 않아도 되어서 보안적으로 이점이 있음
- 서버에서 ShortURL을 구현해서 사용자한테 넘겨주는 것도 고려해보면 좋음

출처 : 우아한테크
참고자료
[우아한테크세미나] 사례별로 알아보는 안전한 S3 보안 가이드
쉽게 설명하는 AWS 기초 강좌 20: Amazon S3 기초