Skip to content

5. AWS S3 란?

joochaeyeon edited this page May 28, 2024 · 8 revisions

S3

S3(Simple Storage Service) 특징

  • 안전하고 가변적인 Object 저장공간(이미지, 동영상,파일 ⇒ 운영체제 업로드 불가! )을 제공
  • 편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있다.
  • 파일 크기는 0KB부터 5TB까지 지원
  • 저장공간 무제한
  • Bucket이라는 이름을 사용 (like 디렉토리)
  • Bucket은 보편적인 namespace를 사용 ⇒ bucket이름은 고유해야한다.

S3 Object 구성 요소

  • Key = 파일명
    ex) temp.txt

  • Value = 파일에 대한 데이터

  • Version ID

    S3 공유 특징 → 같은 데이터를 Version ID를 다르게 하여 올릴 수 있음

  • Metadata

    데이터에 관한 구조화된 데이터, 다른 데이터를 설명해 주는 데이터

  • CORS (Cross Origin Resource Sharing)

    한 Bucket에서 다른 Bucket으로 지역도 무시하고 접근 가능하도록 해주는 것


S3 Data Consistency Model

  1. Read after Write Consistency (PUT)

    : S3 Bucket에 파일을 올릴 때 PUT을 사용 ⇒ 즉시 사용 가능 (delay가 없음)

  2. Eventual Consistency (UPDATE, DELETE)

    : 수정하거나 삭제 시 PUT과 다르게 해당 내용이 즉시 반영되지 않음



S3 스토리지

일반 S3

  • 가장 보편적으로 사용되는 스토리지 타입

  • 높은 내구성

    : 데이터의 손실없이 잘 복원되어지는지

  • 가용성 (Durability, Availability)

    : 얼마나 데이터 접근이 용이한지


S3 - IA (Infrequent Access)

  • 자주 접근되지는 않으나 접근 시 빠른 접근이 요구되는 파일이 많을 시 유용

  • 일반 S3에 비해 비용은 저렴하나 접근 시 추가 비용 발생

    ⇒ 많이 접근하는 용도로 사용되진 않음.

  • Multi-AZ를 통한 데이터 저장

    ⇒ 가용성이 상당히 높음

    : "Multiple Availability Zones"의 약어로, 특히 클라우드 컴퓨팅 서비스에서 주로 사용되는 용어

     보안, 재해복구(DR), 백업 등의 이유로 인프라 클라우드 서비스의 기본요소로 신규 리전에서 멀티AZ를 제공하며, 서로 다른 AZ에 배치된 리소스 간 높은 처리량과 짧은 지연 시간을 제공한다.
    

S3 - One Zone IA

  • 기본적으로 IA와 같지만 하나의 AZ에만 데이터 저장하는 클래스
  • 단일 AZ를 통한 데이터 저장
  • 단일 AZ에 의한 데이터 접근 제한 (조금 낮은 가용성)
  • 데이터 접근시 S3 - IA보다 20% 비용 저렴

Glacier

  • 아카이브 백업 데이터를 주 목적으로 하는 스토리지 서비스
  • 거의 접근하지 않을 데이터 저장 시 유용
  • 매우 저렴한 비용
  • 데이터 접근시 대략 4-5시간 소요

Intelligent Tiering

티어링이란? 데이터를 **접근 빈도에 따라 계층화** 한 것

  • 데이터 접근 주기가 불규칙할때 매우 유용

  • 2가지 티어 존재

    Frequent Tier

    Infrequent Tier ex) 데이터 접근을 한달 이상 없을 경우

  • 데이터 접근주기에 따라 두가지 티어중 하나로 선택됨

  • Frequent Tier가 비용이 약간 더 비쌈

  • 최고의 비용 절감 효율을 누릴 수 있음

S3 암호화

[1] 파일 업로드/다운로드 시

  1. SSL / TLS

SSL (Secure Socket Layer) : HTTPS

TLS (Transport Layer Security)

[2] 가만히 있을 시

SSE (Server-Side Encryption) : 모든 Object는 그들만의 공유한 키를 가짐

  1. SEE-S3

    master를 가지고 있으며 특정 시간마다 키값을 변경시킨다.

  2. SSE-KMS

    언제, 누가, 어떻게 암호를 풀었는지와 관련된 내용을 저장한다.

  3. SSE-C

    고객 제공 암호화 키로 서버 측 암호화를 사용하면 자체 암호화 키를 관리할 수 있다.


S3 암호화 과정

image

주의해야 할 부분!!

HEADER에 x-amz-server-side-encryption-paramerer 이 값이 딸려 나온다.

⇒ 암호화가 걸려 나오게 된다.

image

AES-256암호화란? AES는 암호화 및 복호화에 동일한 키를 사용하는 대칭키 알고리즘으로 AES-256은 256 암호키를 사용한 암호화 방법을 의미


S3 사용 방법

버킷 이름 : 지역과 관계없이 고유한 이름을 사용 해야 한다.

모든 퍼블릭 액세스 차단 체크해놔야한다! (외부접근 차단)

고급설정 → 활성화 시 한번 생성한 버킷의 객체는 삭제되거나 수정이 불가능

⇒ 원본 파일을 손상없이 보관할 때 사용 (추가 비용 존재할 수도)


이미지 업로도

방법1 : 직접업로드

방법2 : 고급설정 → acl (다른 aws 계정에 대한 액세스)를 허용할지 안할지

⇒ 다른 탭에서 열기위해선 허용시켜놔야 한다.

(권한 → 퍼블릭 액세스 → Everyone → 객체읽기), (퍼블릭 액세스 차단 → 편집 → 모든 퍼블릭 액세스 차단 해제 )

파일 접근을 변경한거지 버킷 접근을 변경한 것은 아니다.

버킷 접근 변경하는 법

(권한 → 버킷 정책 → 왼쪽 하단 → 정책 생성기)

정책 생성기

  • step1 : S3 Bucket Policy

  • step2 : effect ⇒ allow

    principal : 어떤 유저에게 우리가 만들 새로운 정책이 적용될 지에 대해 물어보는 것

                  [보안,자격 증명 및 규정 준수→ IAM → 왼쪽탭 사용자 → 사용자 이름 클릭 → 사용자 ARN 복사 후 principal 부분에 추가 ]
    

    Actions ⇒ GetBucketPolicy

    ARN : 버킷의 고유 arn작성

    ADD Statement → generate Policy 하면 JSON 파일 형태로 버킷 정책이 생성됨

    태그 → S3 Object들을 태그별로 분류시킬 수 있다 (filtering)