-
[AWS] CloudFront 실습AWS 2024. 2. 13. 23:57
S3 버킷 새로운 버킷 만들기
AWS 리전 : 현재 있는 지역에서 조금 멀리 떨어져 있는 곳으로 선택
eg. 미국 동부 오하이오 혹은 서부 오레곤 지역
버킷 이름 : awslearner-cloudfront-practice
객체 소유권 : ACL 활성화됨 체크
객체 소유권 : 버킷 소유자 선호
이 버킷의 퍼블릭 액세스 차단 설정 :
모든 퍼블릭 액세스 차단 : 체크 해제
그 이외 : default
버킷 만들기 click
버킷에 사진 업로드하기
사진을 올리는 이유는 다른 지역에 있는 버킷에 들어있는 사진을 여는 과정을 확인해보기 위해서.
예를들면 사는 곳은 한국인데 버킷지역이 미국으로 되어 있다면?
권한 :
ACL(액세스 제어 목록)
미리 정의된 ACL :
퍼블릭 읽기 액세스 권한 부여 선택
⭢ 버킷 레벨뿐만 아니라 오브젝트 레벨에서도 Public 권한이 생기는 것 (바람직한 방법 X 보안이슈)
실제 프로덕션에서는 이 파일을 업로드 및 삭제할 수 있는 권한을 지닌 사람, 파일 읽기만 가능한 사람. 이런식으로 사용자와 그룹을 따로 나눠서 관리해야하는 것
업로드 Click
객체 URL click
이미지가 로딩되는 과정에서 약간의 버퍼링
⮕ 버킷의 리젼과 살고있는 지역이랑 가깝다면 속도는 빨랐을 것이다.
지역이 달라도 업로드, 다운로드 속도를 향상시킬수있는 방법은? Clouldfront CDN
CloudFront 대시보드로 들어가준다
새로운 CloudFront 배포 생성 click
여기서 배포 : 새로운 분산 네트워크를 하나 만든다는 뜻
Cloudfront 배포 생성
원본
Origin domain : S3 버킷 뿐만아니라 ELB 다양한 오리진을 선택할 수 있다.
아까 만들어준 S3 버킷을 찾아서 선택해준다. ⭢ 그러면 자동으로 이름이 입력이 된다.
Origin path - optional : 선택사항. 복잡한 폴더 구조로 이루어져있는 버킷 안에서 특정 폴더만 선택해서 사용하고 싶을 때 정의
공개 : 제한을 두지 않고 아무나 네트워크에 접근 권한이 생기게 된다.
버킷 또한 퍼블락 액세스가 차단이 되어있어야한다. 보안적인 측면에서 바람직 X 옵션
원본 액세스 제어 설정(권장) : 버킷 안에 있는 콘텐츠는 클라우드 프론트를 통해서만 접근 가능
Legacy access identities : OAI라고 불리는 원본 액세스 id를 사용해서 버킷에 접근한다
OAI? 클라우드 프론트에 존재하는 가상 유저. 컨텐츠 접근 권한을 가지고 있다.
새 OAI 생성 버튼을 누르게 되면, 이미 OAI 이름이 정의가 되어서 나온다.
버킷 정책 : 읽기 권한을 사용자에게 부여할지 안할지에 대한 권한을 묻는 것
예, 버킷 정책 업데이트 선택
오리진으로 보내는 요청에 사용자 지정 헤드를 추가할 때 필요하다. 필요없음으로 PASS
Enable Origin Shield : 원본의 부하를 줄이고 가형성을 보호하는데 도움이 추가되는 캐싱 계층이라 설명이 되어있음.
캐시 적정률 샹상을 통해서 더 효울적인 콘텐츠 로딩을 위해 사용되어 질 수 있다. 그렇지만 사용시 추가 요금 발생 default는 아니오
기본 캐시 동작
경로 패턴 : 사용자가 변경 불가
기본값(*) : 여기서 *는 정규 표현식 값중 하나. 모든 것을 의미
자동으로 객체 압축 : 컨텐츠를 오리진으로 보낼 때 압축해서 보낼지 아닐지에 대한 여부
HTTP 헤더중 하나인 Accept-Encoding 헤더에 지정된 대로 뷰어가 지원하는 경우에만 파일을 압축합니다.
뷰어
뷰어 프로토콜 정책 :HTTP란? HyperText Transfer Protocol의 약자
HTTPS의 S는 Secure의 약자. 안전한. HTTP보다 보안적인 측면에서 뛰어나다.
Redirect HTTP to HTTPS 선택
요청이 HTTP로 올지 HTTPS로올지 모르며 두 종류의 요청이 오더라도 모두 HTTPS로 규결시킬 수 있는 방법인 두 번째 옵션을 사용하자는 것
첫번째 옵션은 HTTP를 허용하고 있고
세번째 옵션은 HTTP를 거부하고 있다.
허용된 HTTP 방법 :
API 요청을 할 때 발생할 수 있는 GET HEAD와 같은 상활 중 무엇을 허용할지를 묻는 것
디폴트로 선택된 GET, HEAD 선택
뷰어 액세스 제한 : No 선택
Yes할 경우 클라우드 프론트에 서명된 URL 또는 서명된 쿠키를 사용해야함
이는 EC2 인스턴스에 접속할 때 썻던 PEM 파일과 비슷한 개념. 액세스 권한을 부여받은 사용자만 콘텐츠에 접근할 있게 하는 것.
캐시 키 및 원본 요청
AWS에서는 캐시 정책과 오리진 요청 정책 사용을 권장하고 있지만, Legacy cache 사용할 수도 있다.
본 실습에서는 권장하고 있는 첫번째 옵션 선택
캐시 정책 : 현재 캐시 정책에 대해 자세히 알고 싶다면 정책 보기 클릭
Managed-CachingOptimized에 대한 세부 정보를 볼 수 있다.
최소 TTL(초)은 1초
최대 TTL(초)는 31536000 (365일 1년)
기본 TTL(초)은 86400 (24시간)
압축방식은 Gzip 또는 Brotli를 지원하고 있다.
함수 연결 - 선택 사항
클라우드 프론트를 사용할 때 일어날 수 있는 다양한 상황에서 클라우드 프론트 함수 및 람다 엣지 이 둘 중 하나를 사용할 수 있다.
개발자가 구현한 코드에 근거하여 이벤트가 발생할 경우 이 함수를 실행하라는 것
함수에 ARN을 넣고 함수를 사용할 수 있다.
웹 애플리케이션 방화벽(WAF)
설정
가격 분류 : 이옵션에 따라 엣지 로케이션이 얼마나 많이 전 세계에 생성될지 결정된다.
엣지 로케이션이 많아질수록 속도는 비약적으로 향상될 것. 단점 : 추가 비용 발생
전 세계 사용자들을 위해서라면 첫 번째 옵션을 사용하는 것이 맞으나 실습이므로 최선의 비용으로 클라우드 프론트를 구축할 것이므로 두번째 혹은 세번째 옵션을 사용할 것 ⭢ 본실습 두번째 옵션 선택
대체 도메인 이름(CNAME) - 선택 사항 : 만약 도메닌 주소를 이미 구매했다면 여기서 사용할 수 있다.
클라우드 프론트를 구축할 때 필요한 것은 아니지만 도메인 주소를 제공하지 않으면 사용자를 위해 클라우드 프론트는 이밎 도메인 주소를 생성해준다.
사용자 정의 SSL 인증서 - 선택 사항 : 이건 버지니아 지역에서 생성한 것이어야만한다.
SSL 인증서는 버지니아 지역에서만 생성 가능.
인증서 요청 버튼을 누르면 새창이 뜬다. AWS로부터 Public SSL 인증서를 생성할 수 있다.
인증서를 사용하는 이유 중 하나는 HTTP 요청을 HTTPS로 리다이렉트 할 때 사용되어진다. 우린 인증서 없이 진행할 수 있다.
리전이 버지니아 북부로 바뀐는 것을 확인할 수 있다.
지원되는 HTTP 버전 :
기존 버전인 1.0과 1.1이 포함되어 2를 사용할지 아니면 최근에 추가된 3을 사용할지를 선택
빠른 네트워크 처리 및 안정적인 네트워크 연결을 위해 가장 최신 버전을 사용하는 것을 권장
따라서 3 선택
기본값 루트 객체 - 선택 사항 : PASS
표준 로깅 : PASS
IPv6 : zurl
IPv에 비해서 더욱 다양한 IP 주소를 포함한다. 그만큼 복잡도는 ⭡⭡⭡
배포 생성 click
배포 도메인 이름 : 클라우드 프런트에서 직접 생성된 URL
원본
이는 콘텐츠가 들어있는 S3 버킷과 동일
원본 액세스 Id도 있음
경로 패턴 : 기본값으로 되어있는 데 이는 앞서 경로값을 정의 하지 않았기 때문에
모든 요청을 HTTPS로 바꿔주는 옵션을 선택했지 때문에 이렇게 보임
캐시 정책 이름 : Managed Chaching Optimized를 선택했기 때문에 이렇게 보임
배포 도메인 이름 URL을 복사해서 새탭으로 열어보자.
맨앞은 HTTP로 바꿔서. 맨끝에는 파일명을 넣어준다.
처음 벅속시 버퍼링이 생길 수 있으나 재차 방문할 경우 가장 가까운 엣지 로케이션에서 콘텐츠를 가져오기 때문에 속도가 향상될 것이다.
접속시 http로 접속을 했는데 https로 리다이렉트 된것도 확인할 수있었다.
'AWS' 카테고리의 다른 글
[AWS] DynamoDB - Index (0) 2024.02.14 [AWS] DynamoDB (0) 2024.02.14 [AWS] CloudFront (0) 2024.02.13 [AWS] Lambda 실습2 (Lambda 함수 실행 / cloudwatch) (1) 2024.02.13 [AWS] Lambda 실습 (Lambda 함수 생성, test) (1) 2024.02.13