AWS a to z - S3

NTbell·2025년 2월 15일
0


이번에는 S3에 대해 알아보자!

Amazon S3(Simple Storage Service)

🚀 무한대로 확장 가능한 스토리지

  • 다양한 AWS 서비스와 연동 가능
  • 정적인 파일 저장에 최적화된 서비스

언제 사용하는가?

✅ DB 또는 캐시 백업
✅ 장애 복구
✅ 로그, 이미지 등 리소스 저장
✅ 정적 웹사이트 호스팅
✅ 미디어 처리
✅ 데이터 분석용 파일 저장 및 가져오기
✅ 정적 파일이 필요한 대부분의 서비스에서 사용됨


Bucket 🪣

  • S3의 가장 큰 단위, 디렉토리 개념으로 오브젝트 관리 (e.g. C드라이브, D드라이브와 유사)
  • 모든 리전과 계정에서 유일한 이름을 가져야 함
    • 닉네임 짓듯이 전 세계적으로 중복 불가
  • 리전 단위로 생성됨

네이밍 컨벤션

❌ 대문자 & _ 사용 불가
❌ 3~63자 이내만 가능
❌ IP 주소 불가
❌ 숫자 또는 영어 소문자로 시작해야 함
xn-으로 시작 불가
-s3alias로 끝날 수 없음

👉 퍼블릭 액세스 차단이 기본 (보안 문제 방지) 🔐
👉 버킷 내 폴더는 실제 디렉토리가 아닌 prefix 개념


Object 📁

  • 각 오브젝트(파일)는 Key(경로) 를 가짐
    s3://my-bucket/my_test.jpg
    s3://my-bucket/my_test_images/image.png
    • my_test_images/image.png 전체가 KeyName
    • UI에서는 폴더처럼 보이지만, 실제로는 경로명 (prefix)일 뿐

오브젝트 특징

  • 최대 크기 5TB (5GB 이상은 Multi-Part Upload 필요)
  • 메타데이터: 키-값 형태 저장
  • 태그: 보안, 라이프사이클 관리 용도
  • 버전 ID: 버저닝 설정 시 적용

버저닝 🔄

  • 오브젝트의 버전 관리 가능
  • 버킷 단위로 활성화/비활성화 가능
  • 삭제 방지 및 롤백 용이
  • 활성화 시 기존 오브젝트의 버전은 null로 설정됨

복제 ✨

  • 버저닝이 활성화된 경우에만 사용 가능
  • 유형
    • CRR (Cross Region Replication) 🌍: 컴플라이언스, 지연율 감소 목적
    • SRR (Same Region Replication) 🏠: 로그 통합, 테스트 환경 동기화 목적

복제 특징

  • 비동기 복사 방식
  • 다른 AWS 계정으로도 복사 가능
  • 신규 오브젝트만 복제됨 (기존 오브젝트는 S3 Batch Replication 사용 필요)
  • 삭제 복제 불가 (삭제 마커만 전달됨)
  • A → B → C 식의 연쇄 복제는 불가능
    • A → B로 복제된 파일은 C로 자동 복제되지 않음 (중간 단계 없음)

스토리지 클래스 🏗️

스토리지 클래스특징
Standard기본값, 높은 내구성 & 가용성
Standard-IA비교적 적은 접근이 예상될 때 적합
One Zone-IA단일 AZ에서 운영, 비용 절감 가능
Glacier장기 보관용 (저렴함)
Glacier Instant Retrieval즉시 검색 가능
Glacier Flexible RetrievalExpedited(1~5분), Standard(3~5시간), Bulk(5~12시간)
Glacier Deep Archive최소 180일 이상 장기 보관용
Intelligent-Tiering자동 티어 조정 (자주 사용 여부에 따라 이동)

라이프사이클 정책을 통해 자동 전환 가능


내구성과 가용성

  • 내구성
    • 멀티AZ간 오브젝트 내구성은 매우 높음
    • 천만개의 오브젝트를 저장한다고 가정할때 1만년에 1개 오브젝트가 손실되는수준
    • 모든 스토리지 클래스에 동일적용
  • 가용성
    • 서비스가 얼마나 쉽게 가용 가능한지 측정
    • 클래스마다 약간 씩 차이있음
    • standard의 경우 99.99%가용성 가지고있음
      • 1년에 53분정도는 접근이 어려울 수 있음

