본문 바로가기

일기장

5. Amazon S3 스토리지 서비스

1. Amazon S3 란?


  • 객체 스토리지 서비스로, 스토리지 서비스를 제공할 뿐만 아니라 설정에 따라 정적 웹 서버로 공개하거나 쿼리를 사용할 수 있는 기능을 가지고 있다.
  • 특징
    • 확장성: EC2 처럼 확장, 축소가 쉽고 목적에 따른 다양한 스토리지 클래스가 준비되어 있다. 수명 주기 정책을 사용해 자동 이동이 가능하다. 
    • 가용성, 내구성: 장애, 오류, 위협에 강하며 S3 객체는 최소 4개의 가용 영역에 자동 복제되어 보존되기 때문에 한쪽에 장애가 발생해도 사용할 수 있다.
    • 신뢰성: 암호화 기능, 접근 관리도구가 있다
    • 다양한 관리 기능: 실제 사용환경에 맞는 스토리지 클래스 선택이 가능하다
    • 스마트한 기능: S3 Select라는 데이터에 쿼리를 실행하는 기능과 서비스가 존재한다. Amazon Athena, Amazon Redshigt Spectrum 등의 분석서비스와 호환되며, AWS Lambda와 연동이 가능하다. 
  • 요금체계 = 저장 용량(데이터 저장한 양) + 전송량(요청, 업로드, 다운로드한 양)

 

 

2. 스토리지 클래스 : 스토리지의 종류


  • Standard :
    • 일반적인 스토리지 클래스. 3곳 이상의 AZ(가용 영역)에 데이터가 저장되어 있어 99.9%의 가용성을 보장하며 데이터 검색시 요금과 최소용량의 요금이 없어 일할로 계산되어 사용하기 쉬운 클래스이다.
  • Intelligent-Tiering:
    • 빈번한 액세스와 간헐적 액세스에 최적화된 두 가지 계층에 객체(파일)를 저장하며 어느 쪽에 저장할지는 객체별 모니터링 결과로 자동으로 이동된다. 최소 저장 기간에 대한 요금이 설정되어 있어 과금될 수도 있다.
  • Infrequent Access: Standard
    • 클래스에 비해 저장 요금이 낮게 설정되어 있지만 액세스 요금이 조금 높게 설정되어 있어 액세스 빈도가 낮고 용량이 큰 데이터에 접합하다.
  • Reduced Redundancy Storage:
    • Standard에 비해 이중화 수준을 낮춰 낮은 가격이며 저장되는 AZ(가용 영역)가 한 군데이여서 문제 발생시 데이터 유실 가능성이 있다. 
  • S3 Glacide/ S3 Glacier Deep Archive :
    • 데이터 아카이브와 장기간 백업을 고려해 만든 스토리지 클래스이며 가격이 낮고 대용량 데이터를 저렴한 가격으로 보관할 수 있다. 데이터는 '볼트'라는 컨테이너에 저장되어 저장된 데이터를 읽으려면 다른 S3 버킷으로 옮겨야 한다. 데이터 검색시 통째로 검색 되어 Glacier상 데이터와 검색 대상의 데이터 양쪽에 요금이 부과된다. 

 

 

3. S3 사용 절차


  • 관리자는 버킷 생성, 설정 및 기본적인 S3 조작은 관리 콘솔의 S3 대시보드에서 수행할 수 있으며 일반 사용자는 SFTP(SSH로 암호화된 파일 전송 프로토콜)로 액세스해 파일을 업로드할 수 있다. 
  • 서비스 
객체 S3의 엔터티 단위. 텍스트, 이미지 등의 파일
버킷 객체를 저장하는컨테이너
버킷명 유일한 이름이어야 하며 웹 서버로 사용할 경우 도메인명이 버킷명이 된다.
객체 키 객체 식별자. 모든 객체는 반드시 하나의 키를 가지며 버킷, 객체, 키 버전을 조합해 객체를 식별한다. 
객체 메타데이터 이름과 값의 세트. 객체 업로드시 설정 가능
리전 버킷의 물리적 보관 장소가 있는 지역
Amazon S3의 데이터 일관성 모델 데이터를 자동으로 복제해 저장하며 쓰기 지연에 다른 데이터 불일치을 방지하기 위해 반영 시간이 조금 걸리는 것.
버전 관리  여러 버전을 보관하는 것.
로그 버킷 단위나 객체 단위의 로그 기록 가능
암호화 S3에 저장되는 데이터를 자동으로 암호화
액세스 제어 S3 버킷에 대한 권한 설정
웹 서비스 S3 버킷을 웹 사이트로 사용하는 기능

 

  • 사용 절차
    • AWS로그인
    • 버킷 생성(버킷명 설정)
    • 버킷 설정(웹 서버로 사용시 Static website hosting 설정, 접근 가능 사용자 설정)
    • 파일 업로드
  • 주의사항
    • S3생성 후 이름과 리전 변경이 불가능
    • 웹 서버로 사용시 버킷에 대한 공개, 도메인, 익명 접속 허가 등을 고려해야 함
    • 파일서버로 사용시 사용법에 맞게 도구나 SFTP 준비
    • 로그 저장소로 사용시 접속 대상과 인증밥벙 고려

 

