S3 기초

2023. 7. 5. 08:45·Cloud/AWS
반응형

S3

  • S3는 파일을 버킷에 저장한다.
  • 버킷은 상위 레벨 디렉토리로 표시된다. 사실 S3 그 자체는 디렉토리의 개념은 없다
  • S3 버킷의 파일은 객체라고 하며, 이 버킷은 계정 안에 생성된다. 즉 객체란 S3 저장소에 저장되는 데이터를 의미한다.
  • 버킷 이름은 계정에 있는 모든 리전과 AWS에 존재하는 모든 계정에서 유니크해야 한다.
  • 버킷은 리전 수준에서 정의되므로, 반드시 특정 AWS 리전에서 정의되어야 한다.
  • 객체나 파일에는 키가 있으며, 키는 Amazon S3 키는 파일의 전체 경로입니다.
  • 키는 접두사와 객체 이름으로 구성되며, 키는 길이가 굉장히 긴 이름으로 슬래시를 포함하며, 키는 접두사와 객체 이름으로 만들어진다.
  • 파일 등 원하는 것은 뭐든지 업로드 가능하며, 최대 객체 크기는 5TB이다.
  • 업로드하는 것이 5TB 보다 크다면 이때는 멀티 파트 업로드를 사용해서 해당 파일을 여러 부분으로 나눠 업로드한다.
  • 보통 100MB가 넘는 경우에는 멀티파트 업로드를 권장한다.
  • 객체에는 메타 데이터가 있는데, 객체의 카-값 쌍 리스트를 말한다.
  • 메타데이터 시스템이나 사용자에 의해 설정되어 파일에 관한 요소나 메타데이터를 나타낼 수 있다.
  • 태그는 가령 유니코드 키-값 쌍은 최대 10개까지 가능하며, 태그는 보안과 수명 주기에 유용하다.
  • 때때로 객체는 버전 ID를 갖기도 합니다

S3 사용처

  • 백업과 스토리지
  • 재해 복구 용도
  • 아카이브
  • 하이브리드 클라우드 스토리지
  • 애플리케이션 호스팅, 미디어 호스팅
  • 데이터 레이크, 빅데이터 분석
  • 정적 웹사이트 호스팅

S3 보안

사용자 기반

  • 사용자에게 IAM 정책이 주어진다.
  • 참고로 IAM 정책 내의 명시적인 부인(DENY)은 S3 버킷 정책보다 우선적으로 고려된다.

리소스 기반

  • S3 버킷 정책
    • 이 정책은 S3 콘솔에서 직접 할당할 수 있는 전체 버킷 규칙이다.
    • 특정 사용자가 들어올 수 있게 하거나 다른 계정의 사용자를 허용할 수 있다.
    • 이를 S3 버킷에 액세스할 수 있는 교차 계정이라고 한다.
  • 객체 액세스 제어 목록(ACL)
    • 이 목록은 보다 세밀한 보안이며 비활성화할 수 있다.
  • 버킷 액세스 제어 목록
    • 버킷 수준에서 살펴보면 버킷 ACL이 있는데, 훨씬 덜 일반적. 비활성화가 가능하다.

암호 키를 사용해 객체를 암호화

S3 버전 관리

  • Amazon S3에서는 파일을 버전 관리할 수 있다.(버킷 수준 설정)
  • 사용자가 파일을 업로드할 때마다 선택 키에서 해당 파일의 버전이 생성된다.
  • 동일한 키를 업로드하고 해당 파일을 덮어쓰는 경우 버전 2, 버전 3 등을 생성하게 된다.
  • 버킷을 버전 관리하는 것이 좋다. 이 방법은 의도하지 않게 삭제하지 않도록 보호해주기 때문이다.
  • 이전 버전으로 복구 가능, 이전 버전으로 롤백도 가능하다.
  • 버전 관리를 활성화하기 전에 버전 관리가 적용되지 않은 모든 파일은 널(null) 버전을 갖게 된다.
  • 버전 관리를 중단해도 이전 버전을 삭제하지 않는다.
  • 삭제 마커를 붙여서 삭제를 하면 객체를 복구를 할 수 있다. 소프트 딜리트 느낌과 비슷하다.

S3 복제

  • 교차 리전 복제 CPR: 두 리전이 다를 때 사용한다.
  • 같은 리전 복제 SRR: 두 리전이 같을 때 사용한다.
  • 버킷은 서로 다른 AWS 계정간에도 사용할 수 있다. 복제는 비동기식으로 이루어진다. 복제 과정은 백그라운드에서 이루어진다.
  • 복제 기능이 정상적으로 실행되려면, S3에 올바른 IAM 권한, 즉 읽기, 쓰기 권한을 S3에 부여해야 한다.
  • 복제를 활성화한 후에는 보셨다시피 새로운 객체만 복제 대상이 된다.
  • 기존의 객체를 복제하려면 S3 배치 복제 기능을 사용해야 한다.
  • 기존 객체부터 복제에 실패한 객체까지 복제할 수 있는 기능이다.
  • 체이닝 복제는 불가능하다.

스토리지 클래스

s3는 매우 뛰어나 내구성을 보장한다. 이건 모든 클래스가 동일하다.

가용성도 매우 뛰어나지만 클래스마다 차이가 있다.

