TL;DR

  • AWS S3 요금체계의 핵심 개념과 용어를 한눈에 정리한다.
  • AWS S3 요금체계이(가) 등장한 배경과 필요성을 요약한다.
  • AWS S3 요금체계의 특징과 적용 포인트를 빠르게 확인한다.

1. 개념

AWS S3 요금체계은(는) 핵심 용어와 정의를 정리한 주제로, 개발/운영 맥락에서 무엇을 의미하는지 설명한다.

2. 배경

기존 방식의 한계나 현업의 요구사항을 해결하기 위해 이 개념이 등장했다는 흐름을 이해하는 데 목적이 있다.

3. 이유

도입 이유는 보통 유지보수성, 성능, 안정성, 보안, 협업 효율 같은 실무 문제를 해결하기 위함이다.

4. 특징

  • 핵심 정의와 범위를 명확히 한다.
  • 실무 적용 시 선택 기준과 비교 포인트를 제공한다.
  • 예시 중심으로 빠른 이해를 돕는다.

5. 상세 내용

작성일: 2026-02-24 카테고리: Cloud / AWS / S3 포함 내용: S3 요금, 스토리지 클래스, Lifecycle Policy, 비용 최적화, 데이터 전송 비용, Glacier, Intelligent-Tiering, S3 Select, CloudFront


1. 핵심 개념 - S3 요금의 구성 요소

S3 과금은 단순 용량이 아닌 복합 과금이다

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  흔한 오해: "S3 = 저장 비용만 내면 된다"                   │
│                                                             │
│  실제: S3 요금은 3가지 축으로 구성된다                      │
│                                                             │
│  ┌──────────────────────────────────────────────────────┐  │
│  │                                                      │  │
│  │    저장량           요청(API)         데이터 전송     │  │
│  │  (Storage)         (Requests)        (Transfer)      │  │
│  │                                                      │  │
│  │  월 평균 사용      PUT/GET/LIST       인터넷 아웃     │  │
│  │  GB 단위 과금      건당 과금          바운드 과금     │  │
│  │                                                      │  │
│  └──────────────────────────────────────────────────────┘  │
│                                                             │
│  + 스토리지 클래스에 따라 "데이터 검색 비용" 추가          │
│    (Glacier 등 아카이브 클래스 복원 시)                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2. 과금 항목 상세

스토리지 비용

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  스토리지 비용 = 월 평균 저장 용량 × 단가                  │
│                                                             │
│  계산 방식:                                                 │
│  ├── 1시간 단위로 측정한 사용량의 월 평균                  │
│  ├── GB 단위 과금                                           │
│  └── 월 중간에 삭제해도 보관한 시간만큼만 과금             │
│                                                             │
│  S3 Standard (us-east-1 기준):                             │
│  ├── 처음 50TB:     ~$0.023 / GB / 월                      │
│  ├── 50TB ~ 450TB:  ~$0.022 / GB / 월                      │
│  └── 450TB 초과:    ~$0.021 / GB / 월                      │
│                                                             │
│  서울 리전 (ap-northeast-2):                                │
│  └── ~$0.025 / GB / 월 (리전별로 차이 있음)                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

요청(API) 비용

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  요청 비용 = API 호출 횟수 × 단가                           │
│                                                             │
│  쓰기 계열 (비쌈):                                         │
│  ├── PUT, COPY, POST, LIST                                  │
│  └── ~$0.005 / 1,000건                                     │
│                                                             │
│  읽기 계열 (저렴):                                         │
│  ├── GET, SELECT                                            │
│  └── ~$0.0004 / 1,000건                                    │
│                                                             │
│  무료:                                                      │
│  └── DELETE 요청은 무료                                     │
│                                                             │
│  주의: 소용량 파일 수백만 개 → 요청 비용 폭탄 가능         │
│  예) 1KB 파일 100만 개 GET = $0.40                         │
│      100MB 파일 1개 GET   = $0.0004                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