이벤트처리

  • S3:ObjectCreated, S3:ObjectRemoved, S3:objectRestore, S3:Replication 등의 액션에 사용가능
  • 오브젝트 명 필터를 적용할 수 있음
  • 이미지의 썸네일을 사용하는 등 후처리작업(이미지리사이징, 썸네일 생성, 워터마크생성)이 필요한 경우 사용하기에 적합
    • 사람 및 시스템에 알림을 가도록 할때 용이함
  • 이벤트 숫자에는 제한이 없다
  • 람다, SQS, SNS등의 서비스를 통해 이벤트를 핸들링
  • 대부분 1초 이내 이벤트가 전달되지만, 가끔은 1분 이상이 걸림

이벤트 브릿지 🔀

  • AWS 서비스 간 이벤트 라우팅

  • JSON 기반의 필터링 및 복잡한 이벤트 처리 가능

  • 이벤트를 S3뿐만 아니라 다양한 AWS 서비스와 연동 가능


Multi-Part Upload 🚀

  • 100MB 이상 파일 업로드 추천
  • 5GB 이상 필수 (단일 업로드 불가)
  • 병렬 업로드 가능 → 속도 향상

S3 Transfer Acceleration 🌍

  • AWS 엣지 로케이션을 통해 데이터 전송 속도 가속화
  • 멀티 파트 업로드와 호환 가능

S3 Byte-Range Fetches 📡

  • 특정 바이트 범위만 요청 가능 (병렬 다운로드 가능)
  • 대용량 파일에서 필요한 부분만 가져올 때 유용

S3 Select & Glacier Select 🎯

  • 서버 측에서 SQL 기반 필터링 후 데이터 전송
  • 네트워크 전송량을 줄이고, 클라잉언트의 cpu비용을 줄 일 수 있음
    -> 내가 원하는 데이터만 가져옴

S3 Select: S3 내부 파일에서 SQL을 이용해 필요한 데이터만 가져오기
Glacier Select: Glacier에 저장된 데이터에서 SQL을 이용해 필요한 데이터만 추출
=> ✅ 네트워크 비용 절감 & 데이터 처리 속도 향상에 유용


S3-pre signed URL

  • 특정 시간이 지나면 만료되는 url 을 생성 할 수 있음
  • pre-signed url은 s3콘솔, cli, sdk에서 사용가능
  • s3 콘솔에서 만든 url은 1분에서 720분까지 유효
  • cli를 통해 생성한 경우 168시간까지 셋팅가능
  • 생성할때 만들어진 GET/PUT에 대한 권한을 최종 사용자도 동일하게 가져옴
  • 언제 사용하나?
    • 로그인 한 사용자만 다운로드 할수있을때
    • 일시적으로 사용자가 업로드또는 다운로드를 해야하는 기능

S3 Batch Operation 🛠️

  • 대량의 S3 오브젝트 작업을 자동화하는 기능
  • 활용 사례
    • 오브젝트 태그 변경
    • 데이터 암호화 변경
    • 메타데이터 업데이트
    • 대량의 오브젝트 복사 및 삭제

분석 도구 활용법 🔍

  • AWS CloudTrail: S3 액세스 로깅 및 추적
  • AWS Cost Explorer: S3 비용 분석
  • AWS S3 Storage Lens: 스토리지 사용량과 액세스 패턴 분석
  • Amazon Macie: S3 데이터 보안 및 민감 정보 탐지

이 도구들을 통해 워크로드를 분석하고 최적화할 수 있음


S3 오브젝트 암호화 🔒

  • 서버 사이드 암호화 (SSE)와 클라이언트 사이드 암호화 (CSE)로 나뉨

SSE - 서버 사이드 암호화

1️⃣ SSE-S3: AWS가 관리하는 기본 암호화 🔑
2️⃣ SSE-KMS: KMS 키를 이용한 암호화 🏦
3️⃣ SSE-C: 사용자가 직접 제공한 키로 암호화 🔏 (HTTPS 필수)

CSE - 클라이언트 사이드 암호화

  • 클라이언트가 직접 암호화 후 S3에 업로드
  • Amazon S3 Client-Side Encryption Library 활용 가능
  • 암호화 키와 프로세스는 사용자가 완전히 관리

