86 lines
6.0 KiB
Markdown
86 lines
6.0 KiB
Markdown
---
|
||
title: AWS — Amazon S3 multipart upload limits
|
||
source_type: official-doc
|
||
url: https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html
|
||
archive_url:
|
||
related_branches: [feature-frontend-large-object-transfer-contract]
|
||
related_projects: [ca-skeleton-frontend]
|
||
tags: [frontend, transfer, upload, multipart, object-storage, aws-s3]
|
||
created: 2026-07-28
|
||
---
|
||
|
||
# AWS — Amazon S3 multipart upload limits
|
||
|
||
> Layer: `raw/` — 외부 자료의 **원문 발췌·출처 기록**.
|
||
|
||
## 활용 branch (필수, 최소 1개+)
|
||
|
||
| Branch | 이 자료가 정당화하는 결정 |
|
||
|---|---|
|
||
| `[[raw/branch-notes/feature-frontend-large-object-transfer-contract]]` | `TRANSFER_PART_SIZE_BYTES` 의 **하한 검증**이 필요한 이유(`D8`), part 수 상한이 최대 전송 크기를 결정한다는 사실 |
|
||
|
||
## 출처
|
||
|
||
- 원본 URL: https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html
|
||
- 보조 URL:
|
||
- 아카이브 URL:
|
||
- 저자 / 조직: Amazon Web Services (Amazon S3 User Guide)
|
||
- 발행일: (문서 지속 갱신)
|
||
- 마지막 확인일: 2026-07-28
|
||
|
||
## 왜 저장했는지
|
||
|
||
branch 가 part size default 를 8 MiB, 병렬도를 3 으로 적어 두었는데 **"측정값이 아니라 초기 default"** 라고만 밝혀 두었다. 문제는 part size 가 취향의 문제가 아니라 **vendor 가 강제하는 하한**이 있는 값이라는 점이다. 하한 아래로 설정하면 전송이 마지막 part 를 제외한 전 구간에서 거부된다. vendor 를 아직 고르지 않았더라도(`FE-Q-012`) 대표적인 구현 하나의 실제 수치를 확보해야 "하한 검증을 계약에 넣어야 한다" 를 근거 있게 말할 수 있다.
|
||
|
||
> ⚠️ **vendor 선택이 아니다.** 이 문서는 Amazon S3 의 제약을 증명할 뿐이며, 이 프로젝트가 S3 를 쓴다는 결정은 존재하지 않는다(`FE-Q-012` 미해소). 다른 vendor 의 수치는 다를 수 있다.
|
||
|
||
## 핵심 인용
|
||
|
||
> [§Amazon S3 multipart upload limits] "In general, when your object size reaches 100 MB, you should consider using multipart uploads instead of uploading the object in a single operation."
|
||
|
||
> [§Amazon S3 multipart upload limits] "There is no minimum size limit on the last part of your multipart upload."
|
||
|
||
> [§표 — Maximum object size] "48.8 TiB"
|
||
|
||
> [§표 — Maximum number of parts per upload] "10,000"
|
||
|
||
> [§표 — Part numbers] "1 to 10,000 (inclusive)"
|
||
|
||
> [§표 — Part size] "5 MiB to 5 GiB. There is no minimum size limit on the last part of your multipart upload."
|
||
|
||
> [§표 — Maximum number of parts returned for a list parts request] "1000"
|
||
|
||
## 추출된 주장
|
||
|
||
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|
||
|---|---|---|---|---|---|
|
||
| C1 | S3 multipart 의 part size 는 **5 MiB 이상 5 GiB 이하**여야 한다 | [§표 — Part size] "5 MiB to 5 GiB." | `official-reference` | Amazon S3 | 다른 object storage 의 하한이 같다는 것 |
|
||
| C2 | 마지막 part 에는 최소 크기 제한이 없다 | [§limits] "There is no minimum size limit on the last part of your multipart upload." | `official-reference` | Amazon S3 | 마지막 part 를 특별 취급하지 않아도 된다는 뜻 — 오히려 분할 로직이 이 예외를 알아야 한다 |
|
||
| C3 | upload 당 part 수는 최대 **10,000** 이며 part number 는 1~10,000 이다 | [§표] "Maximum number of parts per upload / 10,000" | `official-reference` | Amazon S3 | 10,000 을 넘는 분할이 다른 vendor 에서도 불가능하다는 것 |
|
||
| C4 | 단일 객체 최대 크기는 48.8 TiB 다 | [§표 — Maximum object size] "48.8 TiB" | `official-reference` | Amazon S3 | 브라우저가 그 크기를 다룰 수 있다는 것 |
|
||
| C5 | list parts 요청 1회가 돌려주는 part 는 최대 1000 개다 | [§표] "Maximum number of parts returned for a list parts request / 1000" | `official-reference` | S3 API 소비자 | 프론트가 list parts 를 직접 호출한다는 것 — presigned 방식에서는 backend 책임일 수 있다 |
|
||
| C6 | 100 MB 부터 multipart 사용을 고려하도록 권고한다 | [§limits] "when your object size reaches 100 MB, you should consider using multipart uploads" | `official-reference` | S3 사용자 일반 | 100 MB 미만에서 multipart 가 금지된다는 것 — 권고이지 제약이 아님 |
|
||
|
||
## 적용 경계
|
||
|
||
- 이 자료가 직접 증명하는 것:
|
||
- `C1`~`C5`: S3 의 part size 범위·part 수 상한·객체 크기 상한이라는 **하드 제약**의 존재와 실제 수치
|
||
- 이 자료가 증명하지 않는 것:
|
||
- 이 프로젝트가 S3 를 쓴다는 것 (`FE-Q-012` 미해소)
|
||
- part size 8 MiB 나 병렬도 3 이 **최적**이라는 것 — 이 문서는 성능이 아니라 허용 범위만 말한다
|
||
- 브라우저에서 10,000 part 를 병렬 관리하는 것이 현실적이라는 것
|
||
- 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
|
||
- 실제 선택 vendor 의 part size 하한 (`FE-Q-012`) — 그 값이 `TRANSFER_PART_SIZE_BYTES` 검증의 기준이 된다
|
||
- part size × part 수 상한으로 계산되는 최대 전송 크기를 제품이 수용하는지
|
||
|
||
## 메모
|
||
|
||
- 인용 1 해석 후보 (미검증): `C1`+`C3` 을 곱하면 **고정 part size 가 최대 전송 크기를 결정**한다. 8 MiB × 10,000 ≈ 80 GB. 이 계산은 우리 도출이며 AWS 가 그렇게 적은 것이 아니다. 그 이상을 전송하려면 part size 를 키우거나 분할 전략을 바꿔야 한다.
|
||
- 인용 2 해석 후보 (미검증): `C1` 의 하한 때문에 `TRANSFER_PART_SIZE_BYTES` 는 자유값이 아니라 **검증 대상 계약값**이다. 8 MiB 는 S3 하한을 넘지만, 하한을 넘는다는 사실 자체를 부팅 시 검사하지 않으면 vendor 를 바꾸는 순간 조용히 깨진다.
|
||
- 추가로 봐야 할 동일 출처 페이지: `mpuoverview` (multipart upload 개요), presigned URL 만료 정책 문서
|
||
|
||
## 관련
|
||
|
||
- 같은 주제 다른 official-doc: `[[raw/official-docs/mdn-http-range-fetch-transfer]]`, `[[raw/official-docs/mdn-storage-quotas-eviction-persistence]]`
|
||
- 이 자료를 인용한 wiki 요약: 생성 전
|