"100GB 를 올리고 100GB 를 내려받으면 얼마인가" 같은 질문에서 저장 단가만 곱하면 실제 청구액과 크게 어긋난다. S3 요금은 네 갈래로 나뉘고, 실제로 큰 몫을 차지하는 것은 저장이 아니라 바깥으로 나가는 전송량 인 경우가 많기 때문이다.
| 구성 요소 | 과금 기준 | 특징 |
|---|---|---|
| 저장 | GB 당 월 단가 | 스토리지 클래스별로 크게 다르다 |
| 요청 | 1000건 당 단가 | PUT 계열이 GET 계열보다 비싸다 |
| 데이터 전송(아웃바운드) | GB 당 단가 | 인터넷으로 나갈 때만. 들어오는 것은 무료 |
| 관리 · 부가 기능 | 기능별 | 인벤토리, 복제, 수명주기 전환, 분석 등 |
각 단가는 리전마다 다르고 수시로 바뀐다. 계산할 때는 반드시 공식 요금 페이지와 요금 계산기를 본다. (확인 필요 — 이 문서에 단가를 적지 않은 이유다.)
월 중간에 올리고 지운 객체는 보관한 기간에 비례해 계산된다. 항상 100GB 가 차 있는 상태와 월말에만 100GB 가 되는 상태는 요금이 다르다.
스토리지 클래스를 섞으면 계산이 복잡해진다. Standard-IA 나 Glacier 계열은 저장 단가가 싼 대신 최소 보관 기간과 최소 객체 크기가 걸려 있고, 꺼낼 때 별도 요금이 붙는다. 자주 읽는 데이터를 저렴한 클래스로 옮겼다가 오히려 비싸지는 일이 흔하다.
객체 하나당 PUT 한 번, GET 한 번이 기본이다. 즉 객체 개수 가 요청 요금을 결정한다.
멀티파트 업로드는 파트마다 요청이 발생한다. 아주 큰 파일을 올릴 때는 파트 수도 고려한다. 목록 조회(LIST) 도 요청으로 과금되며, 개별 GET 보다 단가가 높다.
들어오는 것은 무료다. 나가는 것이 과금 대상이고, 어디로 나가느냐에 따라 단가가 다르다.
| 경로 | 과금 |
|---|---|
| 인터넷으로 나감 | 가장 비싸다. 월 일정량까지 무료 구간이 있다 |
| 같은 리전 안의 EC2 등으로 | 대체로 무료 |
| 다른 리전으로 | 리전 간 전송 요금 |
| CloudFront 를 거쳐 나감 | S3 에서 CloudFront 구간은 무료, CloudFront 단가가 적용된다 |
Nextcloud 나 파일 공유 서비스의 백엔드로 S3 를 쓰면 사용자가 내려받는 양이 그대로 인터넷 아웃바운드가 된다. 이 항목이 전체 청구액의 대부분을 차지하는 구조가 된다.
인터넷 아웃바운드에는 월 무료 구간이 있고 그 크기가 과거에 바뀐 적이 있다. 예전 자료의 숫자를 그대로 믿지 말고 현재 값을 확인한다.
수명주기로 다른 클래스에 옮기면 전환 요청마다 요금이 붙는다. 작은 객체를 대량으로 전환하면 절약분보다 전환 비용이 클 수 있다. 버전 관리를 켜면 이전 버전도 계속 저장 요금을 낸다. 지운 줄 알았는데 용량이 줄지 않는 전형적인 이유다.
추정보다 실측이 정확하다.
TimedStorage, Requests-Tier1, DataTransfer-Out-Bytes 같은 사용 유형 이름이 위의 네 갈래에 대응한다.S3 호환 스토리지 서비스 중에는 아웃바운드 전송을 무료로 제공하거나 단가를 다르게 매기는 곳이 있다. 전송량이 많은 워크로드라면 총액이 크게 달라진다. 비교할 때는 저장 단가만 보지 말고 네 갈래를 모두 같은 기준으로 계산한다. 자체 구축(MinIO · Ceph) 과 비교한다면 하드웨어와 운영 인건비까지 넣어야 의미가 있다.