4. 객체와 버킷


  • S3 안에는 객체와 버킷이 존재한다. 버킷 안에 객체가 존재한다.
  • 버킷 : 윈도의 C드라이브, D드라이브 같은 것. 폴더가 아니므로 버킷 안에 버킷 생성 불가능. AWS계정 하나당 100개까지 생성 가능
    • 버킷명은 유일해야하며 명명규칙이 있다.
  • 객체 : 파일 같은 것, 관리를 위한 메타데이터도 포함. 버킷 한 개에 저장할 수 있는 객체수와 총 용량 제한이 없다. 객체는 버킷에 병렬로 배치된다. 관리 콘솔에는 폴도로 표시되며 생성, 삭제, 업로드, 다운로드 가능하다.

5. 버킷 정책과 사용자 정책



S3 버킷에 대한 접속 제한이 가능하다. 버킷 단위로 설정한다.

 

  • 제한 설정 방법 3가지
    • 버킷 단위로 제한하는 버킷 정책
    • IAM 사용자 단위로 제한하는 사용자 정책
    • ACL(액세스 제어 목록)에 의한 관리 정책 
    • 접속 제한은 누가, 무엇을 어떤 것에 대해 가능한지의 여부를 결정하는 것이다.
    • 리소스(제한 대상이 되는 버킷, 객체), 작업(GET/PUT/DELETE 작업), 효과(설정여부 , 허가/거부), 보안 주제(허가/거부할 사용자 및 계정, 서비스)에 대해 설정 가능하다.

 

6. 웹 사이트 호스팅


  • S3는 스토리지일 뿐만 아니라 웹 호스팅 기능으로도 사용 가능한데 이 기능을 사용하면 생성한 버킷을 그대로 웹 사이트로 사용 가능하다. 정적 웹 사이트(서버가 스크립트를 처지 않음) 호스팅 가능
  • 웹 호스팅으로 사용하기 위한 추가 설정
    • 정적 웹 호스팅 활성화
    • 공용 액세스(public access) 차단 해제
    • 버킷 정책을 '모든 사용자'로 설정(배포할 파일에 누구든지 접속 가능 해 보안에 유의 할 것!)
    • 버킷명을 사용할 도메인명으로 지정
    • 개인 도메인 소지한 경우 DNS 서비스를 사용해 설정(예를 들어 버킷명을 http:sample.bucket 으로 지정해도 그대로 사용 불가능하기 때문에 따로 DNS  설정을 해야한다)

 

7. 파일 업로드와 다운로드


  • 관리콘솔이나 CLI 사용해 업로드 다운로드가 가능하다.
  • 클라이언트 파일을 S3 버킷으로 업로드하는 다양한 방법
    • API, SDK : IAM 사용자에게 액세스키와 보안 액세스 키 발행 해 사용하고 싶은 도구에 설정
    • 멀티 파트 업로드:  100MB 이상의 파일 업로드시 추천. 객체를 여러 개로 나눠 업로드 하고 완료 후 객체 하나가 된다.
    • AWS Transfer for SFTP: SFTP를 사용해 파일 전송하는 서비스. SFTP 서버 엔드 포인트로 설정해 서드 파티의 SFTP 도구를 사용할 수 있다. 초기 비용은 안 들고 SFTP 서버를 사용한 시간과 데이터 전송량에 대해 과금 된다.
    • AWS DataSync : 온프레스 스토리지 시스템과 AWS 스토리지 서비스(EC2, S3)간 대용량 데이터 전송을 위한 서비스. 

 

