AWS S3 파일 저장소 시작하기 – 버킷 생성부터 이미지 서비스까지

1. 서버 디스크 말고 다른 곳에 파일을 저장해야 하는 이유

사용자가 프로필 사진을 업로드하면 어디에 저장해야 할까요? EC2 서버 디스크에 저장하면 간단하지만 문제가 생깁니다. 서버를 교체하거나 재생성하면 파일이 모두 사라집니다. 여러 서버를 운영할 경우 파일이 특정 서버에만 있어 다른 서버에서 접근할 수 없습니다. 디스크 용량이 한정되어 있어 파일이 많아지면 부족해집니다.

이 모든 문제를 한 번에 해결하는 것이 S3입니다.

2. S3가 특별한 이유 – 11 nines 내구성

**S3(Simple Storage Service)**는 AWS의 객체 스토리지 서비스입니다.

S3의 가장 큰 특징은 내구성입니다. 99.999999999%(9가 11개)의 내구성을 보장합니다. 10억 개의 파일을 저장해도 연간 단 1개가 손실될 확률입니다. 데이터를 여러 물리적 위치에 자동으로 복제해 이를 달성합니다.

저장 용량에도 제한이 없습니다. 파일 하나의 최대 크기는 5TB이며 파일 개수 제한도 없습니다.

3. 버킷과 객체 – S3의 기본 구조

**버킷(Bucket)**은 파일을 담는 최상위 컨테이너입니다. 실제 폴더와 비슷한 개념이지만 전 세계에서 유일한 이름을 가져야 합니다.

**객체(Object)**는 버킷 안에 저장되는 실제 파일입니다. 파일 자체와 메타데이터(파일 크기, 유형, 수정 날짜 등)로 구성됩니다.

경로 표현 방식은 버킷이름/폴더/파일명 형태입니다. S3에 폴더 개념은 없지만 / 기호를 사용해 폴더처럼 구조를 만들 수 있습니다.

4. S3 버킷 생성하기

AWS 콘솔에서 S3로 이동해 버킷 만들기를 클릭합니다.

버킷 이름을 전 세계 고유하게 정합니다. 날짜나 랜덤 문자열을 붙이면 충돌을 피할 수 있습니다. (예: myproject-images-20260101)

AWS 리전은 서비스가 운영되는 곳과 동일하게 선택하면 데이터 전송 비용이 절감됩니다.

퍼블릭 액세스 차단은 기본적으로 모두 차단으로 유지합니다. 공개 파일이 필요한 경우에만 특정 설정을 해제합니다.

버킷 버전 관리를 활성화하면 같은 이름의 파일을 덮어쓸 때 이전 버전을 보존합니다. 실수로 파일을 지워도 복구할 수 있습니다.

5. 파일 업로드하고 인터넷에서 접근하기

버킷을 클릭하고 업로드 버튼으로 파일을 올립니다. 업로드된 파일을 클릭하면 객체 URL을 확인할 수 있습니다. 형태는 https://버킷이름.s3.리전.amazonaws.com/파일명입니다.

기본적으로 버킷은 비공개라 URL로 접근하면 Access Denied 오류가 납니다.

파일을 공개적으로 서비스하려면 버킷 정책을 설정합니다. 버킷의 권한 탭 > 버킷 정책에서 아래 형태의 JSON을 입력합니다.

{ “Version”: “2012-10-17”, “Statement”: [{ “Effect”: “Allow”, “Principal”: ““, “Action”: “s3:GetObject”, “Resource”: “arn:aws:s3:::버킷이름/” }] }

이 설정을 적용하면 버킷의 모든 파일에 인터넷에서 URL로 접근할 수 있습니다.

6. 정적 웹사이트 호스팅으로 활용하기

S3의 숨겨진 강력한 기능이 정적 웹사이트 호스팅입니다. 별도 서버 없이 S3에 HTML 파일만 올리면 웹사이트가 됩니다.

버킷의 속성 탭 > 정적 웹 사이트 호스팅을 활성화합니다. 인덱스 문서에 index.html을 입력합니다.

이렇게 하면 별도 EC2 서버 없이 포트폴리오나 랜딩 페이지를 무료에 가까운 비용으로 운영할 수 있습니다. CloudFront와 연결하면 전 세계 빠른 속도로 서비스할 수 있습니다.

7. 실수로 데이터를 삭제하지 않으려면

S3 버킷에서 삭제된 파일은 기본적으로 복구가 어렵습니다. 아래 두 가지 기능을 활성화하면 실수로 인한 데이터 손실을 방지할 수 있습니다.

버전 관리(Versioning): 파일이 수정되거나 삭제되어도 이전 버전이 보존됩니다.

MFA Delete: 파일 삭제 시 MFA 인증을 요구해 실수 또는 악의적 삭제를 방지합니다.

중요한 데이터라면 다른 리전에 복제하는 교차 리전 복제(CRR) 설정도 고려합니다.

8. 정리 및 다음 단계

오늘 배운 핵심을 정리합니다.

  • S3는 무제한 용량, 99.999999999% 내구성을 제공하는 AWS 객체 스토리지입니다.
  • 버킷에 파일을 올리고 버킷 정책으로 공개 접근을 허용할 수 있습니다.
  • 정적 웹사이트 호스팅으로 EC2 없이 웹사이트를 서비스할 수 있습니다.
  • 버전 관리를 활성화하면 실수로 인한 데이터 삭제를 방지할 수 있습니다.

다음 글에서는 AWS RDS와 EC2 직접 DB 설치의 차이를 알아보겠습니다.

댓글 남기기

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.