S3 정적 웹사이트, 버킷 설정의 순서
버킷 공개 범위·인덱스 문서·오류 문서를 순서대로 설정해 사이트를 띄웁니다.

- 버킷을 비공개로 두고 전송 서비스만 읽도록 허용했다
- 인덱스 문서와 오류 문서를 지정했다
- 경로 직접 입력 시의 동작을 확인했다
공개 범위를 가장 좁게 시작합니다
버킷을 만들고 가장 먼저 결정할 것은 공개 범위입니다. 흔한 실수는 편하게 만들려고 버킷 전체를 공개로 열어 두는 것입니다. 그러면 의도하지 않은 파일까지 누구나 내려받을 수 있습니다. 권장 순서는 1단계 버킷을 비공개로 두고, 2단계 전송 서비스를 앞에 붙이고, 3단계 전송 서비스만 버킷을 읽을 수 있게 허용하는 것입니다. 이 구성이면 사용자는 전송 서비스를 통해서만 파일을 받고, 버킷 주소로 직접 접근하는 경로는 막힙니다. 처음부터 이렇게 두면 나중에 공개 설정을 되돌리며 접근 오류를 찾는 작업이 생기지 않습니다.
인덱스 문서와 오류 문서를 함께 지정합니다
정적 사이트로 동작하게 하려면 두 가지를 지정해야 합니다. 첫째는 인덱스 문서입니다. 경로 끝이 슬래시로 끝날 때 어떤 파일을 보여 줄지 정합니다. 둘째는 오류 문서입니다. 없는 경로를 요청했을 때 보여 줄 파일을 정합니다. 여기서 주의할 점이 있습니다. 브라우저에서 경로를 직접 처리하는 방식의 사이트는 모든 경로를 인덱스 문서로 보내야 하므로, 오류 문서를 인덱스 문서와 같게 지정하고 응답 코드를 200으로 바꾸는 설정이 필요합니다. 이 설정을 빼면 사용자가 주소를 직접 입력했을 때만 오류가 나는 증상이 생깁니다.
요청 수와 전송량으로 월 금액을 냅니다
학습용 가정으로 계산합니다. 가정값은 월 요청 1,000,000건, 월 전송량 200기가바이트이고, 단가는 요청 1,000건당 0.4원, 전송 기가바이트당 100원이라고 두겠습니다. 요청은 1,000건 단위로 1,000이므로 요금은 400원입니다. 전송 요금은 20,000원이므로 합계는 20,400원입니다. 이것이 중간 계산값입니다. 최종 금액에는 전송 서비스를 앞에 둔 경우 그쪽 요금이 주가 되고 버킷 쪽 요청은 캐시 적중만큼 줄어듭니다. 적중률 90퍼센트라면 버킷 요청은 10분의 1로 내려가므로, 두 계층의 요금을 나눠 적어야 실제 금액이 나옵니다.
배포 뒤에 바뀌지 않는 문제가 생깁니다
결론을 뒤집는 조건은 캐시입니다. 파일을 새로 올렸는데 사용자에게 예전 내용이 보이는 일이 흔합니다. 원인은 브라우저와 전송 서비스가 이전 파일을 보관하고 있기 때문입니다. 해결 방법은 두 가지입니다. 파일 이름에 내용 기반 식별자를 넣어 새 이름으로 올리거나, 배포 후 해당 경로의 캐시를 지우는 것입니다. 첫 번째가 권장되는 이유는 무효화 요금과 지연이 없기 때문입니다. 다만 최초 진입점 문서는 이름을 바꿀 수 없으므로 그 파일만 짧은 보관 시간을 지정합니다. 그래서 배포 절차서에는 파일별 보관 시간 표를 함께 둡니다.
웹호스팅 실행 전 점검표
- 버킷을 비공개로 두고 전송 서비스만 읽도록 허용했다
- 인덱스 문서와 오류 문서를 지정했다
- 경로 직접 입력 시의 동작을 확인했다
- 파일별 보관 시간 표를 배포 절차서에 넣었다
이 가이드의 근거 문서
출처 확인일: 2026-10-19. 공식 문서에 기반한 편집 가이드이며 직접 수행한 벤치마크가 아닙니다. 비용 사례는 명시된 가정에 한합니다.
오류 제보 방법