본문 바로가기
AWS/AWS Architect Associate

S3

by 3.14pie 2023. 7. 3.

S3 - 파일을 버킷에 저장, S3의 파일은 객체라고 함, 버킷 이름은 중복 불가로 고유해야 함, key 는 파일의 전체 경로, 5TB까지 저장 가능, 5GB보다 큰 경우 멀티파트 업로드를 사용해 여러 부분으로 나눠 업로드 가능, 메타데이터(키/값 의 쌍), 태그(유니코드 키/값 쌍, 최대 10개), 버전 ID, 백업, 스토리지, 재해 복구 용도, 아카이브, 어플리케이션과 미디어 호스팅, 하이브리드 클라우드 스토리지, 빅데이터 분석

 

Security

    - User-based : IAM 정책으로 어떤 API 호출이 특정 IAM 사용자를 위해 허용되어야 하는지 승인

    - Resource-based : 버킷 정책으로 S3 콘솔에서 직접 할당 가능, 특정 사용자가 다른 사용자를 허용하는 등의 교차 계정, ACL(Access Contorl List)

    - 파일 암호화

    - JSON 기반 정책(리소스, 효과, 액션, 원칙)

    - Block Public Access : 데이터 유출 방지 목적, S3 버킷을 공개로 만들어도 이 설정이 활성화되어 있으면 버킷은 공개되지 않음

 

Website Hosting - S3를 이용해 웹사이트를 호스팅하고 엑세스하게 만들 수 있음, URL은 AWS 리전에 따라 달라짐, 공개 읽기가 활성화되지 않으면 안됨

 

Versioning - 파일 버전 관리 가능, 버킷 수준에서 활성화해야 함, 같은 키로 덮어 쓰는 경우 버전이 변경됨, 의도치 않은 삭제 방지(삭제하게 되는 경우에 삭제 마커를 추가한 것과 동일해 이전 버전 복구 가능), 롤백 가능, 버전 관리 활성화 전의 파일들은 null 버전을 가짐, 버전 관리를 비활성화해도 이전 버전이 삭제되지 않음

 

Replication - 서로 다른 AWS 계정 간에도 사용 가능, 비동기식 복제, 읽기 및 쓰기 권한 S3에 부여, 기능 활성화 후 새 객체만 복제 가능, 기존 객체 복제에는 S3 batch replication 사용, 작업을 삭제하려면 삭제 마커 추가, 버전 ID로 삭제하는 경우에 버전 ID는 복제되지 않음, chaining of replication은 불가(1번 버킷이 2번에, 2번이 3번에 복제되어 있어도 1번이 3번으로 복제되지 않음)

    - CRR : Cross Region Replication, 버킷이 서로 다른 리전에 존재, 컴플라이언스, 지연 시간 단축, 계정간 복제

    - SRR : Same Region Replication, 버킷이 같은 리전에 존재, 다수의 S3 버킷 간 로그 통합, 운영 및 개발 환경 실시간 복제

 

Storage Class - 내구성은 99.999999999% 9가 11개

    - Standard General Purpose : 99.99% 가용성, 지연 시간 짧음, 처리량 높음, 2개 기능 장애 동시에 감당 가능

    - Standard Infrequent Access : 자주 접속하지 않지만 필요 시 빠르게 접근해야 하는 경우, 위 클래스보다 적은 비용, 검색 비용 발생, 99.9% 가용성, 재해 복구, 백업 용도

    - One Zone Infrequent Access : 단일 존에서 99.5% 가용성, AZ가 파괴된 경우 데이터 손실, 온프레미스 데이터 2차 백업, 재생성 가능한 데이터 저장 용도

    - Glacier Instant Retrieval : 콜드 스토리지, 아카이빙, 백업 용도, 저비용 객체 스토리지, 밀리초 단위로 검색 가능, 분기에 한번 정도 검색, 최소 보관 기간이 90일

    - Glacier Flexible Retrieval : Expedited(1~5분 이내), Standard(3~5시간 이내), Bulk(5~12시간 이내) 시간 소요, 최소 보관 기간 90일

    - Glacier Deep Archive : Standard(12시간), Bulk(48시간), 데이터 검색에 가장 오래 걸림, 비용 가장 저렴, 최소 보관 기간 180일

    - Intelligent Tiering : 사용 패턴에 따라 엑세스된 티어 간 객체 이동 가능, 자동으로 객체 이동, 월별 모니터링 비용, 티어링 비용 발생, 검색 비용은 없음, Frequent Access(기본 티어), Infrequent Access(30일 동안 엑세스하지 않는 객체 전용 티어), Archive Instant Access(90일간 엑세스하지 않는 객체 전용 티어), Archive Access(선택 사항, 90 ~ 700일 이상까지 선택 가능), Deep Archive Access(선택 사항, 180 ~ 700일 이상 엑세스하지 않는 객체 대상)

 

