(AWS)S3, CloudFront 간단한 사용기

Lee Sang Hyuk·2022년 6월 17일
2

AWS

목록 보기
1/2
post-thumbnail

AWS S3

S3는 무슨 서비스?

Amazon Simple Storage Service(Amazon S3)는 객체 스토리지 서비스입니다. 원히는 양의 데이터를 저장하고 보호하여 데이터 레이크, 클라우드 네이티브 애플리케이션 및 모바일 앱과 같은 분야에서 모두 사용할 수 있다.

사용하는 용어

  • 버킷(Bucket): S3의 최상위 디렉토리이며 디렉토리와 객체를 저장하는 컨테이너, 단 버킷의 이름은 S3에서 유일하게 설정
  • 객체(Object): S3의 데이터 객체, 주로 파일과 메타데이터로 이루어짐
  • 키(Key): 버킷(Bucket) 내에서 객체(Object)를 찾기 위한 고유 식별자
  • 리전(Region): 버킷의 위치, 위치에 따라 지연 시간 최적화, 비용 최소화 등이 결정

https://d1.awsstatic.com/s3-pdp-redesign/product-page-diagram_Amazon-S3_HIW.cf4c2bd7aa02f1fe77be8aa120393993e08ac86d.png

정적 웹사이트?

보통 웹사이트를 정적 또는 동적으로 구분하여 제작하며 그 중 정적의 유형은 ‘회사 소개 페이지', ‘메뉴판' 등 내용이 변하지 않고 고정적인 페이지라고 말할 수 있다. 기술적으로 웹 서버에 이미 저장된 HTML 문서를 클라이언드에게 전송하게 되어 결국 모든 사용자든 같은 겨로가의 웹 페이지를 서버에 요청하고 응답을 받게 된다.

https://velog.velcdn.com/images%2Fpluviabc1%2Fpost%2Fa7e17e88-3e16-4a41-89ef-e7825e8bd923%2F2018-10-16-static-dynamic-websites-static-vs-dynamic%20(1).png

버킷 생성 & 정적 웹사이트 호스팅

AWS 콘솔 홈에서 S3 서비스에 접속하여 새로운 버킷을 생성한다. 다만 버킷 이름을 생성할 때, 다른 버킷 이름과 중복되지 않도록 고유의 이름을 입력해야 한다. 리전 선택할 때는 본인이 등록할 지역을 선택하면 된다. 다만 리전 선택에 따라 비용 최소화 및 속도 측면에서 영향을 미칠 수 있다고 한다.

버킷을 생성 후에 설정해도 가능하지만, 기본적으로 버킷 설정 과정에서 퍼플릭 엑세스 차단하는 경우가 있다. 만약, 정적 웹사이트 호스팅이나 공개적으로 콘텐츠를 배포해야 한다면 이 “모든 퍼블릭 엑세스 차단” 체크박스를 선택 해제해야 한다.

추가로, 엑세스 차단을 해제했으면 버킷 정책에 대해서 설정할 필요가 있다. 쉽게 말해서 S3 서비스에서 어떤 기능들을 모든 or 일부 사용자들한테 접근할 수 있게 할지 설정할 수 있다. 버킷 정책에서 ‘편집'을 누른 후 ‘정책 생성기'를 입력하게 된다면 아래에 있는 페이지로 이동하게 된다. 아래 사진 처럼 S3 관련된 옵션을 선택한다. Principal는 전체 경로 접근을 위해서 *로 설정, Action는 ‘GetObject’, ARN는 버킷 세부사항에 적혀 있다. 이후, ‘Add Statement’를 누르면 JSON 형태의 정책이 생성되고 복사해서 AWS 콘솔 창에 붙이기 후 적용시킨다.

버킷 생성 과정에서 기본 선택이 완료되면 드디어 버킷 내에 컨텐츠(객체)를 업로드할 수 있다. HTML 파일부터 이미지, 동영상, 다양한 메타 데이터 등 가능하다. 정적 웹사이트 호스팅을 위해 이미지 1개 및 HTML 파일을 업로드 한다.

추가로, 정적 웹사이트 호스팅을 설정할 수 있는 기능이 있으며 ‘편집’ 버튼을 누르게 된다면 활성화 여부를 선택할 수 있고, 유형 선택(엔드포인트, 리디렉션) 등이 있다. 필수적으로 웹사이트를 접속 시 열어야 하는 페이지의 Default, 즉 인덱스 문서의 이름을 입력해야 한다. 방금 S3 객체로 업로드 한 ‘mycar.html’로 설정한다. 그 외, 오류 문서 및 리디렉션 규칙 부분도 알아야 할 거 같지만 여기서는 기본적인 실습만 하는걸로 한다.

AWS CloudFront

CloudFront는 무슨 서비스?

Amazon CloudFront는 뛰어난 성능, 보안 및 개발자 편의를 위해 구축된 콘텐츠 전송 네트워크(CDN) 서비스입니다.

https://d1.awsstatic.com/products/cloudfront/product-page-diagram_CloudFront_HIW.475cd71e52ebbb9acbe55fd1b242c75ebb619a2e.png

CDN

Content Delivery Network의 약자로 어떤 지리적 위치에 관계없이 빠르게 컨텐츠를 전송할 수 있는 기술이며 기술적으로는 서버를 분산시켜 캐싱해두고 사용자의 요청에 따라 가장 가까운 서버로 매핑키셔 캐싱된 내용을 주는 방식이다. 이를 통해 컨텐츠의 병목현상을 해결할 수 있다고 한다.

정적 웹사이트 성능 가속화

AWS 콘솔 홈에서 ‘CloudFront’ 서비스로 이동하면 새로운 배포 설정을 할 수 있다. 아래 사진와 같이 배포 생성 영역에서 기존에 S3에 정적 페이지를 생성했으면 S3의 도메인 이름을 입력하면 자동으로 나머지 선택 부분에서 설정하게 된다.

CDN 관련된 캐시 동작을 설정할 수 있는 부분이며 프토토콜 설정 및 허용된 HTTP 방법에 대해서 설정할 수 있다. 일단 Default 상태로 진행한다.

추가적으로 해야 하는 부분에서는 기본값 루트 객체인데 루트 URL 접속 시, 이동해야 하는 HTML 파일명을 입력하는 부분이다.

배포 생성 시, 약 5분 정도 소요될 수 있으며 배포가 완료되면 아래 사진에서 마지막 수정 날짜가 뜨게 된다.

👉 실제로 간단한 이미지 표시 페이지를 S3 사이트 및 CloudFront 사이트(Region는 미국 동부 기준)으로 했을 때 체감이 들 정도로 CloudFront 로딩 속도가 빠르다.
profile
개발자가 될 수 있을까?

0개의 댓글