S3 (Simple Storage Service)

EBAB!·2023년 7월 7일
0

AWS 자격증 준비

목록 보기
6/16
post-thumbnail

Amazon S3 기초

  • AWS 설명 : Amazon Simple Storage Service는 업계 최고의 확장성과 데이터 가용성 및 보안과 성능을 제공하는 객체 스토리지 서비스 입니다.
  • 객체 스토리지 서비스 : 파일 보관만 가능 ↔ Block Storage Service (EBS, EFS 등)
    • 어플리케이션 설치 불가능
  • 글로벌 서비스. 단, 데이터는 리전에 저장
  • 무제한 용량
    • 하나의 객체는 0~5TB의 용량

버킷

  • S3의 저장공간을 구분하는 단위
  • 디렉토리/폴더와 같은 개념
  • 버킷 이름은 전 세계에서 고유 값 : 리전에 관계없이 중복된 이름이 존재할 수 없음

S3 객체의 구성

  • Owner : 소유자
  • Key : 파일의 이름
  • Value : 파일의 데이터
  • Version Id : 파일의 버전 아이디
  • Metadata : 파일의 정보를 담은 데이터
  • ACL : 파일의 권한을 담은 데이터
  • Torrents : 토렌트 공유를 위한 데이터

S3의 내구성

  • 최소 3개의 AZ에 데이터를 분산 저장 (Standard의 경우)
  • 99.999999999% 내구성(eleven nine) = 0.000000001% 확률로 파일 상실
  • 99.9% SLA 가용성 (스토리지 클래스에 따라 다름)

S3 보안 설정

  • S3의 모든 버킷은 새로 생성시 기본적으로 Private
    • 따로 설정을 통해 불특정 다수에게 공개 가능
  • 보안 설정은 객체 단위와 버킷 단위로 구성
    • Bucket Policy : 버킷 단위
    • ACL (Access Control List) : 객체 단위
  • MFA를 활용해 객체 삭제 방지 가능
  • Versioning을 통해 파일 관리 가능
  • 액세스 로그 생성 및 전송 가능
    • 다른 버킷 혹은 다른 계정으로 전송 가능

사용 방벙

  1. S3 → 버킷 만들기
    • 객체 소유권 : ACL 비활성화가 권장값
    • 액세스 차단 설정 : 필요에 따라 액세스 차단 설정
  2. 업로드 후 데이터 객체에 대한 정보 열람 가능

Amazon S3 스토리지 클래스

  • S3는 다양한 스토리지 클래스를 제공
    • 클래스 별로 저장의 목적, 예산에 따라 다른 저장 방법을 적용
    • 총 8가지 클래스. (S3 on OutPosts : 다른 7가지 클래스와 구분됨)

S3 Standard

  • 최소 3개 이상의 AZ에 분산 보관

S3 Intelligent Tiering

  • 머신 러닝을 사용해 자동으로 클래스 변경
  • 퍼포먼스 손해 / 오버헤드 없이 요금 최적화

S3 Standard IA (Infrequently Accessed)

  • 자주 사용되지 않는 데이터를 저럄한 가격에 보관
  • 데이터를 불러올 때마다 비용 지불
  • 자주 사용하지 않지만 중요한 파일 보관

S3 One Zone-IA

  • S3 Standard IA와 같지만 3개의 AZ가 아닌 하나의 AZ에서만 저장하기 때문에 더 저렴한 대신 내구성이 낮음
  • 자주 사용하지 않으며 쉽게 복구할 수 있는 파일 보관

S3 Glacier Instant Retrieval

  • 아카이브용 저장소
  • 저렴한 가격
  • 바로 액세스 가능
  • 의료 이미지, 뉴스 아카이브 등 액세스가 바로 필요한 경우

S3 Glacier Flexible Retrieval

  • 아카이브용 저장소
  • 저렴한 가격
  • 바로 액세스 불가능 : 분~시간 단위 소요
  • 장애 복구용 데이터 ,백업 데이터용

S3 Glacier Deep Archive

  • 가장 저렴한 가격
  • 데이터를 가져오는데 12~48시간 소요
  • 오래된 로그 저장, 사용할 일이 거의 없지만 법적으로 보관해야 하는 서류 등

S3 on OutPosts

  • 온프레미스 환경에 S3 제공
  • 내구성을 확보한 상태로 파일을 저장하도록 설계
  • IAM, S3 SDK 등 사용 가능

Amazon S3 권한 관리

버킷 정책

  • JSon 형식의 문서로 버킷 단위 권한을 관리하는 정책
  • 버킷에 IAM 정책과 비슷한 방법으로 권한 부여 가능
    • 조건, 대상 설정 가능
    • 다른 계정에 권한 부여 가능
{
		"Version":"2012-10-17",
		"Statement":[
				{
						"Effect":"Allow",
						"Principal":"*",
						"Action":"s3:GetObject",
						"Resource":"arn:aws:s3:::<버킷이름>/*"
				}
		]
}