S3 standard - General Purpose

  • 99.99% 가용성
  • 자주 액세스하는 데이터에 사용한다.
  • 제일 기본 클래스
  • 지연 시간이 짧고 처리량이 높다.
  • AWS에서 두 개의 기능 장애를 동시에 버틸 수 있다.
  • 사용 사례는 빅데이터 분삭, 모바일, 게임 애플리케이션, 그리고 콘텐츠 배포다.

S3 standard-Infrequent Access (IA)

  • 자주 액세스하지는 않지만 필요한 경우 빠르게 액세스해야하는 데이터에서 사용한다.
  • 스탠다드보다는 비용이 적게 들지만 검색 비용이 발생한다.
  • 99.9% 가용성
  • 재해 복구와 백업에서 많이 사용한다.

S3 One Zone-Infrequent Access

  • 단일 AZ 내에서는 높은 내구성을 갖지만 AZ가 파괴된 경우 데이터를 잃는다.
  • 가용성은 99.5%
  • 사용 사례는 온프레미스 데이터를 2차 백업하거나 재생성 가능한 데이터를 저장하는데 사용한다.

s3 Glacier Instant Retrieval

  • 밀리초 단위로 검색이 가능하다.
  • 분기에 한 번 액세스하는 데이터에 아주 적합하다.
  • 최소 보관기간이 90일. 백업이지만 밀리초 이내에 액세스해야하는 경우 적합하다.

s3 Glacier Flexible Retrieval

  • Flexible는 데이터를 검색하는 데 최대 12시간까지 기다려야 한다는 의미다.
  • 3가지 옵션이 있다. 최소 보관 기간은 역시 90일
  • Expedited: 데이터를 1 ~ 5분 이내에 받을 수 있다.
  • Standard: 데이터를 돌려 받는데 3 ~ 5시간이 걸린다.
  • Bulk: 무료지만 5 ~ 12시간이 소요된다.

s3 Glacier Deep Archive

  • 장기 보관을 위한 스토리지 클래스. 두 가지 검색 티어가 있다.
  • Standard: 12시간
  • Bulk: 48시간
  • 최소 보관기간도 180일, 오래 걸리지만 가장 저렴하다.

글래시어 스토리지 클래스는 아카이빙과 백업을 위한 저비용 객체 스토리지다.

비용은 스토리지 비용과 검색 비용이 들어간다.

S3 Intelligent Tiering

  • 사용 패턴에 따라 액세스된 티어 간에 객체를 이동할 수 있게 해준다.
  • 소액의 월별 모니터링 비용과 티어링 비용이 발생하지만 검색 비용이 없다.
  • FrequentAccess 티어는 자동이고 기본 티어다.
  • Infrequent Access 티어는 30일 동안 액세스하지 않는 객체 전용 티어
  • Archive Instant Access 티어도 자동이지만 90일 동안 액세스하지 않는 티어 전용
  • Archive Access 티어는 선택 사항이며 90일에서 700일 이상까지 구성할 수 있고
  • 선택 사항인 Deep Archive Access 티어는 180일에서 700일 이상 액세스하지 않는 객체에 구성할 수 있다.
  • S3 Intelligent Tiering은 알아서 객체를 이동시켜 주기 때문에 편하게 스토리지를 관리할 수 있다.

객체의 스토리지 클래스 변경을 자동화하는 방법 → 라이프 사이클(생명 주기) 룰을 정의하고 이를 적용한다.

반응형
'Cloud/AWS' 카테고리의 다른 글
  • CloudFront & Global Accelerator
  • S3 고급 기능 및 보안
  • Route 53
  • RDS, Aurora, ElasticCache
Debin
Debin
공부 기록을 남기며 게시글 리팩토링을 진행하는 블로그입니다.
  • Debin
    리팩토링하는 블로그
    Debin
  • 전체
    오늘
    어제
    • 분류 전체보기
      • DB
        • DB 기초
        • MySQL
        • SQL 튜닝
      • OS
      • Network
      • Git
      • 디지털콘텐츠기획
      • 소프트웨어공학
      • 코딩테스트
        • 프로그래머스
        • 백준
        • 인프런
      • 공부 일지
      • 독서
        • 클린코드
        • 일상 속 사물이 알려주는 웹 API 디자인
        • 토비의 스프링
        • 객체지향의 사실과 오해
        • 자바 잘 읽는 법
      • 기록 및 회고
      • Cloud
        • AWS
      • 개발
        • Java
        • Spring Core
        • Spring MVC
        • Spring DB
        • Spring Boot
        • Spring Security
        • Spring Batch
        • JPA
        • Test
        • Android
      • 대외활동
        • UMC SERVER
        • 카엔프 SW 아카데미
      • 프로젝트
      • Docker
      • Gradle
      • ELK
      • 실무 이야기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

    • 본인 깃허브입니다!
  • 인기 글

  • 태그

    test
    데이터베이스
    스프링 부트
    spring
    innodb
    트랜잭션
    JPA
    Java
    자바
    객체
    리눅스
    mysql
    코딩 #개발자 #노마드북클럽 #노개북
    토비의 스프링
    spring boot
    운영체제
    AWS
    redis
    container
    스프링
    ORM
    spring mvc
    컨테이너
    객체지향
    프록시
    인덱스
    AOP
    도커
    docker
    SQL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
Debin
S3 기초
상단으로

티스토리툴바