Post

AWS S3

S3의 개념, 사용법, 보안 설정, 고급 기능, 비용 전략, 실무 활용까지 정리

AWS S3

1. S3 소개 및 기본 개념

S3란?

  • AWS에서 제공하는 무제한 확장 가능한 객체 스토리지 서비스
  • 파일 단위가 아닌 객체(Object)로 저장
  • 99.999999999% 내구성, 99.99% 가용성을 자랑

주요 특징

  • HTTP/HTTPS 프로토콜로 직접 접근 가능
  • 정적 웹사이트 호스팅, 백업, 로그 저장 등에 광범위하게 활용
  • 다양한 스토리지 클래스를 통해 비용 최적화 가능

S3 용어 정리

용어설명
Bucket데이터를 담는 최상위 컨테이너. S3에서 파일을 저장하려면 반드시 버킷이 필요
Object실제 파일 데이터 + 메타데이터 (Content-Type, 태그 등)
Key버킷 내에서 객체를 구분하는 식별자. 경로처럼 사용됨
Region버킷이 위치한 물리적 리전. 데이터 전송 속도와 규정 준수에 영향을 줌

2. S3 기본 사용법

버킷 생성

  • 버킷 이름은 전 세계에서 유일해야 하며 DNS 호환 방식 권장
  • 리전 선택은 서비스와의 거리, 요금 정책 등을 고려
  • 기본적으로 퍼블릭 접근 차단 설정이 활성화됨

객체 업로드 및 다운로드

  • S3 콘솔에서 단일 파일, 폴더 업로드 가능
  • 파일에 따라 공개 설정을 변경할 수 있음
  • 다운로드 링크는 Pre-signed URL 기능을 활용 가능

폴더 구조 관리

  • S3는 계층 구조가 아닌 Key Prefix 기반 구조
  • user/profile/jaden.png처럼 객체 키에 /를 사용하여 가상의 폴더처럼 구성

3. S3 권한 및 보안 설정

IAM Policy

  • 특정 사용자, 그룹, 역할에 접근 권한 부여
  • S3뿐만 아니라 전체 AWS 서비스 접근 제어
1
2
3
4
5
{
  "Effect": "Allow",
  "Action": "s3:*",
  "Resource": "arn:aws:s3:::my-bucket/*"
}

내부 사용자 관리에 적합


Bucket Policy

  • 버킷 자체에 JSON 형식의 정책 부여
  • 외부 사용자 또는 서비스에 대해 퍼블릭 접근 허용
1
2
3
4
5
6
{
  "Effect": "Allow",
  "Principal": "*",
  "Action": "s3:GetObject",
  "Resource": "arn:aws:s3:::example-bucket/*"
}

정적 웹사이트 호스팅, 제3자 접근 허용 시 유용


ACL (Access Control List)

  • 객체 또는 버킷 단위로 직접 권한 부여
  • 현재는 제한적으로 사용되며 보안상 비추천

보안 팁

  • 퍼블릭 접근을 반드시 차단하고 필요한 경우에만 버킷 정책 허용
  • 서버 측 암호화 (SSE-S3, SSE-KMS) 또는 클라이언트 측 암호화로 보안 강화
  • CloudTrail, Access Analyzer로 감사 로깅 및 접근 분석 가능

4. 고급 기능

버전 관리

  • 동일한 Key에 대해 수정 이력을 모두 보관
  • 실수로 삭제한 경우도 복원 가능

수명 주기 정책

  • 지정된 날짜 또는 조건에 따라 객체를 자동으로 Glacier로 이전 또는 삭제
  • 백업/아카이브 전략과 결합 시 비용 절감에 탁월

이벤트 알림

  • 객체 업로드, 삭제 등의 이벤트 발생 시 Lambda, SQS, SNS로 자동 알림 연동 가능
  • 서버리스 애플리케이션의 핵심 구성 요소로 활용 가능

5. 비용 최적화 전략

스토리지 클래스 선택

클래스특징사용 예시
Standard기본, 빠른 접근정적 웹, 앱 자산
Intelligent-Tiering자동 계층 전환예측 어려운 데이터
Standard-IA드문 접근백업, 로그
One Zone-IA단일 AZ덜 중요한 백업
Glacier장기 보관감사, 기록물
Glacier Deep Archive초장기규제/법적 보관

선택 기준: 접근 빈도, 복원 속도, 내구성, 저장 기간


비용 계산 기준

항목예시
저장 용량GB 단위 요금
요청 수GET/PUT 요청 요금
전송량리전 간 또는 인터넷으로 전송 시 요금 발생

6. 실무 활용 사례

정적 웹사이트 호스팅

  • HTML/CSS/JS 파일만으로 호스팅 가능
  • 퍼블릭 정책 필요
  • CloudFront 연동 시 HTTPS, 도메인 연결 가능

로그 저장소

  • CloudTrail, ELB, VPC Flow 로그 저장에 사용
  • Lifecycle 정책으로 자동 아카이빙

백업 & 아카이빙

  • 데이터베이스 백업 파일 저장
  • 주기적인 스냅샷 보관

AWS Transfer Family와 연동

  • 기존 SFTP/FTP 방식의 시스템과 S3를 연결
  • 기업 간 파일 전송, 파트너 통합에 적합

언제, 왜 S3를 쓰는가?

  • 빠르게 저장하고 꺼내 써야 할 때
  • 웹사이트나 정적 콘텐츠를 배포해야 할 때
  • 장기 보관 데이터가 있을 때
  • 레거시 FTP 시스템을 클라우드로 마이그레이션할 때
This post is licensed under CC BY 4.0 by the author.