설명
확장성, 데이터 가용성 및 보안과 성능을 제공하는 객체 스토리지 서비스
•
객체 스토리지 서비스: 파일만 가능 <-> Block Storage Service(EBS, EFS등)
◦
파일 설치 불가(이미지,동영상,워드등 업로드, 삭제, 업데이트만 가능하다)
•
무제한 용량
◦
단 하나의 객체는 0byte에서 5TB용량(하나의 파일은 용량제한이 있지만 그 파일을 몇개 업로드하는지는 무제한)
•
Bucket이라는 단위로구분
◦
디렉토리 개념
◦
Bucket 이름은 Global Unique
◦
즉 세계 어디에서도 중복된 이름이 존재할 수 없음
◦
Web Hosting시 도메인과 Bucket 명이 같아야함
•
99.999999999% 내구성
◦
0.000000001 % 확률로 파일을 잃어버릴 수 있음(국내 복권 당첨될 확률의 1/122)
•
99.9% SLA(이것보다 못하면 돈을 돌려준다는 약속)가용성(티어에 따라 다름)
내구성: 파일이 없어지느냐 안 없어지느냐
가용성: 실제로 내가 서비스 기간 중 파일을 다운할 수 있는지, 사용할 수 있는지에 대한 여부
(즉 사용중 0.1% 확률로 가용성이 불가하더라도 파일이 사라지거나 없어지는게 아님)
S3 API
•
파일 관련 API(업로드, 업데이트, 삭제 등)
◦
업로드 성공 시 HTTP 200코드 반환
◦
큰 용량의 파일의 경우 Multipart Upload 가능(큰 파일을 잘게 쪼갠 뒤 하나씩 업로드 해 S3에서 합침)(두가지 장점을 가짐 1. 업로드가 중간에 중지되더라도 나중에 이어서 업로드가 가능, 2. 분산해서 업로드 하기 때문에 속도가 더 빠르다)
◦
다운로드는 Torrent 지원
•
Bucket 관련 API(조회, 생성, 삭제)
•
기타 기능(Lifecycle, Replication 등)
S3 객체의 구성
•
key: 파일의 이름(경로와 같은 개념)
•
value: 파일의 데이터(실제 데이터)
•
Version Id: 파일의 버전 아이디
•
Metadata: 파일의 정보를 담은 데이터(S3 업로드시 value, metadata를 같이 업로드 가능하다)
•
ACL: 파일의 권한을 담은 데이터
•
Torrents: 토렌트 공유를 위한 데이터
S3 버저닝
•
모든 버전을 관리(삭제 포함)
•
활성화 해야함(기본적으로 비활성화)
◦
한번 활성화시 비활성화 불가능
•
수명주기 관리와 연동 가능
S3 Static Hosting
•
•
Static Web 호스팅 가능(정적인 데이터를 웹서버처럼 돌릴 수 있음)
◦
Html/JS 등으로 구성된 Static 사이트만 가능-> React 등
◦
호스팅 비용이 비교적 저렴함
◦
Serverless 구성의 기초
◦
동적 데이터는 AJAX 등으로 해결 가능
S3 일관성 모델(시험 응시시 중요함)
•
Put(새로 생성): 읽기 후 쓰기(Read After Write)
◦
파일을 올리고 성공한 즉시 읽기 가능
◦
먼저 Put한 요청이 우선권을 가짐
•
Update/Delete: 최종일관성(Eventual Consistency)
◦
파일을 삭제하거나 업데이트 이후 일정시간 후에 결과가 반영됨(1초 미만)
◦
원자성 확보 불가능
S3 티어
•
S3 Standard
◦
99.99% 가용성
◦
99.999999999% 내구성
◦
여러 장소에 분산 보관
•
S3-IA(Infrequently Accessed)
◦
자주 사용되지 않는 데이터를 저렴한 가격에 보관
◦
데이터를 불러올 때마다 비용 지불
•
S3-OneZoneIA
◦
IA와 같으나 하나의 AZ에만 저장됨
◦
덜 중요하고 자주 사용되지 않는 데이터
•
S3 Intelligent Tiering
◦
머신러닝을 사용해 자동으로 티어 변경
◦
퍼포먼스 손해/오버헤드 없음
•
S3-Glacier
◦
아카이브용 저장소
◦
저렴한 가격
◦
데이터를 가져오는데 분~ 시간 단위의 시간 소요
•
S3-Glacier Deep Archive
◦
매우 쌈
◦
데이터를 가져오는데 12시간 정도 필요함
S3 보안설정
•
Bucket Policy
◦
버킷 단위(버킷 안에 있는 파일 하나하나 세세한 설정 불가능)
◦
JSON 형식
•
ACL(Access Control List)
◦
팡리 단위
•
Access Log 전송가능
◦
다른 버킷 혹은 다른 계정으로 전송 가능
•
MFA를 활용해서 삭제 방지 기능
S3 암호화
•
S3의 데이터는 총 3가지 암호화로 구성
◦
On Transit: SSL/TLS(HTTS)
◦
At Rest
▪
SSE S3: S3에서 알아서 암호화
▪
SSE KMS: KMS 서비스(AWS 암호 키 패스워드를 관리)를 이용해 암호화
▪
SSE C: 클라이언트에서 제공한 암호를 통해 암호화
◦
클라이언트가 직접 암호화
S3 공유
•
S3의 공유는 3가지 방법으로 가능
•
Bucket Policy / IAM
◦
프로그램 액세스만 가능
◦
버킷 단위
•
ACL
◦
프로그램 액세스만 가능
◦
파일 단위
•
IAM 크로스 어카운트
◦
콘솔/ 프로그램 액세스 가능
S3 Cross Region Replication
•
다른 Region으로 복제 가능
•
버저닝이 활성화 되어 있어야함(원본, 대상 모두)
•
동일한 Region으로 복제 불가능
•
복제 기능 활성화 전 데이터는 복제되지 않음
•
버전 삭제 혹은 파일 삭제는 복제되지 않음
S3 수명주기(시험에 잘 나옴)
•
~~시간이 지난 후 ~~을 하라는 명령
◦
예: 30일이 지난 후 삭제
◦
예: 30일이 지난 후 Glacier로 옮기기
•
버전과 연동 가능
•
예전 버전과 현재 버전에 대해 설정 가능
•
파일이 업로드 / 삭제 / 업데이트 되었을 때 Lambda 호출 가능
추가 S3 연동 Service
S3 Transfer Acceleration
•
AWS의 네트워크를 활용해 각 Edge Location에서 더욱 빠른 업로드가 가능하다
Athena - S3
•
S3를 SQL 언어로 조회할 수 있는 서비스
◦
SQL 쿼리 사용
◦
Serverless
◦
로그를 조회하거나 분석하는데 주로 활용한다.
기본 조작
GUI
버킷 만들기
폴더 만들기
1.
버킷에 들어가서 폴더 만들기
2.
폴더 생성