데이터 전송 비용

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  인바운드 (S3로 업로드):   무료                             │
│                                                             │
│  아웃바운드 (S3에서 다운로드):                              │
│  ├── 인터넷으로:       ~$0.09 / GB (처음 10TB)             │
│  ├── 10TB ~ 40TB:     ~$0.085 / GB                         │
│  └── 40TB 초과:       ~$0.07 / GB                          │
│                                                             │
│  AWS 서비스 간:                                             │
│  ├── 같은 리전 내 EC2 ↔ S3:   무료                         │
│  ├── 같은 리전 내 Lambda → S3: 무료                        │
│  ├── 다른 리전 (Cross-region): ~$0.02 / GB                 │
│  └── CloudFront → S3:         무료 (Origin 요청)           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

데이터 검색 비용 (아카이브 클래스)

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  Standard 클래스 → 검색 비용 없음                          │
│                                                             │
│  Glacier 클래스 → 복원 시 별도 과금:                       │
│                                                             │
│  Glacier Instant Retrieval:                                │
│  └── 즉시 복원, ~$0.03 / GB                                │
│                                                             │
│  Glacier Flexible Retrieval:                               │
│  ├── Expedited (1~5분):    ~$0.03 / GB + $0.01 / 요청      │
│  ├── Standard (3~5시간):   ~$0.01 / GB                     │
│  └── Bulk (5~12시간):      무료                            │
│                                                             │
│  Glacier Deep Archive:                                      │
│  ├── Standard (12시간):    ~$0.02 / GB                     │
│  └── Bulk (48시간):        ~$0.0025 / GB                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3. 스토리지 클래스별 요금 비교

클래스 비교표

스토리지 클래스 저장 비용/GB/월 GET 1,000건 최소 보관 가용성 적합한 용도
S3 Standard ~$0.023 ~$0.0004 없음 99.99% 자주 접근하는 데이터
Intelligent-Tiering ~$0.023 ~$0.0004 없음 99.9% 접근 패턴 불규칙
Standard-IA ~$0.0125 ~$0.001 30일 99.9% 월 1회 미만 접근
One Zone-IA ~$0.01 ~$0.001 30일 99.5% 재생성 가능한 데이터
Glacier Instant ~$0.004 ~$0.03 90일 99.9% 분기 1회 접근, 즉시 복원
Glacier Flexible ~$0.0036 별도 과금 90일 99.99% 연 1~2회 접근
Glacier Deep Archive ~$0.00099 별도 과금 180일 99.99% 장기 보관, 거의 접근 안 함

클래스별 특성 상세

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  S3 Standard                                                │
│  ├── 저장 비용: 가장 비쌈                                   │
│  ├── 요청 비용: 가장 저렴                                   │
│  ├── 최소 보관 기간 없음 (1초 저장 후 삭제도 OK)           │
│  └── 사용 사례: 웹 서비스 이미지, 자주 읽는 데이터         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  Intelligent-Tiering                                        │
│  ├── 저장 비용: Standard와 동일하게 시작                   │
│  ├── 모니터링 비용: ~$0.0025 / 1,000 객체 / 월             │
│  ├── 30일 미접근 → Infrequent Access 자동 이동             │
│  ├── 90일 미접근 → Archive Instant 자동 이동 (선택)        │
│  └── 사용 사례: 접근 패턴 예측 어려운 데이터               │
│                                                             │
│  주의: 128KB 미만 객체는 Intelligent-Tiering 비효율         │
│        → 항상 Standard 요금 과금됨                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  Standard-IA (Infrequent Access)                           │
│  ├── 저장 비용: Standard의 약 54% 수준                     │
│  ├── 요청 비용: Standard보다 비쌈                          │
│  ├── 최소 보관 기간: 30일 (30일 전 삭제 시 차액 청구)      │
│  └── 사용 사례: 백업, DR 데이터, 월 1회 미만 접근          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  One Zone-IA                                                │
│  ├── Standard-IA보다 20% 저렴                              │
│  ├── 단일 AZ에만 저장 (AZ 장애 시 데이터 손실 위험)        │
│  └── 사용 사례: 재생성 가능한 썸네일, 중간 처리 결과       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  Glacier Deep Archive                                       │
│  ├── 저장 비용: ~$0.00099/GB/월 (Standard의 4% 수준)       │
│  ├── 최소 보관 기간: 180일                                  │
│  ├── 복원 시간: 최대 48시간 (Bulk)                         │
│  └── 사용 사례: 규정 준수 아카이브, 7년 이상 장기 보관     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4. 비용 최적화 전략

