AWS CLF — Simple Storage Service(S3)


S3 개요

  • 거의 무제한의 스토리지 용량을 제공하는 객체 스토리지 서비스
  • 다양한 형식과 용량의 데이터를 안전하게 저장할 수 있음
  • 99.999999999% 이상의 데이터 내구성을 제공하도록 설계
  • 데이터는 기본적으로 3개 이상의 가용 영역에 걸쳐 중복 저장되어 광범위한 오류에 대한 복원력을 제공
  • 단순히 데이터를 저장하는 것 외에도 웹 호스팅, 백업, 버전 관리 등 다양한 보조 기능을 제공

S3 버킷과 객체

  • S3는 고유한 ‘키-값’을 가진 객체를 원하는 수만큼 저장하는 객체 저장소
  • S3를 사용하면 버킷(디렉터리)에 객체(파일)를 저장할 수 있음
  • 버킷은 AWS 서비스 전역적(모든 리전,모든 계정)으로 고유한 이름이어야 함
  • S3는 글로벌 서비스이지만 버킷은 리전 단위로 생성
  • 객체는 하나 이상의 버킷에 저장되며 각 객체의 크기는 최대 5TB까지 가능
  • 5GB 이상의 객체 업로드 시 ‘Multi-Part Upload’를 사용

Multi-Part Upload 란?

  • 하나의 큰 파일을 여러 개의 작은 조각(Part)으로 나누어, 각 조각을 독립적으로 전송한 뒤, S3 서버에서 다시 하나의 완전한 파일로 조립하는 기능
  • 안전성 및 재시도: 전송 도중에 인터넷이 끊겨도, 앞서 보낸 파일 조각들은 S3에 안전하게 저장되어 있음
  • 속도 향상: 파일 조각들은 여러 개의 연결을 통해 동시에 병렬로 보낼 수 있음

S3 사용 사례

  • 개인 데이터 백업 및 저장(클라우드 저장소)
  • 데이터 레이크 및 빅데이터 분석
  • 정적 웹사이트 호스팅
  • 미디어 및 파일 호스팅
  • 애플리케이션 호스팅
  • 데이터 버전 관리 및 권한 제어
  • 재해 복구를 위한 Archive

S3 보안 - 버킷 정책

  • JSON 형식의 S3 버킷 액세스 제어 정책
  • 조건에 따라 유저나 서비스의 버킷에 대한 액세스를 부여하고 제한하는 기능
  • 적절한 권한을 가진 사용자만 객체에 액세스할 수 있도록하여 버킷에 저장된 데이터에 대한 보안이 가능

S3 보안 - 퍼블릭 액세스 차단

  • 객체에 대한 외부 공개 액세스를 방지하는 보안 조치로 데이터가 외부에 노출되거나 무단으로 액세스되는 것을 방지
  • 새로 생성되는 S3 버킷은 기본적으로 모든 퍼블릭 액세스가 차단
  • 위의 4가지의 경우에 대해 퍼블릭 액세스 정책을 각각 적용 가능
  • 웹 호스팅, 링크를 통한 리소스 공유 등의 작업을 위해서는 퍼블릭 액세스 해제

S3 보안 - ACL(액세스 제어 목록)

  • AWS 리소스에 대한 액세스를 제어하는 데 사용되는 보안 메커니즘
  • 버킷이나 객체에 대해 요청자의 권한 허용 범위를 어디까지 설정할 것인가에 대한 설정
  • 각 리소스에 대한 액세스 권한을 정의하고, 특정 사용자 또는 그룹에 대한 권한을 구체적으로 지정
  • ACL을 사용하여 버킷 또는 객체에 대한 읽기/쓰기 권한을 부여

S3 Versioning

  • Amazon S3 버전 관리(Versioning)는 버킷 내 객체의 버전을 관리하는 기능
  • 버전 관리가 활성화되면 객체에 대한 모든 변경사항은 새로운 버전으로 저장
  • 동일한 객체 업로드시 새로운 버전으로 저장되며 이전 버전은 기존 버전과 별도의 객체로 취급됨
  • 버전 관리를 사용하면 특정 시점의 객체 버전으로 롤백하거나 복원할 수 있음
  • 객체를 삭제하여도 버저닝 내에서는 객체가 남아있으며 ‘delete marker’까지 삭제해야 영구 삭제됨

S3 복제

  • S3 버킷을 동일 리전 혹은 다른 리전으로 자동으로 복제하는 기능
  • 이를 통해 데이터를 여러 지리적 위치에 걸쳐 안전하게 복제하여 가용성을 향상
  • 비동기 방식으로 버킷 복사가 가능
  • S3가 사용자 대신 객체를 복제하기 위해 S3에 알맞은 IAM Role 부여 필요

S3 정적 웹사이트

  • S3를 사용하여 간단하게 정적 웹 사이트를 호스팅하는 기능을 제공
  • 정적 웹사이트에만 사용이 가능,동적 콘텐츠의 경우 Lambda나 Amamzon EC2 서비스 사용
  • 객체의 내용으로 호스팅이 되므로 특별한 서버 설정이 불필요
  • 데이터 전송 및 스토리지 비용만 부과되며, 트래픽이 증가하더라도 빠르게 확장
  • 버킷의 퍼블릭 액세스를 허용이 필요
  • 버킷 이름에 따라 정적 웹 사이트에 대한 URL을 자동으로 생성 s3-website 대시(-) 리전

    s3-website 점(.) 리전

S3 스토리지 클래스

  • S3는 워크로드의 성능,데이터 액세스,복원력 및 비용 요구 사항에 따라 선택할 수 있는 다양한 스토리지 클래스를 제공

