반응형

 

S3는 AWS에서 제공하는 스토리지 서비스이다. 높은 가용성 및 내구성을 제공하여 데이터를 안전하게 저장하고 어디에서나 접근할 수 있도록 서비스를 제공한다.

이번 포스팅에서는 S3의 기본적인 개념 및 저장소 단위인 버킷에 대해서 살펴보려고 한다.

 

1. AWS S3 소개 
2. S3 기능 
- 주요 기능 : 업로드 및 다운로드, 버킷 정책, 스토리지 클래스, 버전 관리와 객체 잠금, 수명주기 제어, 암호화
- 기타 기능 : 복제, S3 엑세스 로깅, 이벤트 기반 호출, AWS Athena, Transfer Acceleration
3. 버킷 명명 규칙
4. 버킷 정책 (Bucket Policy)
5. S3 Object의 구성
6. 스토리지 클래스 (Storage Class)
7. 암호화
8. 버킷 버전 관리
9. 객체 잠금
10. 수명주기 관리

 

 


AWS S3 (Simple Storage Service)

 

  1. AWS에서 제공하는 Object Storage Service (↔ EBS, EFS 등)
    • 블록 스토리지 (EBS) : 데이터를 블록 단위로 저장. 빠른 엑세스 가능.
    • 파일 스토리지 (EFS) : 파일을 계층구조로 관리, 빠르게 찾고 업데이트 작업 가능, 확장 제한적, 어플리케이션 설치 가능
    • 오브젝트 스토리지 (S3): 파일을 오브젝트(데이터, 메타데이터, 아이디) 단위 관리, 어플리케이션 설치 불가능, 무제한 확장 용이
  2. 주요 사용 목적 
    1. 파일을 저장하고 관리하고 싶을 때 사용 (미디어, 로그, 소스코드, 파일, 백업 등)
    2. Static Hosting으로 사용 (서버 없이 웹페이지를 제공하고 싶을 때)
  3. 글로벌 서비스, 데이터는 리전 단위 저장
  4. 무제한 용량 : 하나의 객체는 0byte ~ 5TB의 용량까지 저장 가능
  5. 높은 가용성 및 내구성 :
    • 내구성 : 99.999999%의 내구성, 최소 3개의 가용영역(AZ)에 데이터를 분산 저장 (Standard Tier)
    • 가용성 : 99.9% SLA(Service Level Agreement)  가용성
  6. 버킷 (Bucket) : S3의 저장공간을 구분하는 단위, 디렉터리의 개념.
    • 버킷 이름은 전 세계에서 고유값 → 리전에 관계없이 중복 불가능
  7. 비용
    • 데이터 보관 비용 (GB당 0.023$)
    • 데이터 요청 비용 (1000개당 0.005$)
    • 데이터 전송 비용 (GB당 0.09$)
    • 암호화, 스토리지 관리, 복제 등 기타 비용

 

 

 


EBS vs S3

 

두 서비스 모두 AWS에서 제공하는 스토리지 서비스이다. 어떤 경우에 EBS에 비해서 S3의 사용이 유리한지 살펴보자.

 

1. 대량 데이터 저장 및 장기 보관 : EBS는 용량이 제한적이다. S3는 무제한 저장이 가능하며, 높은 내구성으로 인해 데이터를 안전하게 보관할 수 있다.

2. 여러 애플리케이션 간의 공유 스토리지

  • 특히 Auto-scaling 시 공유 스토리지로 활용 가능하다.
  • EBS는 특정 EC2 인스턴스에서만 접근 가능하기 때문에 Auto-scaling 시 특정 인스턴스에서 파일이 다른 인스턴스의 EBS에 저장되어 있다면 사용이 불가능하다.
  • 만약 파일을 중복하여 저장한다면 저장 공간의 비효율성이 발생하며, 파일이 교체될 때 모든 인스턴스의 리소스를 교체해야 한다.

3. S3는 Object Storage이기 때문에 OS 사용이 불가능하고 EBS에 비해 엑세스 속도가 느리다.

 

 

 

 

 