Lifecycle Policy로 자동 전환

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  Lifecycle Policy = 시간 경과에 따른 자동 클래스 전환       │
│                                                             │
│  예시: 로그 파일 Lifecycle                                  │
│                                                             │
│  0일     ──────→  S3 Standard                              │
│                   (빠른 접근 필요, 최근 로그 분석)          │
│                                                             │
│  30일    ──────→  Standard-IA                              │
│                   (가끔 접근, 비용 절감)                    │
│                                                             │
│  90일    ──────→  Glacier Flexible                         │
│                   (거의 접근 안 함, 저렴하게 보관)          │
│                                                             │
│  365일   ──────→  Glacier Deep Archive                     │
│                   (규정 준수 보관, 최저 비용)               │
│                                                             │
│  2555일  ──────→  삭제 (7년 보관 정책)                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Lifecycle Policy 설정 예시

{
  "Rules": [
    {
      "ID": "log-archive-rule",
      "Status": "Enabled",
      "Filter": { "Prefix": "logs/" },
      "Transitions": [
        { "Days": 30,  "StorageClass": "STANDARD_IA" },
        { "Days": 90,  "StorageClass": "GLACIER" },
        { "Days": 365, "StorageClass": "DEEP_ARCHIVE" }
      ],
      "Expiration": { "Days": 2555 }
    }
  ]
}

Intelligent-Tiering 활용

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  Intelligent-Tiering이 유리한 경우:                        │
│  ├── 접근 패턴이 불규칙하거나 예측 불가                    │
│  ├── 데이터가 많고 관리 오버헤드를 줄이고 싶을 때          │
│  └── 128KB 이상의 객체                                     │
│                                                             │
│  Intelligent-Tiering이 불리한 경우:                        │
│  ├── 128KB 미만 소용량 파일 다수 (모니터링 비용 손해)      │
│  ├── 접근 패턴이 명확히 예측 가능할 때                     │
│  └── 단기 보관 데이터 (1개월 미만)                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

S3 Select로 전송량 절감

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  일반 조회:                                                 │
│  ├── 파일 전체 다운로드 후 앱에서 필터링                   │
│  ├── 1GB CSV에서 10MB 데이터 필요 → 1GB 전송 비용 발생     │
│  └── 전송 비용 + 처리 시간 낭비                            │
│                                                             │
│  S3 Select 사용:                                            │
│  ├── SQL 쿼리로 S3 내부에서 필터링                         │
│  ├── 1GB CSV에서 필요한 10MB만 반환                        │
│  └── 전송 비용 90% 절감 가능                               │
│                                                             │
│  지원 형식: CSV, JSON, Parquet                             │
│  과금: 스캔한 데이터 $0.002/GB + 반환 데이터 $0.0007/GB   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

CloudFront vs Transfer Acceleration

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  CloudFront (CDN):                                          │
│  ├── 목적: 엣지에서 콘텐츠 캐싱 → 반복 요청 처리          │
│  ├── S3 아웃바운드 요청 자체를 줄임                        │
│  ├── S3 → CloudFront 전송: 무료                            │
│  ├── CloudFront → 인터넷: ~$0.01~0.08/GB                   │
│  └── 적합: 정적 파일, 이미지, 동영상 (반복 조회)           │
│                                                             │
│  Transfer Acceleration:                                     │
│  ├── 목적: 업로드 속도 향상 (업로드에 특화)                │
│  ├── AWS 엣지 → S3로 고속 네트워크 경유                    │
│  ├── 추가 비용: ~$0.04~0.08/GB 추가                        │
│  └── 적합: 전 세계 사용자가 대용량 파일 업로드하는 경우   │
│                                                             │
│  결론:                                                      │
│  ├── 다운로드 최적화 → CloudFront                          │
│  └── 업로드 최적화 → Transfer Acceleration                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

