참고
S3 (Simple Storage Service)
NOTE
업계 최고의 확장성과 데이터 가용성 및 보안과 성능을 제공하는 온라인 오브젝트(객체) 스토리지 서비스이다!
데이터를 온라인으로 오브젝트 형태로 저장하는 서비스!
•
온라인이 붙는 이유는 데이터 조작에 HTTP/HTTPS를 통한 API가 사용되기 때문이다.
•
객체는 S3 버킷에 저장되는 하나의 데이터를 의미
•
또한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있어 개발자가 쉽게 웹 규모컴퓨팅 작업을 수행할 수 있도록 한다.
•
데이터 양에 대한 비용도 저렴하고, 저장할 수 있는 데이터양이 무한에 가깝다.
S3 객체 스토리지 특징
NOTE
객체 스토리지 = 객체로 된 파일을 다루는 저장소!
•
반대개념으로 EBS가 있다.
•
OS나 게임 프로그램을 본체에 꽃혀있는 하드라는 스토리지에 저장하고 구동시킨다. 이는 매우 자연스러운 동작이지만 S3에서는 불가능하다. S3에 파일을 설치하는 행위는 불가능하고, 그냥 이미지나 영상 파일 등만 저장할 수 있음.
◦
⇒ 파일 업로드, 삭제, 업데이트만 가능하다!
S3을 사용하는 이유
NOTE
•
S3는 저장 용량이 무한대이고 파일 저장에 최적화 되어있다. 용량을 추가하거나 성능을 높이는 작업이 필요없다.
•
비용은 EC2와 EBS로 구축하는 것보다 훨씬 저렴하다
•
S3 자체가 수천 대 이상의 매우 성능이 좋은 웹 서버로 구성되어 있어 EC2와 EBS로 구축했을 때 처럼 Auto Scaling이나 Load Balancing에 신경쓰지 않아도 된다.
•
S3 자체로 정적 웹서비스가 가능하다. (html 파일을 저장하고 접근시킨다.)
•
동적 웹페이지와 정적 웹페이지가 섞여 있다면, 동적 웹페이지만 EC2에서 서비스하고 정적 웹페이지를 S3로 한다면 성능도 높이고 비용도 줄일 수 있다.
•
이외에도 아카이브, 데이터 레이크를 보유한 빅데이터 분석, 하이브리드 클라우드 저장소로 사용
S3 버킷 / 객체 개념
NOTE
S3에는 Bucket과 Object라는 개념이 있다!
Bucket안에 Objet들이 관리됨
Bucket
•
객체를 저장하고 관리하는 역할
•
디렉토리/폴더 개념으로 키는 파일명으로 이해해도 된다.
Object
•
데이터와 메타데이터를 구성하고 있는 저장 단위
◦
메타데이터 ⇒ 최종 수정일, 파일 타입등을 의미한다.
•
S3에 저장되는 모든 데이터는 객체라고 부르면 된다.
•
객체는 키를 통해 버킷에서 유일한 것으로 식별도리 수 있으며, 버킷에 존재하는 모든 객체는 단 하나의 키를 가진다.
S3 보안
NOTE
사용자 기반
IAM으로 권한을 가지고 있음!
•
IAM 정책
리소스 기반
•
버킷 정책
Bucket에서 허용하는 계정에대해 설정!
{
"Version": "2012-10-17",
"Id": "Policy1685336299656",
"Statement": [
{
"Sid": "Stmt1685336292683",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bohyeon-demo-s3/*"
}
]
}
JSON
복사
위의 정책은 S3 객체에 대해 모든사람이 접근하도록 해줌
◦
S3 콘솔에서 직접 할당할 수 있는 전체 버킷 규칙으로 버킷의 보안을 관리하는 일반적인 방법
◦
JSON으로 구성됨
•
객체 액세스 제어 목록
•
버킷 액세스 제어 목록
암호 키를 사용하여 객체 암호화
S3 버전관리
NOTE
파일에 버전 아이디를 붙임으로서, 버전관리를 사용해 S3 버킷에 저장된 모든 객체의 버전을 보존, 검색 및 복원할 수 있다!
기존 파일은 다른걸로 업데이트해도 버저닝으로 남아있음!
실제 index.html을 업데이트하고 버전관리로 확인한 결과
•
null 버전의 객체를 삭제하더라도 바로 삭제되는것이 아닌, 삭제 마커를 붙여 바로 복구할 수 있는 기능을 제공한다.
•
이전버전으로 쉽게 롤백 가능
S3 복제
NOTE
해당 버킷에 파일을 올리면 bucket v3에도 이제 파일이 같이 올라간다!
•
CRR (Cross Region Replication)
◦
두 리전이 다를 때
•
SRR (Same Region Replication)
◦
두 리전이 같을 때
•
복제를 활성화한 후에 새로운 업로드 된 객체만 복제 대상이 되고 기존 객체 복제를 위해선 S3 배치 복제 기능 사용
•
aws s3 sync 명령어를 사용해 소스 버킷에서 대상 버킷으로 복사가능
S3 스토리지 클래스
NOTE
간단하게 보는 전체 클래스
세부적으로 보기
•
내구성
◦
99.999..%의 내구성 보장 ⇒ 천만 개의 객체 저장 시 10,000년에 한 번 객체 손실 예상
•
가용성
◦
서비스가 얼마나 용이하게 제공되는지를 나타내며 스토리지 클래스에 따라 상이
Standard
NOTE
기본적으로 사용하는 스토리지 유형
•
99.99%의 가용성
•
자주 엑세스하는 데이터에 사용
•
지연 시간이 짧고, 처리량이 높으며 AWS에서 2개의 기능 장애를 동시에 버틸 수 있음
Standard-IA (Ifrequent Access)
NOTE
자주 액세스 하지는 않지만 필요할 때 빠르게 액세스 해야 하는 경우
•
Standard보다 비용이 적게 들지만 검색 비용이 발생
•
99.9%의 가용성
•
재해 복구와 백업 자료 보관등에 사용
One Zone-IA
NOTE
Standard-IA와 기능은 동일하지만 단일 AZ에만 저장
•
99.5%의 가용성
•
온프레미스 데이터를 2차 백업하거나 재생성 가능한 데이터 저장에 사용
Glacier
NOTE
아카이빙과 백업을 위한 저비용 객체 스토리지, 최소 보관 기간 90일
•
Glacier Instant Retrieval
◦
밀리초 단위로 검색 가능하고 분기에 한 번 액세스 하는 데이터에 적합
◦
최소 보관 기간이 90일
•
Glacier Flexible Retrieval
◦
Expedited - 데이터 검색에 1~5분 소요
◦
Standard - 데이터 검색에 3~5시간 소요
◦
Bulk - 비용은 무료이지만 데이터 검색에 5~12시간 소요
•
Glicier Deep Archive
◦
최소 보관 기간 180일
◦
Standard - 데이터 검색에 12시간 소요
◦
Bulk - 데이터 검색에 48시간 소요
◦
오래 걸리지만 가장 저렴
Intelligent Tiering(지능형 계층화)
NOTE
사용 패턴에 따라 액세스 된 티어 간에 객체 이동 가능
•
소액의 월별 모니터링 비용과 티어링 비용이 발생하지만 검색 비용은 발생하지 않음
•
예측할 수 없는 패턴으로 거의 접근이 안되는 경우
•
Fequent Access 티어 - 기본 설정
•
Infrequent Access 티어 - 30일 동안 액세스 하지 않는 객체 전용 티어
•
Archive Instant Access 티어 - 90일동안 액세스 하지 않는 객체 전용 티어
•
Archive Access 티어 - 선택사항, 90~700일 이상사용하지 않는 객체에 구성 가능한 티어