S3 주요 기능

 

  1. 오브젝트 업로드 및 다운로드
  2. 버킷 정책 설정 : 버킷 단위의 리소스 기반 권한 제어
  3. 다양한 스토리지 클래스 지원 : Object마다 저장 목적과 예산에 따라 적절한 스토리지 클래스를 선택할 수 있다.
  4. 버전 관리와 객체 잠금 : Object의 생성, 수정, 삭제에 대한 버전 관리 지원 및 객체 보호 가능
  5. 수명주기 제어 : 사용되지 않는 객체 등을 관리하기 위한 객체의 수명 제어
  6. 암호화 : 파일 암호화 저장 & 제공 시 복호화
  7. 기타 기능
    1. 복제 (Replication) : 지정된 S3의 변경 내역을 다른 버킷으로 비동기로 복제 가능
      1. 다른 리전 및 계정의 버킷으로도 복제 가능.
    2. S3 엑세스 로깅 : 해당 버킷의 활동 로그를 다른 S3 버킷에 저장하는 기능
      1. 보안 감사 및 분석 목적, 반드시 감사 대상 버킷과, 로그 저장 버킷이 달라야 함 → 무한루프 방지
    3. 이벤트 발생 시 다른 서비스 호출
      1. ex) AWS Lambda를 통해 파일의 무결성 및 제약조건 등 검사, 이미지를 썸네일 사이즈로 리사이징하여 저장
    4. AWS Athena : S3의 데이터로 SQL 실행 가능
      1. 로그 분석 등의 사용 사례
    5. Transfer Acceleration : CloudFront(AWS의 CDN 서비스)를 통해서 다운로드를 최적화시키는 서비스

 

 

 

 


버킷 명명 규칙

 

 

버킷 이름은 도메인 기반으로 Public하게 접근할 수 있게 설정될 수 있기에 고유한 버킷 이름을 사용해야 한다. 일반적으로 버킷 이름 뒤에 AWS 계정 ID를 추가하여 명명한다.

 

 

 

 

 


버킷 정책 (Bucket Policy)

 

S3의 접근 권한 설정은 IAM 정책 기반 권한과 함께 버킷 정책을 사용할 수 있다

 

  • IAM 정책 (IAM Policy) : 자격증명에 부여하는 정책으로 S3에 대한 권한 부여
    • 목적 : 같은 계정의 IAM 엔티티의 S3 권한을 관리할 때, S3 이외에 다른 AWS 서비스와 함께 권한을 관리할 때
    • 사용자(Identity) 또는 역할(Role)에 적용되는 권한 제어 방식으로, 특정 사용자가 AWS 서비스(S3 포함)를 사용할 수 있는지를 중심으로 정의한다.
  • 버킷 정책 (Bucket Policy) : 버킷 단위로 부여되는 리소스 기반 정책, 버킷 자체에 특정 주체(IAM 사용자, 역할 등)가 해당 버킷과 객체에 접근할 수 있는지를 결정한다.
    • 목적 : 익명 사용자 혹은 다른 계정의 엔티티의 S3 이용 권한을 관리할 때, S3만의 권한을 관리할 때 
    • 기본적으로 버킷은 Private, 따로 설정을 통해 불특정 다수에게 Public으로 공개 가능
    • 언제, 어디서, 누가, 어떻게, 무엇을 할 수 있는 지에 대해 정의 가능.
    • 다른 계정, 익명 사용자(불특정 다수) 등에 대해서도 권한 설정 가능
  • ACL(Access Control List) : 객체 단위 보안 설정 (거의 사용 X)

 

 

 


 

위 사진에서는 모든 익명 사용자에 대해서 my-bucket 버킷의 모든 하위 Object를 GET할 수 있는 버킷 정책을 설정한 예시이다.

즉 해당 버킷 안의 리소스에 대해서 Public하게 접근할 수 있도록 "퍼블릭 엑세스 차단 해제" 이후 "버킷 정책 설정"을 수행한 모습니다.

 

여담으로 "퍼블릭 엑세스 차단 비활성"은 그 자체로 퍼블릭 엑세스가 허용되는것이 아니며, 추가적인 버킷 정책에 따라서 허용될 수 있다는 것을 의미한다.

 

 

 

 

 

 


S3 Object

 

