AWS Solution Architect Associate(SAA) - EBS, EFS, S3 자세히 알아보기

whdbtjd·2025년 4월 1일
post-thumbnail

이번 포스팅에서는 AWS의 수많은 스토리지 서비스들 중 일부인 EBS(Elastic Block Store), EFS(Elastic File System), S3(Simple Storeage Service)에 대해 보다 심층적으로 알아보자.
특히 S3는 Praticioner범위 대비 훨씬 많은 내용을 다루니 잘 알아두자.

EBS(Elastic Block Store)

애플리케이션 배포를 해본 경험이 있다면 EC2서비스를 통해 인스턴스를 생성해본 적이 있을 것이다. 이 인스턴스를 생성하려면 스토리지를 연결해야 하는데 이 스토리지가 EBS이다.
이 인스턴스의 EBS의 루트볼륨엔 우리가 선택한 운영체제인 AMI(Amazon Machine Image)가 설치된다.
즉, AMI는 운영체제와 소프트웨어가 포함된 이미지이고, EBS는 이 이미지가 실제로 저장되어 실행되는 가상 디스크 역할을 한다. 이러한 EBS는 아래와 같은 특징을 지닌다.

  • 여러 개의 EBS 볼륨을 하나의 EC2 인스턴스에 연결하여 사용할 수 있음
  • 스냅샷 기능을 통해 EBS 볼륨 백업 가능
  • EBS와 EC2는 동일한 가용영역에 있어야 함
  • 수명 주기 관리자(Data Life Cycle Manager)정책을 통해 스냅샷 일정 자동화 가능
  • AWS KMS를 통해 EBS 볼륨 암호화 가능


EBS 다중연결 (EBS Multi-Attach)

앞서 하나의 EC2 인스턴스에 여러 EBS를 연결할 수 있다고 설명하였는데, 하나의 EBS를 여러 EC2 인스턴스와도 연결할 수 있다.
이를 지원하는 서비스가 EBS Multi-Attach이다. 특징은 아래와 같다.

  • 하나의 EBS 볼륨을 여러 EC2 인스턴스와 연결 가능
  • 연결된 인스턴스들은 동일한 가용영역 내에 있어야 함(EFS는 여러 가용영역에 있어도 하나의 인스턴스에 연결 가능)
  • 일반적인 EC2 환경에선 사용되지 않으며, 특수한 고가용성 시스템 설계의 적합
  • 하나의 EBS볼륨에 최대 16개의 EC2 인스턴스에 연결 가능
  • Nitro기반의 Linux기반의 인스턴스에만 연결이 가능


EBS Snapshots

github로 코드에 대한 버전을 관리하는 것 처럼 EBS도 이런 기능을 지원한다. EBS는 스냅샷을 통해 버전 및 백업 관리 뿐만 아니라 커스텀 AMI 생성, 새로운 EC2 인스턴스 생성 등도 할 수 있다.

EBS SnapShots에 대한 세부적인 설정

  • EBS 스냅샷 아카이브 (EBS Snapshot Archive)
    • 자주 사용하지 않는 스냅샷을 아카이브 스토리지 계층에 장기 보관
    • 표준 스냅샷 보다 최대 75퍼센트 저렴
  • EBS 스냅샷 휴지통 (Recycle Bin for EBS Snapshot)
    • 삭제한 스냅샷을 휴지통에 보관하여 필요 시 일정 기간 내에 복구 가능
    • 휴지통에 보관할 기간을 직접 설정할 수 있음
  • EBS 빠른 스냅샷 복원 (EBS Fast Snapshot Restore-FSR)
    • 스냅샷에서 생성된 EBS 볼륨을 즉시 사용 가능하도록 함
    • 표준 스냅샷을 통한 복원은 느린 I/O성능이지만, 이 기능을 활성화하면 즉시 복원 가능
    • 사전 활성화 필요, 과금 발생


암호화 되지 않은 EBS 볼륨 암호화

기본적으로 EBS볼륨에 대해 직접 암호화를 설정하는 기능은 없다. 따라서 암호화를 하려면 스냅샷 기능을 활용해야 한다.

🔐 암호화되지 않은 EBS 볼륨을 암호화하는 방법

