AWS S3

Kkd·2025년 3월 8일

AWS

목록 보기
6/11

AWS S3 (Simple Storage Service)

AWS S3(Simple Storage Service)확장성, 보안, 성능을 제공하는 객체 스토리지 서비스입니다.
웹사이트, 백업, 로그 저장, 빅데이터 처리, AI 모델 학습 데이터 저장 등 다양한 용도로 활용됩니다.


1. S3의 주요 특징

1) 객체 스토리지 기반

  • 파일을 객체(Object) 형태로 저장 (파일 + 메타데이터 + 고유 키)
  • 폴더 개념이 아니라 버킷(Bucket) 단위로 관리
  • 디렉터리 구조가 아니라 키(Key) 기반의 저장 방식 사용

2) 무제한 저장 가능

  • 단일 파일 최대 5TB, 버킷에는 무제한 저장 가능
  • 크고 작은 파일 모두 저장 가능

3) 높은 내구성과 가용성

  • 99.999999999% (11 9's) 내구성 제공 → 데이터 손실 위험 최소화
  • 기본적으로 여러 가용 영역(AZ)에 자동 복제됨

4) 다양한 스토리지 클래스

스토리지 클래스설명비용
S3 Standard기본 스토리지, 자주 액세스하는 데이터용💰💰💰
S3 Intelligent-Tiering자동으로 액세스 패턴 분석 후 최적화💰💰
S3 Standard-IA (Infrequent Access)가끔 액세스하는 데이터 (저장 비용↓, 요청 비용↑)💰
S3 One Zone-IA단일 가용 영역에서만 저장💰
S3 Glacier장기 보관용 (몇 분~몇 시간 내 복원 가능)💲
S3 Glacier Deep Archive최소 180일 이상 보관 데이터 (저장 비용 가장 저렴)💲

5) 강력한 보안 기능

  • IAM(Identity & Access Management) 권한 설정 지원
  • S3 버킷 정책 및 ACL (Access Control List) 설정 가능
  • 서버 및 클라이언트 사이드 암호화 지원
  • VPC 엔드포인트, PrivateLink로 내부 접근 가능

6) 버전 관리 및 복제

  • 버전 관리(Versioning) 기능으로 데이터 변경 이력 저장 가능
  • Cross-Region Replication(CRR): 다른 AWS 리전으로 자동 복제 가능

2. S3 기본 개념

📌 1) 버킷(Bucket)

  • S3에서 데이터를 저장하는 최상위 컨테이너 (폴더와 비슷한 개념)
  • 각 계정당 최대 100개 버킷 생성 가능
  • 이름이 전 세계에서 고유해야 함 (ex: my-app-storage-bucket)

📌 2) 객체(Object)

  • S3에 저장되는 파일 단위 데이터
  • 객체 구성 요소:
    • 데이터(파일 내용)
    • 메타데이터 (파일 유형, 크기, 사용자 정의 태그 등)
    • 키(Key) → 파일의 고유 식별자 (ex: images/profile.jpg)

📌 3) 키(Key)

  • S3 내에서 파일을 고유하게 식별하는 값
  • 디렉터리 구조가 아니므로, my-folder/image.jpg 형태로 저장하면 키 값이 됨.

📌 4) S3 URL 구조

https://{버킷명}.s3.{리전}.amazonaws.com/{파일경로}

예시:

https://my-app-bucket.s3.ap-northeast-2.amazonaws.com/images/logo.png

3. S3 사용 방법

🔹 1) AWS 콘솔에서 S3 버킷 생성

  1. AWS 콘솔에서 S3 서비스 선택
  2. "버킷 만들기(Create Bucket)" 클릭
  3. 버킷 이름 설정 (전 세계에서 유일해야 함)
  4. AWS 리전 선택 (예: ap-northeast-2 → 서울)
  5. 퍼블릭 액세스 차단 설정 (보안상 기본적으로 차단됨)
  6. 필요하면 버전 관리 활성화
  7. "버킷 만들기" 클릭

🔹 2) S3에 파일 업로드

  1. S3 콘솔에서 생성한 버킷 선택
  2. "업로드(Upload)" 버튼 클릭
  3. 파일 선택 후 "업로드" 진행

🔹 3) S3에서 파일 다운로드

S3에 업로드한 파일을 다운로드하는 방법:

  • AWS 콘솔에서 직접 다운로드
  • CLI로 다운로드
    aws s3 cp s3://my-app-bucket/images/logo.png .
  • Python (boto3) 사용
    import boto3
    s3 = boto3.client('s3')
    s3.download_file('my-app-bucket', 'images/logo.png', 'logo.png')

4. S3 퍼블릭 액세스 설정

기본적으로 S3는 보안을 위해 퍼블릭 액세스가 차단됨
퍼블릭으로 공개하려면:
1. 버킷 정책(Bucket Policy) 설정
2. ACL (Access Control List) 설정
3. CloudFront 배포 (CDN 활용 가능)

예제: 특정 파일을 누구나 접근 가능하도록 설정

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-app-bucket/images/logo.png"
    }
  ]
}

5. S3 vs. EBS vs. EFS 비교

스토리지 유형설명사용 사례
S3객체 스토리지, 무제한 저장 가능정적 파일, 백업, 로그 저장
EBS블록 스토리지, 특정 EC2 인스턴스에 연결됨데이터베이스, OS 저장소
EFS네트워크 파일 스토리지, 여러 인스턴스에서 공유 가능공유 파일 시스템

S3: 정적 파일, 이미지, 동영상, 백업 등에 적합
EBS: EC2에 OS, 데이터베이스 저장
EFS: 여러 EC2 인스턴스가 파일을 공유할 때 사용


6. S3 활용 사례

정적 웹사이트 호스팅 (HTML, CSS, JS 파일 저장)
백업 및 데이터 아카이빙 (Glacier 활용)
데이터 레이크 (Data Lake) (빅데이터 분석을 위한 데이터 저장소)
CDN 연계 (CloudFront)로 빠른 데이터 제공
로그 저장 및 분석 (AWS Athena와 연동 가능)
AI/ML 모델 학습 데이터 저장


📌 결론

  • AWS S3는 확장성, 내구성, 보안성이 뛰어난 객체 스토리지 서비스
  • 다양한 스토리지 클래스로 비용 절감 가능
  • 보안 및 접근 제어가 강력함
  • 정적 웹사이트, 백업, 로그 저장, 빅데이터 처리 등 다양한 용도로 활용 가능
profile
🌱

0개의 댓글