💡 S3 ?
Amazon S3(Amazon Simple Storage Service)는 업계 최고의 확장성과 데이터 가용성 및 보안과 성능을 제공하는 객체 스토리지 서비스이다. 즉, 어떤 규모 어떤 사업의 고객이든 이 서비스를 사용하여 웹 사이트, 모바일 애플리케이션, 백업 및 복원, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅데이터 분석 등과 같은 다양한 사용 사례에서 원하는 만큼의 데이터를 저장하고 보호할 수 있다.
Amazon S3 작동 방식
- S3는 데이터를 버킷 내의 객체로 저장하는 객체 스토리지 서비스다. 객체는 해당 파일을 설명하는 모든 메타데이터이다.
- S3에 데이터를 저장하려면 먼저 버킷을 생성하고 버킷 이름 및 AWS 리전을 지정해야 한다. 그런 다음 S3에서 객체를 해당 버킷에 데이터를 업로드한다.
- 각 객체에는 키가 있으며, 이는 버킷 내 객체에 대한 고유한 식별자이다.
S3 객체 스토리지 서비스
- 객체 스토리지 서비스 : 파일만 가능
- 파일 설치 불가
- 무제한 용량
- 단 하나의 객체는 0byte(key값만 존재)에서 5TB의 용량
- Bucket이라는 단위로 구분
- 디렉터리의 개념
- Bucket이름은 Global Unique
- 즉 전 세계에 어디에도 중복된 이름이 존재할 수 없다.
- Web Hosting시 도메인과 Bucket 명이 같아야 한다.
S3 API
- 파일 관련 API(업로드, 업데이트, 삭제 등)
- 업로드 성공 시 HTTP 200 코드 반환
- 큰 용량의 파일의 경우 Multipart Upload 가능(개당 5gb)
- 다운로드 Torrent 지원
- Bucket 관련 API(조회, 생성, 삭제 등)
- 기타 기능(Lifecycle, Replication 등)
S3 객체의 구성
- Key : 파일의 이름
- Value : 파일의 데이터
- Version Id : 파일의 버전 아이디
- Metadata : 파일의 정보를 담은 데이터
- ACL : 파일의 권한을 담은 데이터
- Torrents : 토렌트 공유를 위한 데이터
S3 Static Hosting
- 기본적으로 파일은 두 가지 웹 URL를 가지고 있다.
- Static Web 호스팅 기능
- Html/javascript 등으로 구성된 Static(데이터가 변하지 않는) 사이트만 가능
- 호스팅 비용이 저렴함
- Serverless 구성의 기초
- 동적인 데이터는 AJAX 등으로 해결 가능
S3 일관성 모델
- Put(새로 생성) : 일기 후 쓰기(Read After Write)
- 파일을 올리고 성공한 즉시 읽기 가능
- 먼저 Put 한 요청이 우선권
- Update / Delete : 최종 일관성(Eventual Consistency)
- 파일을 삭제하거나 업데이트 후 일정 시간 후에 결과가 반영됨(1초 미만)
- 원자성 확보 불가능
S3 보안 설정
- Bucket Policy
- 버킷 단위(파일 하나하나의 세세한 단위는 설정 불가능)
- JSON 형식
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadSid", "Effect": "Allow", // 유저 허용 여부 "Principal": "*", // 어떤 유저에게 허용을 할것이냐 "Action": "s3:GetObject", // 오브젝트를 갖고오는 액션 "Resource": "arn:aws:s3:::{bucket_name}/*" // 무엇을 S3에arn에 대한 bucket } ] }
- ACL(Access Control List)
- 파일 단위
- Access Log 전송 가능
- 다른 버킷 혹은 다른 계정으로 전송 가능
- MFA를 활용해 삭제 방지 가능
S3 암호화
- S3의 데이터의 암호화는 3가지 암호화로 구성
- On Transit : SSL/TLS(HTTPS)
- At Rest
- SSE S3 : S3에서 알아서 암호화
- SSE KMS : KMS 서비스를 이용해 암호화(AWS key 패스워드를 관리)
- SSE C : 클라이언트에서 제공한 암호화를 통해 암호화
- 클라이언트가 직접 암호화
S3 공유
- S3의 공유는 3가지 방법으로 가능
- Bucket Policy/IAM
- 포로그램 액세스만 가능
- 버킷 단위
- ACL
- 프로그램 액세스만 가능
- 파일 단위
- IAM 크로스 어카운트
- 콘솔/프로그램 액세스 가능
'AWS' 카테고리의 다른 글
[AWS] VSCode에서 AWS EC2(Ubuntu) SSH 연결하기 (0) | 2022.04.23 |
---|---|
[AWS] AWS 서비스인 Redshifs, EMR, Athena 특징 (0) | 2022.03.13 |
[AWS] AWS Glue 및 Amazon S3를 활용한 Data Lake 구축 (0) | 2022.03.06 |
[AWS] Python으로 AWS S3에 이미지 파일 업로드 (0) | 2022.02.27 |