1. 먼저 기존 EBS 볼륨의 스냅샷을 생성한다.
→ 이 스냅샷은 암호화되지 않은 상태로 생성된다.

2. 생성한 스냅샷을 기반으로 새로운 스냅샷을 생성하면서 ‘암호화’를 활성화한다.
-> 또는 암호화 되지 않은 스냅샷에서 새 EBS 볼륨을 생성할 때 암호화 선택

3. 암호화된 스냅샷으로부터 새 EBS 볼륨을 생성한다.

4.새로 만든 암호화된 볼륨을 EC2 인스턴스에 연결하여 사용한다.



EFS (Elastic File System)

Amazon EFS는 AWS에서 제공하는 네트워크 파일 스토리지로, NFS(Network File System)을 지원하며 리눅스 환경의 EC2인스턴스에서만 연결 가능하다.
EFS는 다음과 같은 특징을 가진다.

  • 여러 EC2 인스턴스에 동시에 연결 가능
  • 보안그룹을 통해 인스턴스에 연결
  • EC2 외에 Linux기반의 온프레미스 서버에도 연결이 가능
  • AWS KMS를 통해 EFS암호화 가능


EFS 설정 옵션

EFS생성 시 설정해야하는 옵션들에 대해 자세히 알아보자. 아래는 AWS콘솔에서 EFS생성 시 나타나는 화면이다.

파일 시스템 유형

  • 리전
    • 3개 이상의 가용영역에 데이터를 저장
    • 고가용성을 구현하여 하나의 가용영역에서 문제가 발생하여도 데이터 접속 가능
  • One Zone
    • 데이터가 단일 가용영역에 저장 됨
    • 비용이 상대적으로 저렴하지만 가용성 낮음


스토리지 클래스

스토리지 클래스설명적합한 사용 사례
표준 (Standard)자주 액세스하는 데이터를 위한 기본 스토리지 클래스웹 애플리케이션, 실시간 분석, 자주 변경되는 파일 등
간헐적 액세스 (Infrequent Access, IA)일정 기간 동안 액세스되지 않은 파일을 자동으로 전환하여 비용 절감분기마다 몇 번 정도만 접근하는 비정기적 데이터
아카이브 (Archive)거의 액세스하지 않는 장기 보관용 데이터에 적합, IA보다 최대 50% 저렴연 1~2회 이하로 접근하는 비활성 데이터


스토리지 수명주기 관리

  • 일정 기간 동안 액세스하지 않은 파일을 액세스 빈도가 낮은 스토리지 클래스인 IA 또는 Archive로 이동 시켜 비용 절감


EFS 성능 및 처리량 모드

✅ 성능 모드 (Performance Mode)

모드 이름설명사용 예시
기본 범용 성능 모드(General Purpose)기본 모드, 대부분의 워크로드에 적합웹 서버, 콘텐츠 관리 시스템 등
최대 I/O 성능 모드 (Max I/O)대규모 분산 워크로드에 적합, 높은 지연 시간 허용빅데이터 분석, 대규모 병렬처리

✅ 처리량 모드 (Throughput Mode)

모드 이름설명적합한 사용 사례
탄력적 처리량 모드 (Elastic)워크로드에 따라 자동으로 처리량이 늘어나거나 줄어듦성능 요구가 예측 불가능하거나 변동이 심한 경우
프로비저닝 처리량 모드 (Provisioned)사용자가 원하는 처리량직접 지정하여 고정 처리량 제공워크로드의 처리량 요구를 정확히 알고 있는 경우
버스팅 처리량 모드 (Bursting)기본 모드로, 파일 시스템의 용량에 따라 자동으로 처리량이 결정됨스토리지 크기에 따라 자연스럽게 처리량이 늘어나야 하는 경우




Amazon Simple Storeage Service(Amazon S3)

S3는 Amazon의 대표적인 스토리지 서비스이다. SAA시험 범위에서는 S3의 여러 기능에 대해 좀 더 상세하게 알아두어야 하니 잘 배워보자. 기본적인 개념들은 AWS Cloud Practitioner - Amazon Simple Storage Service(Amazon S3)을 참고하고 여기선 생략하도록 하겠다.