Object의 구성

  1. Owner : 소유자
  2. Key : 파일의 이름
  3. Value : 파일의 데이터 (0byte - 5TB 용량까지 저장 가능)
  4. Version ID : 버전 ID
  5. Matadata : 파일의 정보를 담은 데이터 (생성자, 용도 등)
  6. Torrents : 토렌트 공유를 위한 데이터

 

S3의 계층 구조 : 실제 S3 내부적으로는 계층구조가 존재하지 않음 (Object Storage). Key 이름에 포함된 “/”으로 계층 구조를 표현

 

 

 

 


스토리지 클래스

 

 

S3는 다양한 스토리지 클래스를 제공하며, 저장 목적과 예산에 따라 적절한 클래스를 선택할 수 있다.

각 객체(오브젝트)의 중요도, 사용 용도, 접근 빈도, 비용 등을 고려하여 서로 다른 스토리지 클래스를 적용할 수 있다.

 

 

 

 

파일 저장

보관 및 엑세스 용도의 저장 유형

  1. S3 Standard : 최소 3개 이상 가용영역에 분산 저장, 최소 보관 기간 및 최소 저장 용량 제한 X
  2. S3 Standard IA (Infrequently Accessed) : 자주 사용되지 않는 데이터를 저렴한 가격에 보관
    1. 최소 저장 용량 : 128KB → 50KB를 저장해도 128KB으로 취급됨
    2. 최소 저장 기간 : 30일 → 10일간 저장하더라도 30일로 취급됨
    3. 평소에는 Standard보다 더 저렴하지만 데이터를 불러올 때 마다 비용을 더 많이 지불
    4. 자주 사용되지 않은 파일 + 중요한 파일을 주로 저장.
  3. S3 One Zone-IA : Standard IA와 동일하지만 가용영역 1개에만 저장, 더 저렴한 비용
    1. 자주 사용되지 않으며 중요하지 않은 파일 (쉽게 복구 가능한 파일)
  4. S3 Express One Zone : 하나의 가용영역 사용, 빠른 퍼포먼스 제공.
    1. Amazone S3 Directory Bucket : 하나의 가용영역에 위치한 특별한 저장소에 저장 (빠른 엑세스 속도 지원)
    2. Standard와 비교 : 50% 저렴한 요청 비용 & 4-5배 비싼 저장 비용. 약 10배 빠른 응답속도

 

아카이브

장기 보관의 용도의 저장 유형

  1. S3 Glacier Instant Retrieval
    1. 최소 저장 용량 : 128KB
    2. 최소 저장 기간 : 90일
    3. 아카이브의 용도지만 필요 시 바로 엑세스 가능, Standard에 비해 1/5 저렴한 비용
  2. S3 Glacier Flexible Retrieval
    1. 최소 저장 용량 : 40KB
    2. 최소 저장 기간 : 90일
    3. 최소 분-시간 단위 이후 엑세스 가능.
    4. 사용 사례 : 장애 복구용 데이터, 백업 데이터 등.
  3. S3 Glacier Deep Archive
    1. 최소 저장 용량 : 40KB
    2. 최소 저장 기간 : 90일
    3. 데이터를 가져올 때 12~48시간 소요
    4. 사용 사례 : 오래된 로그 저장, 사용할 일이 거의 없지만 보관해야 하는 데이터.

 

기타

  1. S3 Intelligent-Tiering (지능형 계층화) : 머신러닝을 사용하여 AWS가 자동으로 적합한 클래스로 동적으로 설정.
  2. S3 on Outposts : 온프레미스 환경에 S3 제공

 

 

 

 


암호화

 

S3는 Object를 저장할 때 Key를 이용하여 암호화하여 저장하고, GET 시 복호화하여 Object를 제공하는 암호화를 지원한다.

이 때 사용할 수 있는 암호화의 유형들이 있다.

 

  1. SSE-S3 : S3에서 알아서 암호화, 기본적으로 활성화
  2. SSE-C : 클라이언트에서 제공한 암호화키를 통해 암호화
  3. SSE-KMS : AWS KMS(Key Management Service) 서비스를 이용해 암호화
  4. DSSE-KMS : KMS를 활용하여 Dual Layer(2계층) 암호화를 적용하는 암호화

 

 

 

 

 


