AWS - S3 개요

TopOfTheHead·2026년 5월 10일

클라우드 / AWS

목록 보기
28/38

File Storage vs Object Storage

  • File Storage
    파일계층 구조로서 관리하는 저장공간

    。빠른 조회 / 수정이 가능하지만, 확장이 제한적.

  • Object Storage
    파일객체 단위( 데이터 / 메타데이터 / 아이디 )로 관리하는 저장공간

    확장이 용이한 특징이 존재

EBS 대신 S3를 사용하는 이유
S3공용 저장소로 활용하여 통합 관리를 수행함으로써 용량낭비 제거 및 동기화를 수행

  • 기존 EC2 + EBS 구조의 문제

    분산 서버 환경에서 컨텐츠 파일 저장 시 ALB대상 그룹 내 각각의 EC2 인스턴스EBS Block에 각각 컨텐츠 파일중복 저장하여 용량 낭비가 발생하는 단점이 존재.
    ▶ 또한 해당 파일 수정 시 전체 EBS에 대해 동일하게 수정해야하는 동기화 문제도 존재

  • S3을 도입하는 경우

    。 각 EBS에는 코어 파일만 저장하고, AWS S3콘텐츠 파일을 통합적으로 저장 / 관리
    ▶ 각 EBS에 동일한 컨텐츠 파일을 저장하지 않아도 되므로 용량 낭비가 적고, 통합 관리를 통해 동기화의 이점이 존재.

Amazon S3 ( Simple Storage Service )
AWSObject Storage Service를 제공하는 분산 스토리지 시스템
웹사이트정적 파일 호스팅 / 파일스토리지 / 아카이빙 목적으로 사용되는 저장소

S3파일타입을 식별할 수 없으므로, 파일객체로서 취급
▶ 다양한 확장자 파일 또는 백업용 파일객체로서 저장

분산 시스템 구조에서 미디어 등의 다양한 확장자파일들을 저장 및 관리하는 경우 사용
▶ 다양한 분산 서버에서 공통적으로 필요한 컨텐츠 파일통합 관리

글로벌 서비스지만, 데이터리전 단위버킷으로서 저장
정책 / 법규로 인해서 특정 지역에만 데이터가 저장되어야 하는 경우가 존재하므로.

무제한 용량을 지원하며, 0 Byte ~ 50TB 용량을 가진 파일객체로서 저장 가능
50TB가 넘는 객체는 분할해서 저장이 가능하므로, 실질적으로 S3용량제한은 없음.

파일 저장의 역할만 수행하므로, 어플리케이션 설치는 불가능

  • Static Web Hosting
    S3서버S3 버킷으로 대체한 Serverless 방식으로 정적 웹사이트호스팅하는 기능을 제공
    Web Server 역할을 수행하여 React서비스할 수 있음.

  • S3내구성 / 가용성
    S3Standard 기준 최소 3개의 AZ데이터분산저장하여 99.999999999%내구성을 보장하고, 99.99%가용성을 보장
    내구성 : 객체( = 파일 )을 잃어버리지 않을 능력

  • Transfer Acceleration :
    AWS CloudFront를 통해 다운로드를 최적화시키는 서비스

  • 복제 ( Replication )
    。지정된 S3 버킷의 변경내역을 다른 버킷으로 비동기로 복제하는 기능
    ▶ 다른 리전 / 계정버킷으로 복제 가능

S3파일 저장 시 주의사항
S3파일 저장파일명고유하게 지정하여 저장
▶ 실무에서는 YYYY_MM_DD_파일명_UUID.확장자로서 저장

Depth 별로 파일을 구분하여 저장
▶ 실무에서는 YYYY/MM/DDDepth로 구분하면서 파일을 저장

  • S3에 저장된 파일을 관리하는 용도의 RDBMS파일 테이블 구성

    PK
    origin_name : 확장자를 제외한 원본파일명
    origin_ext : 원본파일확장자
    file_name : AWS S3 상 저장된 파일명
    file_ext : AWS S3 상 저장된 파일확장자
    file_size : 파일크기
    TIMESTAMP

    ▶ 이후 특정 Table에서 S3 파일요청하는 경우 Mapping Table을 정의하여 파일 테이블매핑을 수행하여 파일 요청