기타 최적화 방법

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  불필요한 버전/삭제 마커 정리:                              │
│  ├── 버저닝 활성화 시 이전 버전도 저장 비용 발생           │
│  ├── 오래된 버전 자동 삭제 Lifecycle 설정 권장             │
│  └── 삭제 마커도 누적되면 LIST 성능 저하 + 비용            │
│                                                             │
│  Multipart Upload 미완료 파트 정리:                         │
│  ├── 업로드 실패/중단 시 파트가 S3에 남아 과금됨           │
│  ├── Lifecycle: AbortIncompleteMultipartUpload 설정         │
│  └── 예) 7일 후 자동 삭제                                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

5. 실제 비용 예시 시나리오

소규모 시나리오

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  조건:                                                      │
│  ├── 저장: 100GB (S3 Standard, us-east-1)                  │
│  ├── 요청: 월 PUT 1만 건 + GET 10만 건                     │
│  └── 전송: 아웃바운드 10GB                                 │
│                                                             │
│  계산:                                                      │
│  ├── 스토리지: 100 × $0.023          = $2.30               │
│  ├── PUT 요청: 10,000 / 1,000 × $0.005 = $0.05             │
│  ├── GET 요청: 100,000 / 1,000 × $0.0004 = $0.04           │
│  └── 전송:    10 × $0.09             = $0.90               │
│                                                             │
│  월 합계: 약 $3.29                                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

중규모 시나리오

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  조건:                                                      │
│  ├── 저장: 1TB (S3 Standard)                               │
│  ├── 요청: 월 PUT 10만 건 + GET 100만 건                   │
│  └── 전송: 아웃바운드 500GB                                │
│                                                             │
│  계산:                                                      │
│  ├── 스토리지: 1,024 × $0.023         = $23.55             │
│  ├── PUT 요청: 100,000 / 1,000 × $0.005 = $0.50            │
│  ├── GET 요청: 1,000,000 / 1,000 × $0.0004 = $0.40         │
│  └── 전송:    500 × $0.09             = $45.00             │
│                                                             │
│  월 합계: 약 $69.45                                        │
│                                                             │
│  최적화 포인트:                                             │
│  ├── CloudFront 도입 시 전송 비용 대폭 절감 가능           │
│  └── CloudFront: 500GB × ~$0.02 = $10 (약 78% 절감)       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

대규모 시나리오 - Glacier 비교

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  조건: 10TB 저장 (로그/아카이브, 접근 드묾)                │
│                                                             │
│  S3 Standard로만 저장:                                     │
│  └── 10,240 × $0.023 = $235.52 / 월                       │
│                                                             │
│  Lifecycle 전략 적용:                                       │
│  ├── 최근 1개월 (1TB):   Standard   = $23.55               │
│  ├── 1~3개월 (2TB):      Standard-IA = $25.60              │
│  └── 3개월 이상 (7TB):   Deep Archive = $7.09              │
│                                                             │
│  Lifecycle 적용 합계: 약 $56.24 / 월                       │
│                                                             │
│  절감 효과: $235.52 → $56.24 (76% 절감)                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

6. 주의할 점 / 흔한 실수

소용량 파일 다수 vs 대용량 파일 소수

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  같은 총 저장량이라도 파일 구성에 따라 요청 비용 폭탄      │
│                                                             │
│  케이스 A: 1KB 파일 100만 개 (총 ~1GB)                    │
│  ├── 스토리지: ~$0.023                                     │
│  └── GET 100만 건: $0.40                                   │
│                                                             │
│  케이스 B: 1GB 파일 1개                                    │
│  ├── 스토리지: ~$0.023                                     │
│  └── GET 1건: $0.0000004                                   │
│                                                             │
│  → 케이스 A의 요청 비용이 100만 배 비쌈                   │
│                                                             │
│  해결책:                                                    │
│  ├── 작은 파일은 묶어서 업로드 (TAR, ZIP)                  │
│  ├── S3 Select로 내부에서 필터링                           │
│  └── 또는 DynamoDB/ElasticSearch로 메타데이터 분리         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

