본문 바로가기
클라우드/AWS

[AWS] S3(클라우드 스토리지 서비스)

by 클레어몬트 2025. 7. 3.

요즘 가장 대중적인 클라우드 스토리지 서비스는 바로 AWS의 S3(Simple Storage Service)이다.

이번 글에서 한번 S3의 개념부터 구조, 주요 기능, 실무 예시까지 다뤄보자!

 

 

ㅁS3(Simple Storage Service): AWS의 클라우드 기반 오브젝트 스토리지 서비스

 

파일 시스템처럼 디렉터리 구조를 가지지 않지만, 키-값 기반의 저장 방식으로 모든 데이터를 객체(Object)로 저장한다.

S3는 다음과 같은 특징을 갖는다:

  • 무제한 확장성: TB, PB 단위의 대용량 데이터도 저장 가능
  • 고가용성 및 내구성: 99.999999999%의 내구성(11 9's)을 보장
  • 서버리스 구조: EC2나 서버 없이도 파일 저장 가능
  • HTTPS 기반 접근: 안전한 인터넷 기반 접근

 

 

[S3의 기본 구성요소]

Bucket S3에서 데이터를 저장하는 최상위 단위. 파일 시스템의 폴더 개념과 유사
Object S3에 저장되는 데이터 단위. 파일 + 메타데이터로 구성
Key 객체를 식별하는 고유 이름. 버킷 내의 경로처럼 동작
Region 데이터가 저장되는 실제 물리적 위치. S3는 리전별로 존재함

 

(예시)

Bucket: my-company-bucket
Key: reports/2025/June/financial.pdf
Full S3 URI: s3://my-company-bucket/reports/2025/June/financial.pdf

 

 

 

[S3의 주요 기능]

1. 정적 웹사이트 호스팅

S3는 HTML, CSS, JS로 구성된 정적 웹사이트를 호스팅할 수 있다. 별도의 웹 서버 없이도 배포가 가능하며, Route53과 연동하면 도메인 연결도 가능하다!

 

2. 접근 제어(IAM, Bucket Policy)

  • IAM 정책: 사용자나 그룹에 접근 권한 부여
  • Bucket Policy: 특정 버킷 전체에 대해 권한 제어
  • Pre-signed URL: 일시적으로 접근 가능한 URL 발급

3. 버전 관리(Versioning)

동일한 Key에 여러 버전을 저장하여, 이전 버전 복원이 가능하다

 

4. 라이프사이클 정책

파일을 일정 기간이 지나면 Glacier(아카이브 스토리지)로 이동하거나 자동 삭제하는 정책을 설정할 수 있다.

 

5. 이벤트 알림

S3에 객체가 업로드되거나 삭제될 때, Lambda나 SNS, SQS에 이벤트를 전송할 수 있다.

 

 

 

(실무 활용 예시)

- 백엔드 로그 저장소로 활용

import boto3

s3 = boto3.client('s3')
s3.upload_file('/var/log/app.log', 'my-bucket', 'logs/2025/app.log')

 

 

- 이미지 업로드 및 공개 URL 반환

url = s3.generate_presigned_url(
    ClientMethod='put_object',
    Params={'Bucket': 'media-bucket', 'Key': 'profile/user123.jpg'},
    ExpiresIn=3600
)

 

 

 

+ 실제 AI 면접 서비스에서의 활용 예시 (SK AXIS 프로젝트)

  • PDF, EXCEL, STT 텍스트 결과를 S3에 저장
  • FastAPI에서 결과물을 s3://ai-interview/report/123.pdf 경로에 저장 후, Spring Boot가 해당 경로를 기준으로 사용자에게 다운로드 링크를 제공

 

 

!S3 사용 시 주의사항!

  • 퍼블릭 접근 차단: 보안 설정이 허술하면 누구나 파일에 접근할 수 있으므로, 퍼블릭 접근은 최소화해야 한다
  • 정책 충돌: IAM 정책과 버킷 정책이 충돌할 수 있으므로, 우선순위와 병행 적용 시 주의가 필요하다
  • 비용: S3 자체 비용은 저렴하지만, 요청 수, 트래픽, 버전 관리 등이 누적되면 비용이 증가할 수 있다