쿼터
무료 요금제는 파일 스토리지 10 GiB를, Pro는 100 GiB를 포함합니다. 그 이상은 무료는 업로드를 거절하고 Pro는 차액을 청구합니다. 어느 쪽이든 파일을 읽고 삭제할 수 있습니다.
| 항목 | 무료 | 프로 |
|---|---|---|
| 스토리지 | 10 GiB | 100 GiB 포함 |
| 포함량을 넘으면 | 업로드 거절 | GiB·월당 $0.015, 지출 한도까지 |
| 객체 수 | 제한 없음 | 제한 없음 |
| 키 길이 | 1024바이트 | 1024바이트 |
| 목록 페이지당 개수 | 기본 100개, 최대 1,000개 | 동일 |
쿼터를 초과하면
여기서 두 요금제가 갈라집니다.
무료에서 쿼터는 벽입니다. 10 GiB에 이르면 put과 presign(PUT)이 507 quota_exceeded로 거절됩니다. 요금 청구로 바뀌는 일은 없습니다.
Pro에서 쿼터는 청구 항목입니다. 100 GiB를 넘어도 업로드는 계속되고, 넘은 만큼은 초과 사용량으로 청구됩니다. 거절은 조직의 지출 한도에 이르렀을 때만 일어납니다. 아래를 참고하세요.
두 요금제 모두 차단되는 것은 쓰기뿐입니다.
| 작업 | 무료, 쿼터 초과 | Pro, 쿼터 초과 | Pro, 지출 한도 도달 |
|---|---|---|---|
put | 507 quota_exceeded | 동작, 청구됨 | 507 quota_exceeded |
presign(PUT) | 507 quota_exceeded | 동작, 청구됨 | 507 quota_exceeded |
get, head, list, delete, presign(GET) | 계속 사용 가능 | 계속 사용 가능 | 계속 사용 가능 |
용량이 가득 찬 상태에서도 파일을 조회하고 삭제할 수 있어야 공간을 확보할 수 있습니다.
try {
await env.storage.put(key, body);
} catch (e) {
if ((e as { status?: number }).status === 507) {
return new Response("Storage is full", { status: 507 });
}
throw e;
}Pro 초과 사용량은 이렇게 청구됩니다
스토리지는 카운터가 아니라 게이지이므로, 청구되는 것은 최고치도 합계도 아닌 한 달 동안 보유한 양의 평균입니다. 서비스는 조직의 객체 바이트를 한 시간에 한 번 표본으로 재고 표본들을 평균합니다. 그 평균에서 100 GiB를 넘는 부분을 GiB·월당 $0.015로 청구하며, GiB 단위로 내림합니다. 두 바이트를 넘긴 조직에 청구 항목이 생기지는 않습니다.
가격과 포함량은 같은 단위 GiB(230바이트)를 쓰므로 "100 GiB 포함, 3 GiB 초과"가 읽히는 대로 계산됩니다.
초과 사용량은 요청과 CPU 초과 사용량과 같은 월 합계에 더해지고, 지출 한도가 판단하는 것이 바로 그 합계입니다. 한도는 기본적으로 켜져 있으며 고정 요금 위로 월 $20입니다. 합계가 한도에 이르면 조직은 다음 달 1일까지 지출을 멈춥니다. 요청에는 429 budget_exhausted로 응답하고, 업로드는 무료 프로젝트가 쿼터에서 보는 것과 같은 507 quota_exceeded로 거절됩니다. 그동안에도 읽기와 삭제는 계속됩니다.
현재 사용량 확인
runlot storage status
runlot storage status --jsonrunlot usage대시보드의 파일 저장소 탭에서도 같은 값을 확인할 수 있고, 위의 두 동작 중 어느 것이 내 요금제에 적용되는지도 적혀 있습니다.
알림
둘 다 조직의 admin에게 가고, 종류마다 프로젝트당 24시간에 한 번만 전송됩니다. 대시보드의 조직 화면에서도 확인할 수 있습니다.
| 알림 | 시점 |
|---|---|
storage_near_quota | 사용량이 쿼터의 **90%**에 도달함. 두 요금제 모두 전송됩니다. |
storage_quota_hit | 업로드가 실제로 507로 거절됨. 무료만 해당합니다. Pro에서 507은 지출 한도를 뜻하고, 그때의 알림은 한도를 명시하는 budget_exhausted입니다. |