본문 바로가기

Cloud

5장] 스토리지 서비스 Amazon S3

Amazon S3
: 객체 스토리지 서비스로 웹 서버나 회사 내의 파일 서버와 같이 인터넷상에 데이터를 저장하는 장소를 제공한다.

- 웹 서버 기능
: URL을 설정하고 버킷에 누구나 접속할 수 있도록 함으로써 정적 웹사이트를 호스팅할 수 있다.

➕ AWS CloudFront는 고속 콘텐츠 전송 네트워크(CDN, Content Delivery Network) 서비스이다.
S3의 웹 사이트 호스팅 기능으로 구축한 웹 서버와 조합하여 많이 사용한다.
고속화는 웹 서버의 내용을 캐시하는 엣지 서버를 통해 네트워크 속도를 높인다.

- 쿼리 기능
S3 select, Amazon Athena는 csv, json과 같은 데이터를 select SQL을 실행하는 기능이다.

AWS 데이터 분석 기능 파일 특징
S3 select 구조화된 텍스트 형식의 데이터 하나 가장 심플하다
Amazon Athena 구조화된 텍스트 형식의 데이터 여러 개 - 반복해서 같은 작업을 할 때 편리하다
- 필요에 따라 분석용 서버를 생성하여 실행하기 때문에 실행하는 순간에만 비용이 발생한다
Amazon Redshift Spectrum 여러 개 - 가장 뛰어난 분석 및 예측 기능
- 미리 분석용 서버를 시작하고 이 서버를 사용하여 분석한다
- 대용량의 복잡한 데이터를 빠른 속도로 처리할 때 유용하다
➕Lambda는 이벤트 기반으로 코드를 실행하는 서비스로 S3와 연동해서 사용할 수 있다.
ex. S3 버킷에 객체를 업로드할 때 해당 이미지의 썸네일을 생성하고 파일이 업로드되면 알람을 보내는 함수 실행

스토리지 클래스
: 스토리지 종류

종류 설명
standard 3곳 이상의 AZ에 저장 -> 가용성 보장, 일반적으로 사용
intelligent-tiering 빈번한 엑세스와 간헐적 엑세스에 최적화된 두 가지 계층으로 나누어 객체 저장,
객체별로 모니터링하여 자동으로 계층 이동
infrequent access 저장 요금 ↓ 엑세스 요금 ↑
-> 엑세스 빈도가 낮고 용량이 큰 데이터
standard-infrequent access AZ 최소 3곳
one zone-infrequent access AZ 한 곳
-> 데이터 유실 가능성 有
reduced redundancy
storage
AZ 한 곳으로 standard에 비해 이중화 수준을 낮춰서 낮은 가격으로 제공 
S3 glacier / S3 glacier deep archive 대용량 데이터 장기간 백업용으로 '볼트' 컨테이너에 저장,
따라서 데이터를 읽을 경우 다른 S3 버킷으로 옮겨야 하는 작업 필요

S3 조작
- 관리 콘솔 외에 API와 SDK를 사용하여 업로드할 수 있다

버킷

대표적인 버킷 명명 규칙
- 버킷명은 S3 안에서 유일한 이름이어야 한다.
1. 처음과 마지막에 알파벳이나 숫자를 사용한다.
2. 3글자 이상 63글자 이하
3. DNS 명령 규칙에 따른다.
4. IP 주소 형식은 버킷명에 쓸 수 없다.
5. 대문자 또는 언더스코어(_)는 버킷명에 쓸 수 없다.

버킷 엑세스 제한
: 리소스(제한 버킷 및 객체), 작업(get/put/delete), 효과(allow/deny), 보안 주체(사용자)에 대해 설정할 수 있다.
- 버킷 정책
- 사용자 정책
- ACL(엑세스 제어 목록)에 의한 관리 정책

파일 업로드와 다운로드

방법
- 관리 콘솔 : 구글 크롬이나 파이어폭스 드래그 앤 드롭, 파일 크기 160GB 제한
- CLI

1. IAM 사용자 엑세스 키와 보안 엑세스 키를 발행하여 API와 SDK를 서드 파티 도구에 설정한다.

2. 객체를 여러 개로 나누어 세트 하나로 업로드하는 멀티 파트 업로드를 사용한다.

3. AWS Transfer for SFTP(SFTP 서버를 제공하는 서비스)를 이용한다.(과금)

4. AWS DataSync(온프레미스 스토리지 시스템과 AWS 스토리지 서비스 간에 대용량 데이터 전송을 위한 서비스)를 이용한다.

5. AWS Storage Gateway

엑세스 관리
- 엑세스 로그
- 스토리지 클래스 분석
- 객체 잠금(거버넌스 모드/규정 준수 모드)
- S3 인벤토리

버전 관리

수명 주기 정책
: 객체에 정기적으로 수행할 작업 설정
- Transition, Expiration, NoncurrentVersionTransition, NoncurrentVersionExpiration, AbortlncompleteMultipartUpload, ExpiredObjectDeleteMarker

교차리전 복제(CRR)
: 다른 리전의 버킷에 객체를 비동기적으로 복사하는 것 -> 데이터 유실 X

❗국외 반출이 안 되는 데이터를 복제하지는 않았는지, 특히 회사에서 관리하는 고객 데이터 같은 경우 신중하게 검토해야 한다.