S3

Haeun Kim·2022년 1월 6일
0
  1. S3란? (Amazon Simple Storage Service)
  • AWS의 대표적인 서비스
  • 객체 스토리지
  • 파일 업로드, 다운로드, 검색 가능
  • 무제한 용량
  • 다양한 인증 / 권한 부여 제공

  1. 특징
  • 리전 기반 서비스
  • 매우 안전
  • CDN 서비스와 연동 가능
  • s3를 정적인 컨텐츠에서 서버처럼 사용 가능
  • 필요에따라 버저닝 기능 사용 가능

  1. 사용예
  • 클라우드 저장소 (개인 파일 보관 용도)
  • 서비스의 대용량 파일 저장소 (이미지, 동영상, 빅데이터)
  • 서비스 로그 저장 및 분석 (서버에 저장되는 것은 안정성, 비용 측면에서 좋지않음)
  • AWS 아데나를 이용한 빅데이터 업로드 및 분석
  • 서비스 사용자의 데이터 업로드 서버 (이미지 서버, 동영상 서버)
  • 중요한 파일은 EC2의 SSD(EBS)에 저장하지 말고 S3에 저장해야 함.

  1. 기본 실습 1
  • 버킷(객체(파일)을 저장하기 위한 컨테이너) 생성
    버킷의 이름은 글로벌하게 유니크 해야한다.
    (전세계적으로 같은 이름이 존재해선 안된다.)
  • 파일 업로드
    s3에 올라가는 파일들은 무조건 고유한 URL을 갖게 된다. -> 버킷이 비공개이므로 기본적으로는 웹에서 볼 수 없지만, 권한 조정을 통해 가능하다.
  • 폴더 사용
    폴더 생성은 가능하지만, 실제로는 폴더가 아닌 prefix 개념이다.
  • 파일 옮기기
    복사 : 작업 > 복사 > 폴더명 변경

5. 버킷 내 파일, 버킷 자체 삭제
  • 버킷을 삭제하기 전에 먼저 버킷 내부를 비워야 한다. (파일 하나하나 삭제 해야 하는 번거로움이 있음)
  • 버킷 삭제 클릭 시 뜨는 팝업에서 버킷 비우기를 선택하여 한 번에 삭제 하는 것이 편리하다.

6. S3 관련 개념 2
  • key: 버킷 안의 오브젝트를 식별하는 데 사용
    버킷안에 폴더를 생성할 수 잇는데, 폴더는 사실 키의 접두사일 뿐이다.
    예시를 들어서 설명하면 https://honux-inf.s3.amazonaws.com/2021-1/avartar.png 에서 2021-1/avatar는 폴더이기도 하지만, 버킷안의 오브젝트를 식별하는데 사용하는 key이다.
    버킷 이름 : honux-inf, prefix(폴더) : 2021-1, 파일명 : avatar.png key : 2021-1/avatar.png
  • versioning은 on/off가 가능하다.

7. S3 권한 제어
  • ACL(Access Control List) : 객체마다 ACL 지정 가능. 간단한 제어에 사용
  • Bucket Policy : IAM Policy와 유사한 문법. ACL보다 복잡하고 세부적으로 지정 가능
  • IAM을 이용한 제어 : IAM 사용자에게 버킷 접근 권하능ㄹ 주기 위해 사용
  • PresignedURL : URL을 이용하여 임시 권한을 부여하는 기능. 매우 유용함.

8. 권한 부여 실습
  • 파일 public으로 만들어보기
1. 버킷을 퍼블릭으로 만든다.
 생성 시에 버킷 접근 권한을 허용할 수 있도록 만들 수 있지만,
 아무 설정도 건드리지 않으면 퍼블릭이 아닌 상태로 만들어진다.
 만약 허용하지 않았다면 객체 선택 > 권한에서 퍼블릭 액세스 비활성화 차단을 해제하면 된다.
2. 파일을 퍼블릭으로 만든다.
 객체작업 > 퍼블릭으로 설정 (현재는 안되는 것 같다)
  • ACL 살펴보기
 파일에 접속하여 권한 > ACL 편집
  • bucket policy로 특정 폴더에 접근 권한 주기
 디렉토리 이하의 모든 파일을 public으로 바꾸고 싶을 때 사용
 버킷 권한의 버킷 정책을 수정한다. 편집 > 정책 생성기
  - Policy type : S3 Bucket Policy 
  - Effect : Allow 
  - Principal : * 
  - Action : GetObject
  - ARN 주소 기입 + /*
  1. CLI로 S3 사용하기 -> 생략

  2. S3 웹 호스팅

  • 정적 웹 호스팅? S3를 웹 서버 처럼 사용가능 (정적인 웹페이지 한정)
  • RouteS3를 이용해서 DNS 연동 가능
    이 경우 버킷 이름이 도메인 이름과 같아야함 (ex. www.honux.io)
    1. 버킷을 버킷 정책을 이용하여 public으로 만든다.
    2. 버킷 속성에 정적 웹사이트 호스팅 활성화
      인덱스 문서 - index.html 에러 문서 - error.html

  1. Multipart 업로드
  • CLI, SDK 사용 시 단일 PUT 사용으로 5GB까지 업로드 가능(싱글파일 업로드) 관리 콘솔은 160GB까지
  • Multipart Upload : 큰 파일을 쪼개서 병렬적으로 업로드. 5TB까지 가능
  1. 추가 사용에 유용한 정보
  • 스토리지 클래스를 변경하면 요금을 절약할 수 있다.
  • 라이프 사이클 규칙 지정을 통해 수명 관리가 가능하다.

0개의 댓글