ACL (Access Control List)

  • 버킷 혹은 객체 단위로 읽기, 쓰기의 권한을 부여
  • S3에서 설정을 통해 ACL을 활성화 시킨 후 적용 가능
  • 파일 업로드 시 설정 가능

Amazon S3 액세스 로깅

  • S3의 버킷을 정해 활동 로그를 다른 S3 버킷에 저장하는 기능
    • 지정한 버킷에 로그 파일 저장
    • 반드시 기록 대상 버킷과 로그 저장 버킷의 분리 필요 → 무한 파일 생성 방지
  • 보안 감사 및 분석 목적으로 활용

사용 방법

  1. 로그 저장용 버킷 생성
  2. 로그를 저장할 버킷 → 속성 → 서버 액세스 로깅 → 편집
  3. 대상 버킷을 로그 저장용 버킷으로 선택

Amazon S3 미리 서명된 url

수동 파일 공유의 문제점

  • IAM 유저의 개수 제한
  • 관리의 어려움
  • 만료 기간 설정의 어려움
  • 유출 시 모두에게 다시 공유 필요
  • 세세한 권한 조절 불가능

미리 서명된 URL (Presigned URL)

  • 마패같은 느낌
  • S3의 파일을 안전하게 공유하고 싶을 때 사용
  • 생성자가 가진 권한으로 파일에 접근 가능한 임시 URL을 생성
    • URL의 만료 기간 지정 가능
    • Method(GET, POST 등) 설정 가능
  • URL의 권한은 생성자가 가진 권한 중 일부 혹은 전체 사용
    • ex. 생성자가 GET 권한이 없다면 URL로 GET 불가능

설정방법

CLI 환경

  1. 공유할 버킷 생성
  2. IAM → 역할 → 역할 생성
    • 일반 사용 사례 : EC2
    • 권한 : S3FullAccess
  3. EC2 생성
    • 고급 세부 정보의 IAM 인스턴스 프로파일 : 2에서 생성한 IAM
  4. EC2 aws 접속 후 root 계정→ aws configure set default.s3.addressing_style virtual
  5. aws s3 presign s3://<S3 파일의 URI> --region ap-northeast-2 --expire-in 100
    • region: 지역 / expire-in : 유효 시간 (초)

콘솔

  1. 공유할 버킷의 파일 선택
  2. 작업 → 미리 서명된 URL 공유

Amazon S3 정적 호스팅

  • S3를 사용하여 정적(Static) 웹 컨텐츠를 호스팅하는 기능
  • 별도의 서버 없이 웹사이트 호스팅 가능
  • 고가용성 / 장애 내구성을 확보
  • ex. 대규모 접속이 예상되는 사전 예약 페이지, 홍보 페이지, 회사 웹사이트 등
  • 유저가 클릭한 만큼만 요금 부과

정적 컨텐츠

  • 서버에 저장된 파일이 모든 사용자에게 동일하게 전달되는 컨텐츠
  • 매번 서버에 요청할 필요 없이 캐싱 가능
  • HTML/Js 등으로 구성

동적 컨텐츠

  • 시간, 사용자, 입력 등에 따라 내영이 변경되는 컨텐츠
  • 매번 서버에 요청하여 내용을 구성하고 전달받아야 함
  • PHP, JSP, ASP.net 등으로 서버 처리

설정 방법

  1. S3 → 버킷 선택 → 권한 → 퍼블릭 액세스 차단 해제 → 정적 웹사이트 호스팅 편집
    • 인덱스 문서 : 페이지 파일명
  2. 페이지 파일 업로드

기타 기능

이벤트 호출

  • 객체의 생성/삭제/변경 이벤트 발생 → 다른 서비스 호출
    • ex. 파일 업로드시 람다를 호풀해 파일 무결성 검사
  • SNS, SQS, Lambda 호출 가능

호출 구조

버전 관리 및 복제

버전 관리

  • 각 객체의 변화를 버전화 시켜 저장
    • 사용 사례 : 삭제/업데이트 후 기존의 버전으로 롤백
  • 버전의 삭제 관리를 위해서 MFA 설정 가능
  • 사용하고 싶을 때 기능 활성화 필요

복제

  • 하나의 버킷의 변화를 다른 버킷에 그대로 적용하는 기능 (삭제, 업로드, 변경 포함)
    • 다른 리전 → 같은 리전으로 복제 가능
  • 버전 관리 활성화 필요

기타 기능

  • Transfer Acceleration : CloudFront를 통해 다운로드를 최적화시키는 서비스
  • 수명 주기 설정 : 일정 기간 후 다른 스토리지 티어로 옮기기
    • ex. 30일 후 아카이브로 보내기, 50일 후 객체 삭제
profile
공부!

0개의 댓글

관련 채용 정보