암호화 정책 적용 🛡️

  • Bucket Policy가 기본 암호화보다 먼저 실행됨 (요청을 받을지 거부할지 결정)
  • 기본적으로 SSE-S3 자동 적용 (모든 신규 오브젝트)
  • SSE-KMS 또는 SSE-C 사용 시 Bucket Policy를 통해 접근 제어 가능

🛠️ byte-range fetches, Multi-Part upload, S3 Transfer Acceleration 사례

필자 경우 이게 어떤작업을 할때 유용할까라는 생각이 들었다 특히, 이게 어떤 것인지 이론은 알겠으나 어떤 예시 상황에서 활용이 되는지 궁금했었다.

1️⃣ Byte-Range Fetches 📡

  • 특정 바이트 범위만 요청 가능 → 대용량 파일에서 필요한 부분만 다운로드 가능
  • 예시:
    • 동영상 스트리밍: 사용자 요청에 따라 필요한 부분만 로드
    • 빅데이터 분석: 로그 파일에서 특정 날짜의 데이터만 가져오기
    • 파일 복구: 대용량 압축 파일에서 특정 파일만 추출

2️⃣ Multi-Part Upload 🚀

  • 5GB 이상의 파일 업로드 필수 / 100MB 이상이면 권장
  • 여러 조각으로 나누어 병렬 업로드 가능 → 속도 향상
  • 예시:
    • 비디오 파일 업로드: 10GB 이상의 영상 파일을 빠르게 업로드
    • 백업 시스템: 대용량 DB 백업 파일을 효율적으로 전송
    • 클라우드 마이그레이션: 대량의 데이터를 안전하게 이전

3️⃣ S3 Transfer Acceleration 🌍

  • AWS 엣지 로케이션을 활용하여 데이터 전송 속도 향상
  • 예시:
    • 전 세계 사용자 대상 파일 업로드 가속화 (예: 글로벌 콘텐츠 플랫폼)
    • 멀티 지역에서 대량 데이터 수집 (IoT 센서 데이터 업로드)
    • 사용자가 AWS와 먼 위치에 있는 경우 (예: 한국에서 미국 리전에 S3 업로드)

3개를 다 써야 하는 예시 상황

💡 글로벌 영상 스트리밍 플랫폼 운영

📌 상황
한 글로벌 영상 스트리밍 플랫폼이 있으며, 사용자는 전 세계에 분포해 있음.
이 플랫폼에서는 초고화질(4K, 8K) 영상을 업로드, 저장, 스트리밍해야 함.

🚀 3가지 기능이 모두 필요한 이유

1️⃣ 사용자가 초고화질 영상을 업로드하는 경우 (Multi-Part Upload)

  • 50GB 이상의 대용량 영상 파일을 업로드해야 함
  • 네트워크 중간에 끊기더라도 다시 이어서 업로드할 수 있어야 함
  • 업로드 속도를 최적화하고 빠르게 전송할 필요가 있음
    해결책: Multi-Part Upload를 사용해 파일을 여러 조각으로 나누어 병렬 업로드

2️⃣ 전 세계 사용자가 영상을 업로드하는 경우 (S3 Transfer Acceleration)

  • 사용자가 한국, 미국, 유럽, 동남아 등 다양한 지역에서 파일을 업로드
  • 기본적으로 AWS 리전과 거리가 멀면 업로드 속도가 느려짐
  • 글로벌 서비스이므로 업로드 지연이 발생하면 안 됨
    해결책: S3 Transfer Acceleration을 사용하여 AWS 엣지 로케이션을 통해 전송 속도를 가속 🌍

3️⃣ 사용자가 특정 시간대의 영상을 스트리밍하는 경우 (Byte-Range Fetches)

  • 사용자가 2시간짜리 영화에서 1시간 30분 위치부터 보기 시작
  • 전체 파일을 다운로드할 필요 없이, 해당 바이트 범위의 데이터만 요청하면 됨
  • 특정 부분만 로딩하는 기능이 필요
    해결책: Byte-Range Fetches를 사용하여 특정 바이트 범위의 데이터만 스트리밍 📡
profile
최종빈의 컴퓨터교실

0개의 댓글

관련 채용 정보