버킷 버전 관리

 

 

 

  1. 객체의 생성, 업데이트, 삭제의 모든 단계를 Layer 형태로 저장
    • 업데이트 시 기존 객체를 수정하는 대신 새로운 객체를 누적하여 생성 후 최신 버전으로 설정
    • 삭제 시 기존 객체를 삭제하는 대신 Delete Marker 추가
  2. 버킷 단위로 활성화 필요 (기본적으로 비활성화) → 한 번 버전관리 시작 시 비활성화 불가능, 중지 가능
  3. 수명 주기 관리와 연동 가능
  4. MFA 인증 후 삭제 기능을 통해 보안 강화 가능
  5. 모든 버전의 용량에 대해서 비용 발생

 

 


S3 객체 잠금

 

 

  1. Write Once, Read Many (WORM) 모델 활용하여 객체 저장
  2. 객체의 삭제/덮어쓰기 방지 → 일정 시간 혹은 무기한
  3. 규정 준수 및 객체의 보호를 위해서 사용, 사용을 위해 버전 활성화 필요
  4. 객체 잠금의 종류
    • 보관모드 (Retention Mode) : 일정 기간동안 수정 방지
      • 규정 준수 모드 : 누구도 잠금 설정 변경 및 객체 삭제 불가능
      • 거버넌스 모드 : 권한 없이 잠금 설정 변경 및 객체 삭제 불가능
    • 법적 보존 (Legal Hold) : 제한기간이 없음. Hold를 객체에 부여하여 존재하는 동안 수정 불가능, Hold 해제 가능.

 

 

 


S3 수명주기

 

S3 수명주기 설정(Lifecycle Policy)은 객체의 저장 비용을 절감하기 위해, 특정 조건을 만족하는 객체를 자동으로 저렴한 스토리지 클래스로 전환하거나 삭제하는 기능이다.

 

 

 

  1. 전환 작업 (Transition actions) : 다른 스토리지 티어로 옮기기 → Waterfall 모델에 따라 하위 계층의 티어로만 전환 가능, 일부 제약사항 존재
  2. 만료 작업 (Expiration actions) : 오브젝트 삭제
    • 버저닝이 없을 경우 : 영구 삭제
    • 버저닝이 있을 경우 : 현재 버전이 Delete Marker가 아닐 경우 최신 버전으로 Delete Maker 추가.
    • 삭제 날짜에 바로 삭제되지 않고 일정 딜레이 발생
    • 실패한 멀티파트 업로드 파일 삭제 설정 가능

 

예를 들어, 일정 기간 동안 접근하지 않은 데이터를 S3 Standard에서 S3 Infrequent Access(IA) 또는 Glacier로 이동하여 비용을 절감할 수 있다.

또한 위에서 설명했던 버킷 버전 관리 시, Object의 오래된 버전이 누적되면 비용이 발생하기 때문에 이에 대한 수명주기를 제어하는 역할로도 사용할 수 있다.

 

 

 


수명주기 규칙 설정

 

객체의 수명 : 전환 혹은 생성부터 일정 기간 경과 후 효과 발생, 오브젝트가 만들어진 시점을 기준으로 소급 적용된다.

 

 

필터 :  필터링의 조건을 만족해야 발생 가능하도록 설정 가능

  1. 경로 Prefix : 특정 경로의 Object에 대해서 적용. 와일드카드를 이용하여 특정 하위 계층의 오브젝트에 대해서 적용도 가능.
  2. 태그 : 특정 태그가 존재하는 오브젝트
  3. 오브젝트 사이즈 : 용량에 따른 필터링

 

 

 

 

 

 

 

 

 


References

 

https://docs.aws.amazon.com/

 

https://docs.aws.amazon.com/

 

docs.aws.amazon.com

 

https://www.inflearn.com/course/%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EB%8A%94-aws-%EA%B8%B0%EC%B4%88

 

쉽게 설명하는 AWS 기초 강의 강의 | AWS 강의실 - 인프런

AWS 강의실 | , 안녕하세요. AWS 강의실입니다.AWS 공식 커뮤니티 빌더이자 2만명의 구독자를 보유한 AWS Only 강의 유튜브의 경험으로 AWS를 쉽게 알려드립니다.이 강의는AWS의 서비스 및 활용 지식을

www.inflearn.com

 

 

반응형

BELATED ARTICLES

more