스토리지 클래스 간 데이터 이동 가능

 

Life Cycle - 특정 접두사를 사용해 전체 버킷이나 일부 경로에만 하도록 지정 가능, 특정 객체 태그 지정 가능

    - Transition Action : 다른 스토리지 클래스로 객체를 전환 (ex.생성 60일 이후 Standard IA로 이동)

    - Experation Action : 일정 시간 이후 객체가 삭제 또는 만료되도록 설정

 

Requester Pay - 버킷 소유자가 아닌 요청자가 객체 다운로드 비용 지불, 요청자는 AWS 인증 필요

 

Event Notification - S3에서 발생하는 특정 이벤트에 자동으로 반응 (ex. 업로드되는 사진의 썸네일을 만드려하면 이벤트 알람을 만들어 원하는 대상으로 전달 가능, SNS, SQS, Lambda Function, EventBridge)

 

Performance - 빠른 응답 시간, 접두사 당 초당 3,500개 PUT, COPY, POST, DELETE, 초당 5,500개 GET, HEAD 요청 지원, 접두사(경로의 처음과 맨 끝 사이의 구성요소, bucket/folder/test/v1 = /folder/test/)

    - Multi part upload : 100MB 이상 권장, 5GB 필수, 병렬 업로드

    - S3 Transfer Acceleration : 파일을 AWS 엣지 로케이션으로 전송해 속도 증가, 데이터를 대상 리전에 있는 S3 버킷으로 전달, 멀티파트 업로드와 함께 사용 가능

    - S3 Byte Range Fetchs : 파일에서 특정 바이트 범위를 가져와 GET 요청을 병렬화, 실패한 경우에 더 작은 바이트 범위에서 재시도해 복원력 높음, 다운로드 속도를 높일 때 사용, 파일의 일부분만 검색할 때 사용

 

Select & Glacier Select - SQL 문으로 필터링하면 네트워크 전송이 줄어 CPU 비용도 감소, 필터링에 사용

 

Batch Operation - 단일 요청으로 기존 S3 객체에서 대량 작업을 수행, 재시도 관리 가능, 진행 상황 추적, 작업 완료 알림 확인, 보고서 생성, S3 Inventory 기능을 사용해 객체 목록 수집 후 S3 Select를 사용해 객체 필터링, 한번에 많은 S3 객체의 메타 데이터 및 프로퍼티 수정 가능, 배치 작업으로 S3 버킷 간 객체 복사 가능, 암호화되지 않은 모든 객체 암호화 가능, ACL, 태그 수정 가능, Glacier 에서 한번에 많은 객체 복원 가능, Lambda 함수 호출해 모든 객체에서 사용자 지정 작업 가능

 