S3 버전 관리 (Versioning)

  • 객체를 여러 버전으로 보존 하는 기능
  • 버전관리 기능을 사용하려면 설정에서 기능을 활성화 해야함
  • 동일한 파일을 업로드하면 다른 버전으로 분류되어 저장됨

    MFA Delete 기능

    • S3 버킷에서 객체를 삭제하거나 버전 관리를 상태 변경 할 때 MFA(Multi-Factor Authentication) 인증을 요구하는 보안 기능
    • 루트 사용자만 활성화 가능


S3 데이터 암호화

S3는 데이터를 저장 중, 전송 중 데이터 보호를 위해 암호화를 사용한다.

서버 측 암호화 (SSE - Server Side Encryption)

  • 데이터가 서버에 저장되기 전에 객체를 암호화하는 방식

SSE 유형

  • SS3-S3
    • S3가 자체 관리하는키로 암호화
  • SSE-KMS, DSSE-KMS
    • AWS KMS를 사용하여 암호화
  • SSE-C
    • 사용자가 직접 관리하는 암호화
    • 데이터 전송 시 반드시 HTTPS 사용

클라이언트 측 암호화

  • 객체를 사용자 측에서 애플리케이션에 미리 암호화

전송 중 암호화

  • S3로 객체를 전송할 때, HTTPS프로토콜과 TLS(Transport Layer Security) 인증서를 사용하여 암호화


S3 정적 웹사이트 호스팅

EC2나 Lightsail, Beanstalk 등 웹사이트를 배포할 수 있는 서비스 외에도 S3를 통해서도 웹사이트를 배포할 수 있다. 다만 S3에서는 '정적 웹사이트'만 배포가 가능하다.

정적 웹사이트란❓

  • 사용자에게 항상 같은 내용을 보여주는 사이트
  • DB나 백엔드 로직 없이도 작동
  • 배포한 사이트에 403에러 발생시 버킷의 퍼블릭 액세스 허용이 되지 않은 것


S3 Cross-Origin Resource Sharing(CORS)

웹 애플리케이션을 개발해본 경험이 있다면 CORS오류를 통한 403에러를 겪어본 사례가 많을 것이다. 이 CORS설정은 S3의 버킷들 간에도 설정해줘야 다른 버킷에 대한 엑세스를 할 수 있다.

  • S3에서 Origin이란 도메인주소 혹은 버킷의 주소를 말함
  • CORS는 어떤 도메인에서 다른 도메인에 있는 버킷에 대한 액세스를 허용하는 것


S3 Glacier Vault Lock, Object Lock 🔒

이 개념들을 설명하기 전에 먼저 Vault가 무엇인지에 대해 알아둘 필요가 있다.
Vault 란 S3 Glacier 스토리지 계층에서 객체들을 아카이브 단위로 저장할 때 이 아카이브들이 저장되는 곳을 말한다. 하나의 Vault에는 여러 개의 Archive가 들어갈 수 있고 디렉토리나 폴더 구조가 아닌 단순히 파일형태로 저장된다.

S3 Glacier Vault Lock

  • 이 기능을 사용하면 Glacier에 데이터를 저장만하고 삭제, 수정을 못하도록 할 수 있음
  • Vault 정책에 생성된 이후로는 데이터 변경이나 삭제가 불가능
  • 주로 데이터 보관 정책이 필요한 경우 사용
  • Vault단위로 WORM (Write Once Read Many) 정책 적용

S3 Object Lock

  • 설정 기간 동안 객체가 삭제되거나 수정되지 않도록 데이터를 보호
  • 객체단위로 WORM (Write Once Read Many) 정책 적용
  • 두 가지 보관모드 사용 가능
    • 거버넌스 모드(Governance Mode)
      • 필요에 따라 일부 사용자에게 보관 설정을 변경하거나 객체를 삭제할 수 있는 권한을 부여 가능
    • 규정 준수 모드(Compliance Mode)
      • 지정된 기간 동안 어떤 사용자도 삭제/수정 불가
  • 법적 보존(Legal Hold)
    • 객체 버전을 덮어쓰거나 삭제할 수 없도록 하는 기능
    • IAM 정책의 s3 PutObjectLegalHold권한을 부여받은 사용자는 객체 수정, 삭제 가능