S3 비용

  • S3 데이터 보관 비용
    GB0.023 USD 발생

  • S3 데이터 요청 비용
    PUT / COPY / POST / LIST 기준 1000 건0.005 USD 발생

  • 데이터 전송 비용
    GB0.09 USD 발생

    ▶ 이외 암호화 / 스토리지 관리 / 복제 등의 작업 시 비용 발생

S3 보안 설정
。모든 S3 버킷은 새로 생성 시 기본적으로 Private 상태로 생성되므로, 별도로 공개하지 않는 한 외부에서 조회가 불가능
▶ 따로 해당 버킷퍼블릭 액세스 차단 해제 및 버킷 정책 설정을 통해 Static Web Hosting으로 외부에서 접속을 통해 접근 가능.

보안설정객체 단위 / 버킷 단위로 구성.
Bucket Policy : 버킷 단위
ACL : 객체 단위

버킷에 대해 누가 접근했는지 Access Log 생성 및 전송 가능

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::[버킷명]/*"
        }
    ]
}

모든 사용자에게 해당 버킷에 접근 시 내부 객체 조회를 허용하는 정책

버킷 ( Amazon Bucket )
S3객체(= 파일)를 저장하는 저장공간을 구분하는 단위
디렉토리와 같은 개념

버킷 내부에서 폴더를 생성 가능
버킷폴더객체로서 저장.

버킷리전 단위로 저장되지만, 버킷명전역적으로 고유해야한다.
리전에 관계없이 중복된 버킷명은 존재할 수 없음.

  • 버킷네이밍 컨벤션
    。오직 소문자, 숫자, -만 사용

    길이3 ~ 63자 사이이어야 한다.

    IP 주소이면 안되며, 접두사xn--로 시작하면 안되고, 접미사-3alias로 끝나면 안된다.
    ▶ 보통 버킷명-계정ID로 설정
    ex ) demo-home-bucket-904583676849

객체 ( Object )
S3에서 저장하는 파일
Owner / Key / Value / Metadata / Tags / Version ID로 구성.

  • Key
    S3의 각 객체Key가 존재하며, 접두사 + 객체이름으로 구성되어 객체를 식별
    Key버킷명 기준 파일 전체경로를 의미
    ex ) s3://my-bucket/my-directory/my_file.txt에서 s3://my-buckets3://버킷명인 경우,
    /my-directory/my_file.txtKey에 해당.
    접두사 ( 디렉토리 ) : my-directory/
    객체명 :my_file.txt

  • Value
    Object에서 Key에 의해 식별되는 데이터에 해당되는 부분으로서, 저장가능한 최대 객체 크기5 TB까지 지원
    5 TB보다 큰 파일을 저장 시 Multi-part upload 기능을 통해 여러 파일로 분할하여 업로드

  • Metadata
    파일메타데이터를 포함하는 데이터
    객체Key-Value List를 의미

  • Version ID
    。해당 파일버전 ID

  • ACL ( Access Control List )

S3 계층 구조
。실제로 S3 내부에는 계층구조가 존재하지 않으나, 객체Key명에 포함된 "/"명시적으로 계층 구조를 표현
폴더 만들기를 통해 계층구조를 표현 가능

ex ) s3://mybucket/world/southkorea/seoul/guro/map.json
s3://버킷명

/world/southkorea/seoul/guro/map.json : Key
명시적으로 디렉토리 구조를 표현

  • s3://버킷명 이하 Key명에 포함된 계층구조에 사용되는 /S3 버킷폴더 만들기를 통해 표현

    ▶ 해당 폴더index.html 저장 시 s3://demo-home-bucket-904583676849/home/index.html으로 지정됨

  • 명시적으로 계층구조를 구분하는 이유?
    버킷 정책에 따라서 해당 객체권한 조정이 가능
    ex ) resource : "arn:aws:s3:::my-bucket/images/*"
    my-bucket 버킷images/ 로 시작하는 모든 객체에 대해서...
profile
공부기록 블로그

0개의 댓글