TIL - 20251001

juni·2025년 10월 1일

TIL

목록 보기
141/317

1001 AWS 핵심 스토리지: S3 (Simple Storage Service)


✅ 1. S3 (Simple Storage Service) 개요

  • S3는 인터넷을 통해 언제 어디서든 원하는 양의 데이터를 저장하고 검색할 수 있는 객체 스토리지(Object Storage) 서비스입니다. 파일 시스템(EBS, EFS)과 달리, 파일을 "객체(Object)" 단위로 관리하며, 각 객체는 데이터, 메타데이터, 고유 키(Key)로 구성됩니다.

➕ 주요 특징

  1. 무한한 확장성: 저장 용량에 거의 제한이 없습니다.
  2. 높은 내구성 및 가용성: 업로드된 객체는 자동으로 최소 3개 이상의 가용 영역(AZ)에 복제되어 저장되므로, 매우 높은 내구성(99.999999999%)과 가용성을 보장합니다.
  3. 버킷 (Bucket): S3에 저장되는 객체들의 최상위 컨테이너입니다. 버킷의 이름은 전 세계적으로 고유(Globally Unique)해야 합니다.
  4. 객체 (Object): S3에 저장되는 기본 단위로, 파일과 메타데이터로 구성됩니다. 객체는 https://<bucket-name>.s3.<region>.amazonaws.com/<key> 와 같은 URL을 통해 접근할 수 있습니다.

✅ 2. S3의 주요 기능

➕ 2-1. 버전 관리 (Versioning)

  • 개념: 버킷에 대해 버전 관리를 활성화하면, 동일한 키(이름)의 객체를 덮어쓰거나 삭제하더라도 이전 버전들이 모두 보존됩니다.
  • 장점: 사용자의 실수로 인한 데이터 삭제나 덮어쓰기로부터 데이터를 보호할 수 있으며, 언제든지 이전 버전으로 쉽게 복원할 수 있습니다. 삭제된 객체도 "삭제 마커(Delete Marker)"가 생성될 뿐, 실제 데이터는 남아있어 복구가 가능합니다.

➕ 2-2. 객체 암호화 (Encryption)

  • S3는 저장된 데이터를 보호하기 위해 강력한 암호화 기능을 제공합니다.
    • 서버 측 암호화 (SSE): S3에 객체를 업로드하면, AWS가 데이터를 암호화하여 저장하고, 다운로드할 때 자동으로 복호화합니다.
      • SSE-S3: AWS가 관리하는 키로 암호화 (가장 간편).
      • SSE-KMS: AWS Key Management Service(KMS)를 통해 사용자가 키를 더 세밀하게 제어.
    • 클라이언트 측 암호화 (CSE): 데이터를 S3에 업로드하기 전에 사용자가 직접 데이터를 암호화하는 방식.

➕ 2-3. 정적 웹사이트 호스팅

  • HTML, CSS, JavaScript, 이미지 등 정적 콘텐츠로만 구성된 웹사이트를 서버(EC2) 없이 S3 버킷만으로 호스팅할 수 있는 기능입니다. 매우 저렴하고 확장성이 뛰어납니다.

➕ 2-4. S3 복제 (Replication)

  • 한 버킷의 객체를 다른 리전(Region)의 버킷으로 자동으로 비동기 복제하는 기능입니다.
  • 주요 용도:
    • 재해 복구 (Disaster Recovery): 주 리전에 장애가 발생해도 다른 리전에서 서비스를 계속할 수 있습니다.
    • 지연 시간 감소: 전 세계 사용자들에게 가장 가까운 리전에서 데이터를 제공하여 응답 속도를 향상시킵니다.

✅ 3. S3 접근 제어 및 보안

  • S3 버킷과 객체에 대한 접근을 제어하는 다양한 방법을 제공합니다. 기본적으로 모든 S3 리소스는 비공개(Private)입니다.
  1. IAM 정책: 특정 IAM 사용자, 그룹, 역할에게 S3 버킷 및 객체에 대한 접근 권한을 부여합니다.
  2. 버킷 정책 (Bucket Policy):
    • 버킷 자체에 연결되는 JSON 기반의 정책 문서입니다.
    • 버킷 전체 또는 특정 경로의 객체에 대해 누가(Principal), 무엇을(Action), 어떻게(Effect) 할 수 있는지 매우 세밀하게 제어할 수 있습니다.
    • 예시: "특정 IP 주소에서만 이 버킷에 접근하도록 허용", "특정 웹사이트(Referer)를 통해서만 이미지 다운로드를 허용"
  3. ACL (Access Control Lists): 객체별로 접근 권한을 제어하는 레거시 방식입니다. (현재는 IAM과 버킷 정책 사용이 권장됨)
  4. 액세스 로깅 (Access Logging): S3 버킷에 대한 모든 요청(누가, 언제, 무엇을 요청했는지)을 다른 버킷에 로그 파일로 저장하여 보안 감사 및 분석에 활용할 수 있습니다.

✅ 4. 비용 최적화: 스토리지 클래스와 수명 주기 관리

  • S3는 데이터의 접근 빈도와 중요도에 따라 다양한 스토리지 클래스를 제공하여 비용을 최적화할 수 있도록 돕습니다.
스토리지 클래스특징사용 사례
S3 Standard빠른 접근 속도, 높은 가용성
• 가장 비쌈
• 자주 접근하는 데이터 (웹사이트, 동적 콘텐츠)
S3 Intelligent-Tiering• 접근 패턴을 자동으로 분석하여 비용 효율적인 계층으로 이동• 접근 패턴을 예측하기 어려운 데이터
S3 Standard-IA• 자주 접근하지 않지만, 필요할 때 빠르게 검색해야 하는 데이터
• 저장 비용은 저렴, 검색 비용은 비쌈
• 장기 저장 데이터, 백업, 재해 복구
S3 Glacier• 데이터를 아카이빙하기 위한 매우 저렴한 스토리지
• 데이터 검색에 몇 분에서 몇 시간까지 소요될 수 있음
• 규정 준수, 법적 자료 보관, 장기 아카이브

➕ 수명 주기 관리 (Lifecycle Management)

  • 개념: 객체의 수명에 따라 미리 정의된 규칙에 따라 스토리지 클래스를 자동으로 변경하거나 객체를 삭제하는 기능입니다.
  • 규칙 예시:
    1. "객체 생성 후 30일이 지나면, S3 Standard에서 S3 Standard-IA로 이동시킨다."
    2. "그 후 60일이 더 지나면, S3 Glacier로 이동시킨다."
    3. "생성 후 365일이 지나면, 객체를 영구적으로 삭제한다."
  • 장점: 데이터 관리 작업을 자동화하고, 데이터의 수명 주기에 맞춰 비용을 크게 절감할 수 있습니다.

📌 요약

  • S3는 내구성과 확장성이 매우 뛰어난 객체 스토리지이며, 데이터는 버킷객체 단위로 저장됩니다.
  • 버전 관리암호화를 통해 데이터를 안전하게 보호하고, 버킷 정책으로 접근을 세밀하게 제어할 수 있습니다.
  • 정적 웹사이트 호스팅 기능으로 서버 없이 웹사이트를 운영하고, S3 복제로 재해 복구 및 글로벌 서비스를 구축할 수 있습니다.
  • 데이터의 접근 빈도에 따라 다양한 스토리지 클래스를 선택하고, 수명 주기 관리 규칙을 통해 스토리지 클래스 간의 이동 및 삭제를 자동화하여 비용을 최적화하는 것이 매우 중요합니다.

0개의 댓글