S3 서버 액세스 로깅 (Server Access Logging)

  • S3 버킷에 대한 액세스 로그를 파일로 만들어 다른 S3 버킷에 저장
  • 감사 목적으로 활용 가능
  • Amazon Athena같은 분석 도구를 활용 가능
  • 로그 파일 저장을 같은 버킷에 저장하면 무한 루프 발생 가능


S3 Multipart Upload🧩

  • 버킷에 파일을 업로드할 때 파일을 여러 조각으로 나누어서 병렬적으로 업로드 하는 방식

  • 업로드가 끝나면 각 조각을 병합하여 저장

  • 대용량 파일 업로드 시 권장(오류 발생시 빠른 복구 용이)




S3 액세스 포인트 ✔️

S3는 기본적으로 버킷에 대해 하나의 정책으로 접근권한을 관리해야했다. 근데 만약 회사처럼 사람마다 직급이 다르고, 접근 권한을 달리 해야 한다면 정책 설정이 복잡해진다. 이를 개선하기 위헤 S3에서는 액세스 포인트라는 기능을 제공한다.

S3 액세스 포인트

  • S3 버킷에 접근하기 위한 다양하고 고유한 액세스 포인트 정책을 가지는 네트워크 엔드포인트
  • 특정한 그룹, 사용자에게 허용된 S3 데이터에만 접근이 가능하게 설정 가능
  • VPC 연결 전용 엑세스포인트로 퍼블릭 액세스 차단 및 내부 네트워크 전용 설정 가능

S3 다중 리전 액세스 포인트 (Multi-Region Access Points)

여러 리전에 걸쳐 있는 S3 버킷을 대상으로 하나의 글로벌 액세스 포인트를 제공

  • 애플리케이션은 이 단일 엔드포인트만 사용하면 되고, 가장 가까운(지연이 낮은) 리전의 버킷으로 자동 라우팅됨
  • 여러 리전 버킷이 있어도, 접근은 단일 액세스 포인트로 통일
  • 요청은 리전의 상태가 Active 상태인 최적의 리전으로 전달


아래는 정리할 내용이 많지 않지만 꼭 알아두어어야 하는 개념들을 모아서 간단히 정리해두었다.

S3 Select & S3 Glacier Select

  • S3에 있는 파일 전체를 가져오지 않고, 필요한 데이터만 뽑아올 수 있는 기능
  • SQL 문법을 써서 객체 안의 내용을 필터링해서 반환함
  • CSV, JSON, Parquet 형식의 객체에 사용 가능

요청자 지불 버킷 (Requester Pays)

  • 기본적으로 파일 전송 시 버킷 소유자가 요금을 지불하지만, 이 기능을 사용하면 자료를 요청한 사람이 지불

미리 서명된 URL (Pre-Signed URL)

  • 특정 객체에 대한 일정 시간동안만 접근가능한 임시 URL을 생성할 수 있는 기능

S3 데이터 검색

  • Athena, Redshift Spectrum, S3 Select 같은 서비스들을 통해 S3 내의 데이터를 직접 조회 가능

Mountpoint for Amazon S3

  • S3버킷을 로컬 파일 시스템에 마운트 하여 파일 스토리지 처럼 사용 가능
  • 파일을 읽고 새로 저장하는 건 가능하지만, 기존 파일 수정이나 폴더 삭제는 제한됨

S3 Object Lambda

  • S3 버킷에서 객체를 불러올 때, 바로 반환하지 않고 Lambda함수를 거쳐 가공된 형태로 반환
  • 예, CSV, JSON형태로 반환하거나 워터마크 삽입 등의 작업을 객체를 반환하며 수행 가능

S3 Inventory

  • 사용자가 정의한 일정에 따라, 버킷에 저장된 객체들을 정기적으로 CSV, ,ApacheOptimized Row Columnar(ORC), Apache Parquet(Parquet)형태로 제공하는 기능

S3 Storage Lens

  • 계정 전체 또는 조직 단위로 S3에 대한 활동 및 사용량에 대해 대시보드 제공
  • 제공된 지표를 통해 상황별 권장 사항을 제공
profile
취업ㄱㄱㄱ

0개의 댓글