Search

S3

대분류
DevOps/Tool
소분류
AWS
유형
객체 스토리지 서비스
주요 레퍼런스
https://velog.io/@ghldjfldj/AWS-S3%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
속성
데이터 서비스
최종 편집 일시
2024/10/29 09:33
생성 일시
2024/08/12 05:19
13 more properties

설명

확장성, 데이터 가용성 및 보안과 성능을 제공하는 객체 스토리지 서비스
객체 스토리지 서비스: 파일만 가능 <-> 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.
폴더 생성

CLI