S3 Standard

  • 가장 많이 사용되는 기본 S3 스토리지 클래스로,가장 높은 가용성과 내구성을 제공
  • 정적 웹 사이트,콘텐츠 배포,모바일 및 애플리케이션,빅 데이터 분석 등의 다양한 사용 사례에 적합

S3 Standard-IA(Infrequent Access)

  • 자주 액세스되지 않지만 빠르게 액세스할 수 있는 데이터를 위한 스토리지 클래스
  • 낮은 저장 비용과 함께 자주 액세스되지 않는 장기 스토리지,백업 및 재해 복구 파일용 데이터 스토어에 이상적

S3 One Zone-IA

  • S3 Standard-IA와 유사하지만,데이터를 단일 가용 영역에 저장하여 비용을 절감
  • 데이터의 가용성 요구가 낮고 단일 가용 영역에서의 데이터 저장이 충분한 경우에 사용

S3 Intelligent-Tiering

  • 데이터 액세스 패턴을 분석하여 자동으로 가장 비용 효율적인 스토리지 클래스로 이동하는 스토리지 클래스
  • 접근 빈도에 따라 Standard 티어,Infrequent Access 티어,Archive Instant Access 티어 등으로 객체 이동
  • 액세스 패턴을 알 수 없거나 액세스 패턴이 변경되는 데이터에 대해 자동 비용 절감 효과 제공

S3 Glacier

  • 거의 액세스하지 않고 요금이 저렴한 백업 및 아카이브 데이터에 이상적인 스토리지 클래스
  • 비용 걱정 없이 가끔 몇 분 안에 대규모 데이터 집합을 검색해야 하는 백업 및 재해 복구 사용 사례에 이상적
  • 무료 대량 검색을 통해 몇 분에서 몇 시간까지 검색 시간이 소요될 수 있음

S3 Glacier Deep Archive

  • 1년에 한 두번 정도로 거의 액세스하지 않고 요금이 매우 저렴한 아카이브 데이터에 이상적인 스토리지 클래스
  • 최소 3개의 지리적으로 분산된 가용 영역에 걸쳐 복제되고 저장
  • 12시간 이내의 검색 시간 소요

계층별 스토리지 정리

스토리지 계층 주요 용도 스토리지 비용 (GB당) 데이터 검색 비용
S3 Standard 자주 액세스하는 데이터 (웹사이트, 모바일 앱 등) 가장 비쌈 저렴
S3 Intelligent-Tiering 액세스 패턴을 알 수 없는 데이터 (자동으로 계층 이동) 가변적 저렴
S3 Standard-IA 가끔 액세스하는 데이터 (백업, 재해 복구) 저렴 비쌈
S3 Glacier 거의 액세스하지 않는 데이터 (장기 보관, 아카이브) 매우 저렴 매우 비쌈

S3 수명 주기 정책

  • 객체가 저장되어 삭제될 때까지의 수명 주기를 자동으로 비용효율적으로 저장되도록 관리하는 기능
  • 객체의 수명 주기에 따라 데이터를 다른 스토리지 클래스로 이동
  • 특정 기간 동안 비활성화돈 객체를 자동으로 삭제 가능
  • 비용을 최적화하고 데이터의 라이프사이클을 관리할 수 있음
  • 버킷 수준 또는 객체 수준에서 수명 주기 정책 적용이 가능

S3 암호화

  • 데이터를 저장 및 전송하는 과정에서 데이터를 암호화하여 무단 액세스 및 데이터 누출을 방지
  • 데이터의 저장 및 전송 과정 모두에서 암호화를 제공하여 안전한 통신을 보장
  • 암호화 유형 SSE-S3: AES 알고리즘을 사용 S3 서비스에서 자동으로 관리되는 키를 사용하여 암호화

    SSE-KMS: AWS KMS 서비스에서 관리하는 키를 통한 암호화,키 관리 및 자동교체 가능

    SSE-C: 사용자가 관리하는 키를 통한 암호화,데이터 전송 시 반드시 HTTPS를 사용,사용자가 직접 키 관리 및 자동교체 필요

S3 Storage Lens

  • S3 사용을 전반적으로 모니터링하고 분석하고 서비스로 버킷의 사용량,액세스 패턴,비용 및 보안 등에 대한 통계치 확인
  • 조직 내 모든 계정의 S3 스토리지 사용 및 활동에 대한 29개 이상의 개별 지표를 제공
  • 사용자의 요구에 맞게 대시보드를 커스터마이징할 수 있는 기능을 제공
  • 스토리지 사용 및 활동 추세를 시각화할 수 있고 상황에 맞는 권장 사항을 통해 즉각적인 조치를 쉽게 취할 수 있음

S3 Transfer Acceleration

  • S3를 사용하여 데이터를 업로드 및 다운로드할 때 전송 속도를 향상시키는 기능
  • 전 세계에 분산된 엣지 로케이션을 활용하여 전송 속도를 최적화하도록 설계
  • 기존 코드나 애플리케이션을 변경할 필요가 없으며, UI에서 단일 클릭으로 기능을 활성화

Amazon S3의 비용에 영향을 미치는 요소

  • 스토리지 비용 (가장 중요): 데이터를 저장하는 용량에 따라 매월 부과되는 비용 (예: GB당 월 $0.023)
  • 요청 및 데이터 검색 비용: 데이터를 업로드(PUT), 다운로드(GET), 목록 조회(LIST)하는 등 API 요청 횟수에 따라 발생하는 비용
  • 데이터 전송 비용: S3에서 인터넷이나 다른 AWS 리전으로 데이터를 내보낼 때(Outbound) 발생하는 비용 (S3로 데이터를 넣는 것(Inbound)은 대부분 무료)
  • 관리 기능 비용: S3 인벤토리, S3 분석 등 부가적인 관리 기능을 사용할 때 발생하는 비용