AWS

What is Amazon S3 ?

박현국 2024. 9. 10. 00:11

개요

S3 는 AWS 를 구성하는 핵심 요소 제한없이 스케일링("infinitely scaling") 을 할 수 있는 스토리지로, 실제로 많은 웹 서비스들은 S3에 의존한다. S3를 backbone 으로 사용하고 또 많은 AWS 서비스들도 S3로 연동해 많이 사용한다. 이번 포스트에서는 S3 의 다양한 기능에 대해서 알아보자.

 

Amazon S3

S3의 기능

S3 는 결국 스토리지..! 라서 유스케이스가 다양하다.

  • 백업과 저장소로 활용된다. 파일을 저장할 수 있고, 디스크 역할도 해준다.
  • Disaster Recovery - 재해 복구를 위해 한 리전에 있는 데이터를 옮겨야할 때 해당 Region 이 다운된다면, 그 데이터는 어딘가에 백업이 될거고 보관용으로 사용되기도 한다.
  • Archive -  백업된 데이터는 Amazon S3에 보관해두었다가 나중에 꺼내 쓰기도 한다. 저렴한 비용으로
  • Hybird Cloud Stroage - 온프레미스 스토리지가 있는데 클라우드로 확장하고 싶다면, Amazon S3를 이용하면 된다.
  • Application hosting, Media hosting - 애플리케이션이나 미디어, 즉 비디오 파일이나 이미지 같은 걸 호스팅 할 수 있다. 
  • Data lakes & big data analystics - 빅데이터 분석을 위해 큰 용량의 데이터를 저장,  
  • Software delivery - 소프트웨어 업데이트나
  • Static website - 정적 웹사이트 호스팅을 위해서도 사용한다.

 

 

 

S3  - Bucket



Amazon S3 는 버킷에 저장한다. (최상위 디렉토리 같은 개념)S3 버킷에 저장되는 파일을 Object 라고 부른다

  • 이 버킷들은 사용자 계정 안에서 생성되고 버킷 이름은 Unique 해야한다.
  • 계정에 속한 모든 리전을 통틀어 Unique 해야하면서, AWS 에 있는 모든 계정을 대상으로도 Unique 해야한다.
  • 버킷은 Region 단위로 정의가 된다. -> 모든 Region 은 물론 모든 계정간 Unique 한 이름을 가져야 하지만, 버킷이 정의되는 건 특전 AWS Region 안에서야 한다.
  • 즉, S3는 전역적인 서비스가 아닌 특정 Region 안에서 생성되는 것
  • 버킷 name convention (알아두면 좋은 것)
    1. 대문자나 언더바가 들어가면 안됨
    2. 길이는 3~63 글자 사이
    3. IP 주소를 이름으로 넣을 수 없다.
    4. 소문자나 숫자로 시작해야함
    5. 글자랑 숫자, 하이픈만 입력하면 뭐든 된다.
S3 - Object

Object 는 파일 -> 각각의 Key 가 존재

  • 해당 Key 는 S3에 저장되며, 해당 파일의 전채 경로다.
  • ex) s3://my-bucket/my_file.txt     ---->  my_file.txt 의 키는 my_file.txt (만약 폴더 안에 넣는다면 키는 폴더를 포함한 전체 경로가 된다.)
  • 그래서 Object가 뭔가? ---> 키에 해당하는 값이 Object의 콘텐츠이다. 파일을 S3에 최대 5테라 바이트까지 올릴 수 있다.
S3 - Security
  • User-Based
    1. IAM Policies : 사용자에게는 IAM 정책을 적용하는데, 이는 어떤 API가 어떤 IAM 사용자에 의해 호출될 수 있는가이다.
  • Resource-Based
    1. Bucket Polices: 여러 버킷에 적용되는 규칙을 S3 콘솔에서 바로 설정 가능 -> 이는 특정 사용자에게 이용을 허용하거나 또 다른 계정 사용자를 허용할 수도 있다. 이는 가장 일반적인 방법 - cross account 가능, 
    2. Object Access Control List(ACL) - 세밀하게 보안을 관리하는 장치. 비활성화 시킬 수 도 있다.
    3. Bucket Access Control List(ACL)  - 버킷 단위에서 관리하기 위해 버킷 ACL을 만들 수도 있다. (흔한 방법은 아님)
  • IAM 정책으로 S3 Object 에 접근할 수 있는 것은 언제인가? 
    1. IAM 권한이 허용으로 돼 있거나 리소스 정책이 허용으로 돼 있을때 
    2. 접근 거절 액션이 명시돼 있지 않다면 접근 가능
  • Encryption : 암호화 키를 이용해 Object를 암호화 하는 것.
S3 Bucket Policies (보안의 핵심)

  • Json 으로 정의한다.

  • Resouce 부분에는 어떤 버킷 또 어떤 오브젝트에 이 정책이 적용되는지를 명시한다. 여기서는  끝에 * 이 붙은 것으로 보아 버킷에 있는 모든 오브젝트에 적용된다. 
  • 버킷에 public 접근을 허용하기 위해 s3 버킷 정책을 정의한다. 
  • Object 가 강제로 암호화 되게 할 수 있고, 다른 계정에 권한을 줄 수 있다.

  • 해당 그림을 보면 웹사이트 방문자 즉, User 가 있다. -> 버킷에 있는 파일에 접근을 원한다.
  • Public Access 를 허용하는 S3 버킷 정책을 적용(Json)
  • 이 버킷 정책이 S3 버킷에 적용되면 이 안에 있는 무엇이든지 다 접근할 수 있다.

 

 

요약

Access Key 는 AWS CLI 또는 AWS API에 대한 프로그래밍 방식 요청에 서명하는데 사용된다.

S3 Bucket Policies 는 S3 리소스에 권한을 부여하기 위한 JSON 문서이다.

수명 주기 규칙을 사용하여 S3 객체를 다른 스토리지 클래스로 전환해야 하는 시점 또는 일정 시간 후 객체를 삭제해야하는 시점을 정의 할 수 있다.

Amazon S3 Standard-Infrequent Access로 자주 접근하지 않는 데이터를 저장하고, 필요시 신속하게 접근할 수 있으며, 내구성이 높아 재해 발생 시 데이터 손실을 방지하기 위해 여러 가용 영역에 저장된다. 재해 복구, 백업 등을 위해 데이터를 저장하는데 사용 가능

'AWS' 카테고리의 다른 글

AWS 대규모 배포 및 인프라 관리  (1) 2024.09.12
AWS Databases 의 종류와 기능 !!  (0) 2024.09.11
ELB(Elastic Load Balancing) 와 ASG(Auto Scaling Group)  (4) 2024.09.09
AWS IAM 과 EC2 Instance  (1) 2024.09.08
What is IAM ?  (0) 2024.09.07