※ S3 (Simple Storage Service)
: 객체 스토리지 서비스
: 웹 기반 AWS Management Console, API 및 SDK 프로그래밍 방식 또는 타사 솔루션 (API/SDK 사용)로 액세스 가능
1. 특징
▶ 객체 스토리지 서비스
: 파일을 하나의 객체 단위로 관리
: 개별 객체는 5TB 초과 불가능, 하지만 객체 수 제한 없이 저장 가능
: 파일 수정 시 수정한 파일 전체를 다시 업로드 해야함
▶ 내구성 99.9999999%
: 파일 업로드 시 최소 3개의 가용영역에 복제본을 만든다 (내구성이 높은 이유)
: 높은 내구성, 가용성, 신뢰성
▶ 이벤트 트리거
: 특정 버킷(S3)으로 객체의 이벤트가 발생할 경우 자동알림 기능을 설정 가능
: 알림은 사용자에게 전송되거나 Lambda 스크립트와 같은 다른 프로세스를 트리거하는 데 사용할 수 있다
▶ 스토리지 클래스 분석
: 스토리지 액세스 패턴을 분석해 데이터를 올바른 스토리지 클래스로 이전 가능
▶ S3 데이터 전송 방식
: 콘솔, AWS CLI 또는 API를 사용해 전송
: S3 버킷에 업로드
: AWS DataSync를 이용해 전송
: AWS Transfer for SFTP 이용해 전송
→ AWS DataSync = 온프레미스 스토리지와 S3 또는 EFS 간 데이터 이동을 쉽게 자동화할 수 있는 데이터 전송 서비스
▶ 멀티파트 업로드
: 멀티파트 업로드 사용 시 대용량 객체를 관리 가능한 파트로 분할하여 업로드
: [ 멀티파트 업로드 프로세스 ]
: 업로드 시작 → 객체 파트 업로드 → 멀티파트 업로드 완료
: 멀티파트 업로드 요청이 완료되면 S3가 개별 조각으로부터 전체 객체를 다시 생성
: [ 멀티파트 업로드의 이점 ]
: 개선된 처리량
: 네트워크 문제로부터 빠른 복구
: 객체 업로드 일시 중지 및 재개
: 최종 객체 크기를 알기 전에 업로드를 시작
: 대용량 객체를 업로드
▶ Transfer Acceleration
: 전 세계에 분산된 AWS CloudFront의 엣지 로케이션을 통해 S3 버킷의 빠르고 간편한 데이터 전송을 지원
: 최적화된 네트워크 경로를 통해 S3로 라우팅된다
: [ Transfer Acceleration 사용사례 ]
: 전 세계 각지에서 중앙의 버킷으로 업로드하는 고객이 있는 경우
: 전 세계에서 정기적으로 기가바이트 또는 테라바이트 규모의 데이터를 전송하는 경우
: 인터넷을 통해 S3로 업로드할 때 사용 가능한 대역폭을 충분히 활용하지 못하는 경우
▶ S3 버전 관리
: 버전 관리 기능 사용 시 실수로 삭제하거나 덮어쓴 객체를 복구할 수 있다
: 영구적 제거가 아닌 삭제하는 경우 S3는 삭제 마커를 삽입해 현재 버전으로 표시
: 객체를 덮어쓴 경우 버킷에 새 객체 버전 생성
: 이전 버전으로 복원 가능
2. 스토리지 클래스 (Storage Class)
: 스토리지 액세스 패턴에 따라 운영 비용을 최적화할 수 있는 선택지
: S3 Standard → S3 Glacier Deep Archive로 갈수록 저장비용 ↓, 요청비용 ↑
▶ S3 Standard
: 자주 액세스하는 데이터
: 짧은 지연 시간과 높은 처리량 제공
▶ S3 Standard - IA
: 자주 액세스하지 않지만 필요할 경우 빠르게 액세스가 필요한 데이터
: IA = Infrequent Access
: S3 Standard와 동일한 짧은 지연 시간과 높은 처리량 제공
: 백업 및 재해 복구 파일용 데이터 스토어에 이상적이다
▶ S3 One Zone - IA
: 자주 액세스하지 않지만 필요할 경우 빠르게 액세스가 필요한 데이터
: 단일 AZ에 데이터를 저장
: 단일 AZ로 인해 S3 Standard - IA 에 비해 20% 비용 감소
: S3 Standard와 동일한 짧은 지연 시간과 높은 처리량 제공
▶ S3 Glacier
: 데이터 액세스 빈도가 매우 낮고 저렴한 스토리지 비용이 필요한 데이터
: 검색 지연 시간이 시간단위도 허용이 되는 데이터를 저장
: S3 Glacier는 S3 와 별개로 관리 콘솔 제공
: S3 Glacier 작업에서는 CLI 사용 또는 코드를 작성해야함
: 데이터 업로드 시 AWS CLI 사용 혹은 REST API, AWS SDK 사용해 요청 코드를 작성해야함
: [ 검색 옵션 3가지 ]
: 신속 = 보통 1 ~ 5분 이내 완료
: 표준 = 보통 3 ~ 5시간 이내 완료
: 대량 = 보통 5 ~ 12시간 이내 완료
: [ S3 Glacier 아카이브 및 저장소 ]
: 아카이브 = 사진, 동영상, 문서 등 저장소에 저장한 모든 객체, S3 Glacier 내 스토리지의 기본 단위
: 각 아카이브는 고유 ID가 있으며 아카이브를 업로드 시 S3 Glacier가 아카이브 ID가 포함된 응답을 반환
: 아카이브 ID는 아카이브가 저장된 리전에서 고유함
: 저장소 = 아카이브를 저장할 수 있는 컨테이너
: 저장소를 생성할 때 저장소 이름과 리전을 지정해야 함
: 저장소 잠금 기능 정책을 통해 규정 준수를 강화
▶ S3 Glacier Deep Archive
: 7-10년 동안 유지되는 데이터의 장기 보관을 위해 설계된 최저 비용 스토리지 클래스
: 12시간 이내 검색 가능
▶ S3 Intelligent-Tiering
: 변화하는 액세스 패턴으로 데이터의 스토리지 비용 자동 최적화
: 변경된 스토리지 클래스로 요금이 측정된다
: Frequent Access 및 Infrequent Access 티어는 S3 Standard와 동일한 짧은 대기 시간과 높은 처리 성능 제공
: Frequent Access 및 Infrequent Access에 최적화된 2개의 액세스 티어에 객체 저장
: Archive Access 및 Deep Archive Access 티어는 Glacier 및 Glacier Deep Archive와 동일한 성능 제공
: 드물게 액세스되는 객체에 대해서는 선택적인 자동 비동기 아카이브 기능 활성화
: 객체가 S3 Intelligent-Tiering 내의 액세스 티어 간에 이동할 경우 운영 오버헤드, 검색 요금 및 추가 요금 없음
3. S3 액세스 제어
▶ 액세스 제어 - 일반
: 기본적으로 모든 AWS S3 리소스 (버킷, 객체 및 관련 하위 리소스)는 비공개
: 리소스를 생성한 AWS 계정인 리소스 소유자 및 루트 사용자만 해당 리소스에 액세스 가능
: 소유자는 액세스 정책을 작성해 다른 사람에게 액세스 권한 부여 가능
: 그리고 "퍼블릭 액세스" 기능을 통해 S3에 대한 액세스 설정 가능
▶ 액세스 제어 - 버킷 정책
: S3 버킷에서 정책을 추가해 다른 AWS 계정 또는 사용자에게 저장된 객체에 액세스하도록 허용 가능
: 버킷 정책은 ACL 액세스 정책을 보완 또는 이를 대체 가능
: 버킷 정책은 20KB로 제한
▶ 액세스 제어 - CORS (Cross Origin resource Sharing)
: 한 도메인에서 로드되어 있는 클라이언트 웹 애플리케이션이 다른 도메인의 리소스와 상호 작용하는 방법 정의
: 자바 스크립트코드나 CSS 코드들을 참조 가능하게 허용해주는 방법
▶ 액세스 포인트
: 공유 버킷에 대한 액세스를 관리하기 위해 수백 개의 애플리케이션에 대한 액세스를 제어하는 단일 버킷 정책이 필요
: 하나의 S3에 여러 개의 액세스 포인트를 만들고 각각에 정책문서를 다르게 적용시키는 것
: 고객이 각 액세스 포인트의 고유한 액세스 제어 정책을 생성해 공유 데이터 집합의 액세스를 손쉽게 제어 가능
: 모든 액세스 포인트는 고객의 프라이빗 네트워크 내 S3 데이터 액세스에 대한 방화벽 구축을 위해 VPC로 제한 가능
: AWS 서비스 제어 정책을 사용하여 모든 액세스 포인트를 VPC로 제한 가능
: S3 액세스 포인트는 모든 리전에서 추가 비용 없이 사용 가능
4. 수명 주기 정책
: 운영자가 버킷 액세스 패턴을 분석하여 클래스를 지정할 때 클래스가 자동으로 변경가능하게 설정하는 기능
: 객체마다 또는 버킷마다 수명 주기 규칙을 설정가능
: 보관 기간이 끝날 경우 삭제해주는 기능도 있다
5. 비용
▶ 비용 종류
: 저장 비용 = 월별 GBytes
: 전송 비용 = 다른 리전 또는 인터넷으로 전송
: 요청 비용 = PUT, COPY, POST, LIST 및 GET 요청
▶ 비용 지불할 필요 없는 경우
: S3로 수신
: 동일한 리전 내 EC2 또는 CloudFront로 전송
: https://aws.amazon.com/ko/s3/pricing/
Amazon S3 Simple Storage Service 요금 - Amazon Web Services
S3 버킷에 객체를 저장하는 비용을 지불합니다. 부과되는 요금은 객체의 크기, 해당 월에 객체를 저장한 기간, 스토리지 클래스에 따라 다르며, 스토리지 클래스에는 S3 Standard, S3 Intelligent-Tiering,
aws.amazon.com