AWS

[AWS] Amazon S3 알아보기

또개해삼 2022. 1. 15. 21:21

💡 S3 ?

Amazon S3(Amazon Simple Storage Service)는 업계 최고의 확장성과 데이터 가용성 및 보안과 성능을 제공하는 객체 스토리지 서비스이다. 즉, 어떤 규모 어떤 사업의 고객이든 이 서비스를 사용하여 웹 사이트, 모바일 애플리케이션, 백업 및 복원, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅데이터 분석 등과 같은 다양한 사용 사례에서 원하는 만큼의 데이터를 저장하고 보호할 수 있다.

 

Amazon S3 작동 방식

  • S3는 데이터를 버킷 내의 객체로 저장하는 객체 스토리지 서비스다. 객체는 해당 파일을 설명하는 모든 메타데이터이다.
  • S3에 데이터를 저장하려면 먼저 버킷을 생성하고 버킷 이름 및 AWS 리전을 지정해야 한다. 그런 다음 S3에서 객체를 해당 버킷에 데이터를 업로드한다.
  • 각 객체에는 키가 있으며, 이는 버킷 내 객체에 대한 고유한 식별자이다.

 

S3 객체 스토리지 서비스

  • 객체 스토리지 서비스 : 파일만 가능
    • 파일 설치 불가
  • 무제한 용량
    • 단 하나의 객체는 0byte(key값만 존재)에서 5TB의 용량
  • Bucket이라는 단위로 구분
    • 디렉터리의 개념
    • Bucket이름은 Global Unique
    • 즉 전 세계에 어디에도 중복된 이름이 존재할 수 없다.
    • Web Hosting시 도메인과 Bucket 명이 같아야 한다.

 

S3 API

  • 파일 관련 API(업로드, 업데이트, 삭제 등)
    • 업로드 성공 시 HTTP 200 코드 반환
    • 큰 용량의 파일의 경우 Multipart Upload 가능(개당 5gb)
    • 다운로드 Torrent 지원
  • Bucket 관련 API(조회, 생성, 삭제 등)
  • 기타 기능(Lifecycle, Replication 등)

 

S3 객체의 구성

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

 

S3 Static Hosting

 

S3 일관성 모델

  • Put(새로 생성) : 일기 후 쓰기(Read After Write)
    • 파일을 올리고 성공한 즉시 읽기 가능
    • 먼저 Put 한 요청이 우선권
  • Update / Delete : 최종 일관성(Eventual Consistency)
    • 파일을 삭제하거나 업데이트 후 일정 시간 후에 결과가 반영됨(1초 미만)
    • 원자성 확보 불가능

 

S3 보안 설정

  • Bucket Policy
    • 버킷 단위(파일 하나하나의 세세한 단위는 설정 불가능)
    • JSON 형식
    {
    	"Version": "2012-10-17",
    	"Statement": [
    {
    					"Sid": "PublicReadSid",
    					"Effect": "Allow", // 유저 허용 여부
    					"Principal": "*",  // 어떤 유저에게 허용을 할것이냐
    					"Action": "s3:GetObject", // 오브젝트를 갖고오는 액션
    					"Resource": "arn:aws:s3:::{bucket_name}/*" // 무엇을 S3에arn에 대한 bucket
    			}
    		]
    }
  • ACL(Access Control List)
    • 파일 단위
  • Access Log 전송 가능
    • 다른 버킷 혹은 다른 계정으로 전송 가능
  • MFA를 활용해 삭제 방지 가능

 

S3 암호화

  • S3의 데이터의 암호화는 3가지 암호화로 구성
    • On Transit : SSL/TLS(HTTPS)
    • At Rest
      • SSE S3 : S3에서 알아서 암호화
      • SSE KMS : KMS 서비스를 이용해 암호화(AWS key 패스워드를 관리)
      • SSE C : 클라이언트에서 제공한 암호화를 통해 암호화
    • 클라이언트가 직접 암호화

 

S3 공유

  • S3의 공유는 3가지 방법으로 가능
  • Bucket Policy/IAM
    • 포로그램 액세스만 가능
    • 버킷 단위
  • ACL
    • 프로그램 액세스만 가능
    • 파일 단위
  • IAM 크로스 어카운트
    • 콘솔/프로그램 액세스 가능