전송 비용 함정

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  무료인 경우:                                               │
│  ├── 인터넷 → S3 업로드 (인바운드)                         │
│  ├── 같은 리전 EC2 ↔ S3                                    │
│  ├── 같은 리전 Lambda → S3                                 │
│  └── CloudFront ↔ S3 (Origin 요청)                        │
│                                                             │
│  과금되는 경우:                                             │
│  ├── S3 → 인터넷 (아웃바운드): ~$0.09/GB                   │
│  ├── Cross-region 전송: ~$0.02/GB                          │
│  └── 다른 리전 EC2 ↔ S3                                    │
│                                                             │
│  흔한 실수:                                                 │
│  ├── 서울 S3 → 도쿄 EC2: Cross-region 과금 발생            │
│  └── 해결: 같은 리전에 S3와 EC2 배치                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Lifecycle 미설정으로 인한 비용 누적

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  버저닝 활성화 후 Lifecycle 미설정:                         │
│                                                             │
│  최신 버전:  파일 1개  100MB                               │
│  이전 버전:  파일 99개 9.9GB (자동 보관)                   │
│                                                             │
│  → 이전 버전 9.9GB도 모두 과금됨!                          │
│  → 6개월이면 이전 버전이 현재 버전의 수십 배가 될 수 있음  │
│                                                             │
│  해결책 - Lifecycle 규칙 추가:                              │
│  ├── 이전 버전 30일 후 Standard-IA 이동                    │
│  └── 이전 버전 90일 후 삭제                                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Multipart Upload 미완료 파트

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  문제:                                                      │
│  ├── 100GB 파일 Multipart 업로드 중 클라이언트 오류        │
│  ├── 업로드 중단되면 S3에 파트(조각)가 남음                │
│  ├── 완성된 파일이 없지만 파트 저장 비용은 발생            │
│  └── 인지 못하면 수십 GB가 쌓여 비용 증가                 │
│                                                             │
│  해결책:                                                    │
│  ├── Lifecycle: AbortIncompleteMultipartUpload             │
│  └── 예) 7일 후 미완료 파트 자동 삭제                      │
│                                                             │
│  현황 확인:                                                 │
│  └── aws s3api list-multipart-uploads --bucket 버킷명      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

스토리지 클래스 최소 보관 기간

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  최소 보관 기간 미만에 삭제 시 차액 청구:                   │
│                                                             │
│  Standard-IA:           최소 30일                          │
│  One Zone-IA:           최소 30일                          │
│  Glacier Instant:       최소 90일                          │
│  Glacier Flexible:      최소 90일                          │
│  Glacier Deep Archive:  최소 180일                         │
│                                                             │
│  예시: Standard-IA에 저장 후 10일 만에 삭제                │
│  → 10일 실제 저장 + 나머지 20일 요금 청구                  │
│                                                             │
│  → 단기 보관 데이터에 아카이브 클래스 사용 금지            │
│  → 단기 데이터는 S3 Standard 사용                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

DELETE 요청은 무료

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  오해: DELETE도 API 요청이니 과금되겠지?                   │
│  사실: DELETE 요청은 무료                                   │
│                                                             │
│  단, 주의:                                                  │
│  ├── 버저닝 활성화 시 DELETE → 삭제 마커 생성 (보관됨)     │
│  ├── 삭제 마커 자체는 저장 비용 없음                       │
│  ├── 하지만 LIST 요청 시 포함되어 LIST 비용 증가           │
│  └── 삭제 마커가 많으면 Lifecycle로 정리 필요              │
│                                                             │
└─────────────────────────────────────────────────────────────┘

관련 키워드

S3, S3 요금, 스토리지 클래스, Lifecycle Policy, Glacier, Glacier Deep Archive, Intelligent-Tiering, Standard-IA, 비용 최적화, 데이터 전송 비용, S3 Select, CloudFront, Transfer Acceleration, Multipart Upload, 버저닝, 아카이브, AWS 요금, 과금 구조