8. 액세스 관리 및 변조 방지


  • 스토리지는 관리자 외 일반 사람이 액세스하는 경우가 많아 이를 감시하기 위해 액세스 기록을 무료로 제공한다.
  • 기록은 무료이지만 기록한 파일 보관에 대한 요금은 발생한다.
  • 액세스 로그: 서버에 어떤 요청이 있었는지 기록하는 기능. 
  • 주요 로그 내용
    • 원격 IP : 요청자  IP주소
    • 요청자
    • 요청 ID : 요청 식별 위한 Amazon S3가 생성한 ID
    • 작업: 요청 작업 종류
    • 키: 요청된 객체 키
    • 요청URL
    • 오류 코드
    • 보낸 바이트
    • 객체 크기
    • 총 시간
    • 반환 시간
    • Referrer: HTTP Referrer 의 헤더값
    • 사용자 에이전트: HTTP 사용자 에이전트의 헤더값
    • 버전 ID: 요청된 버전 ID
    • 호스트 헤더: S3 접속에 사용하는 엔드포인트

 

그 외 액세스 관리 방법

  • 스토리지 클래스 분석: 객체에 엑세스 빈도를 분석하는 기능
  • 객체 잠금: 객체를 보호하는 기능. 객체 변경 허용하지 않아 객체 삭제, 덮어쓰기, 변조 등 방지 가능. 
  • S3 인벤토리: 버킷에 들어 있는 객체의 메타데이터의 목록을 매일/매주 생성하는 기능 

 

 

9. 버전 관리, 수명 주기, 복제 


  • 버전을 여러 개 저장하는 것으로 버킷 단위로 설정한다.
  • 버전 관리 : 미사용(디폴트) / 활성화 / 버전 일시 중지 중 선택 가능
  • 수명 주기 정책 : 객체가 정기적으로 수행할 작업을 설정하는 기능. 
    • Transition : 객체를 다른 스토리지 클래스로 이동
    • Expiration : 유효 기간 만료된 객체 삭제
    • NoncurrentVersinTransition: 현재 스토리지 클래스에서 객체 유지 시간 지정
    • NoncurrentVersionExpiration: 과거 버전의 객체 삭제 전 유지할 시간 지정
    • AbortIncompleteMultipartUpload: 멀티 파트 업로드 진행 상태 유지할 최대 시간 지정
    • ExpiredObjectDeleteMarker: 만료된 객체 삭제 표시 제거 
  • 교차 리전 복제 :
    • 다른 리전의 버킷에 객체를 비동기적으로 복사하는 것.
    • 버킷의 소유자가 동일하지 않아도 되지만 복제 작업을 수행하기 위해 IAM 역할(접근권한)을 부여해야 한다.
    • 복제에 사용할 두 버킷은 버전 관리가 활성화 되어 있어야 한다. (같은 리전 버킷은 복제 설정 불가능)

 

10. 데이터 분석과 연계


  • AWS 데이터 분석 관련 서비스를 이용하면 S3 객체, 객체 내용 분석 가능하다.
  • S3 Select, Amazon Athena : CSV, JSON 과 같은 구조화된 텍스트 형식의 데이터를 SQL의 SELECT문으로 실행하는 기능이며 서버가 필요하지 않다
  • Amazon redshift Spectrum : 대용량 데이터 처리하며 Redshift cluster(Redshift의 관리도구)가 필요

 

11. Amazon CloudFront 콘텐츠 배포 서비스


  • Amazon CloudFront : 고속 콘텐츠 전송 네트워크 서비스이며 웹 콘텐츠를 빠르게 전송한다. S3 의 웹 사이트 호스팅 기능으로 구축한 웹 서버와 조합해 많이 사용한다.
  • 웹 서버의 내용을 캐시하는 엣지 서버(리전의 네트워크 말단에 위치해 있어 클라이언트가 접속하는 네트워크와 거리가 가까워 반응속도가 빠르다)를 사용
  • 데이터 송신에 대한 요금이 부과되며 요금 계층별로 사용 가능한 엣지 서버가 다르므로 확인해야 한다.

'일기장' 카테고리의 다른 글

AWS RDS 데이터베이스 서비스  (0) 2023.08.17
6. AWS 가상 네트워크 서비스 Amazon VPC  (0) 2023.08.08
문자열 겹쳐쓰기  (0) 2023.08.02
홀짝 구분하기  (0) 2023.08.02
덧셈식 출력하기  (0) 2023.08.02