Object Encryption : Server Side Encryption, Client Side Encryption

    - SSE-S3 : S3 관리형 키 사용, AWS에서 처리, 관리, 소유하는 키로 암호화 진행, 사용자는 접근 불가, AES-256, "x-amz-server-side-encryption":"AES256" 필수

    - SSE-KMS : KMS 키를 사용해 암호화 키 관리, 자신의 키 직접 관리, cloudtrail로 사용량 확인 가능, "x-amz-server-side-encryption":"aws:kms" 필수, 업로드나 다운로드 시 kms 키 필요, API 호출이 필요한데 초당 KMS 할당량에 포함됨

    - SSE-C : 고객이 제공하는 키 사용, 키가 AWS 밖에서 사용되지만 AWS로 키를 보내기 때문에 SSE에 포함됨, S3에 저장되지 않고 사용후 폐기, HTTPS 사용 필수, HTTP 헤더에 암호화 키 포함

    - Client Side Encryption : Amazon S3 Client Side Encryption Library 를 사용하면 구현이 쉬움, 데이터를 S3로 보내기 전에 클라이언트가 직접 암호화 해야 함, 복호화도 클라이언트 측에서 진행

    - SSL/TLS : S3에는 2개의 엔드포인트 존재, 암호화되지 않은 HTTP, 전송 중 암호화인 HTTPS

 

CORS - Cross Origin Resource Sharing, Origin = Scheme(protocol) + host(domain) + port, 웹 브라우저 기반 보안 메커니즘, 메인 오리진에 방문하는 동안 다른 오리진에 대한 요청을 허용하거나 거부함, 다른 웹사이트에 요청을 보내야 할 때 다른 오리진이 CORS 헤더를 사용해 요청을 허용하지 않으면 이행되지 않음(Access Control Allow Origin), 클라이언트가 교차 오리진 요청을 하면 정확한 CORS 헤더 활성화, *로 모든 오리진 허용 가능

 

MFA delete - MFA가 필요한 경우(객체를 영구적으로 삭제할 때, versioning 중단 시), MFA를 사용하려면 버킷에서 versioning 활성화

 

Access Log - 감사 목적으로 S3 버킷에 대한 모든 엑세스 로그 기록 가능, 어떤 계정에서든 S3로 보낸 요청은 다른 S3 버킷에 파일로 기록됨, Athena 데이터 분석 도구로 분석할 수 있음, 같은 AWS 리전, 로깅 버킷을 모니터링 버킷과 동일하게 설정 금지(루프에 걸려서 크기 증가)

 

Pre-Signed URL - S3 콘솔(~ 12시간), CLI(~ 168시간), SDK를 사용해 생성할 수 있는 URL, 업로드, 다운로드를 위해 특정 파일에 임시로 접근할 때 사용

 

Glacier Valt Lock - WORM(Write One Read Many) 모델을 적용하기 위해 사용, 객체를 가져와 Glacier 볼트에 넣은 후 수정이나 삭제가 불가능하도록 잠금, 볼트 잠금 정책 생성 후 편집되지 않도록 정책 잠금, 규정 준수, 데이터 보존

 

Object Lock - Versioning 활성화, WORM 모델 적용 가능, 객체에 각각 적용할 수 있는 잠금, 특정 객체 버전이 특정 시간동안 삭제되는거 차단 가능, 보존 기간 설정 필요, 법적 보존 설정 시 버킷 내 모든 객체를 무기한으로 보호, s3:PutObjectLegalHold 권한 사용자가 설정 가능

    - Retention mode (Compliance) : 객체 버전 덮어쓰기, 삭제 금지, 보존 모드 자체도 변경 불가, 보존 기간 단축 불가

    - Retention mode (Governance) : 객체 버전 덮어쓰기, 삭제, 로그 설정 변경 불가, IAM으로 권한 부여 받은 사용자는 가능

 

Access Point - 각 AP마다 고유의 DNS와 정책 존재, AP 마다 하나의 정책

 

Obejct Lambda - 객체를 호출한 어플리케이션이 회수하기 전에 수정

'AWS > AWS Architect Associate' 카테고리의 다른 글

Snow Family, FSx, Storage Gateway, Transfer Family, DataSync  (1) 2024.07.23
Cloud Front, Global Accelerator  (0) 2023.08.19
Route 53  (0) 2023.06.05
RDS, Aurora, Elastic Cache  (0) 2023.05.25
ELB, ASG  (0) 2023.05.21