CloudFront
CloudFront 란?
- AWS의 CDN(Contents Delivery Network) 서비스
- 간단히 말하면 멀리 있는 원본서버(Origin)으로부터 사용자 가까이 위치한 서버에 저장(캐싱)하여 빠르게 컨텐츠를 제공하는 서비스.
- 엣지로케이션
- Region, AZ와는 별도의 의미
- CloudFront를 위한 전 세계 곳곳에 위치한 캐시 서버들의 모음 (ex 데이터센터)
- POP 으로 구분하며, Amazon CloudFront는 현재 47개국 90개 도시에서 310개가 넘는 상호 접속 위치(POP)(엣지 로케이션 300개 이상, 리전별 중간 티어 캐시 13개)로 구성된 글로벌 네트워크를 사용하고 있다.
- 엣지 로케이션을 통해 .html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 컨텐츠를 사용자와 가까운 위치에 캐싱하여 빠른 응답을 제공한다.
- CDN을 이용하면 보안적인 측면도 강화할 수 있다. Origin 앞단에 위치하므로 공격(DDos 등)을 방어할 수 있고, SSL/TLS 암호화 및 HTTPS 응답을 CloudFront단에서 처리함으로써 부하를 감소시킬 수 있다. 또한, 다양한 액세스 방식을 통해 인증을 걸어 제한을 컨트롤 할 수 있다.
CloudFront 실습 목표
1. 목표
S3버킷 대상으로 CloudFront을 태우고 테스트 한다.
2. 시나리오
(업데이트)
CloudFront 실습 과정
사전작업)
- S3 버킷 생성하여 object 업로드 해 두기
- object 에 접근 가능하도록 설정 해 두기
1. CloudFront distribution 설정
1-1. CloudFront -> Distributions -> Create distribution
- Distributions : 어느 오리진에 연결할 것인지, 캐싱 정책은 어떻게 할 것인지 등을 설정하는 배포방식
1-2. 세부설정사항 - Origin
- Origin domain : Origin 선택항목, 도메인으로만 설정 가능하다.
- 외부오리진
- S3
- ALB
- Media 관련 container
- Origin path : Origin의 특정 디렉토리 하위를 CloudFront에서 바라보게 하고 싶을때 설정, ex) myorigin.com/dir1/
- S3 bucket access : OAI를 사용하여 access 할것인지 여부
- OAI (Origin Access Identity) : 타유저가 CloudFront로만 S3에 접근할 수 있도록 하는 CloudFront 관련 설정. 즉, s3 주소로는 접속 못하게 하고 CloudFront로만 접근되게 하고 싶을때
- OAC 새로 나옴
- Add custom header : 오리진으로 요청할때 포함하고 싶은 헤더 설정
- Enable Origin Shield : 오리진 앞단에 캐싱 계층을 한번 더 두는 것으로, 오리진으로의 요청에대한 로드를 감소시킬 수 있다.
- Additional Settings : (추후에 추가하기로하자..)
1-3. 세부설정사항 - Default cache behavior & Viewer
- Path pattern : 캐싱 되는 URI 패턴
- Compress objects automatically : CloudFront가 자동으로 압축해주는 기능을 사용할 것인지
- Viewer : 허용할 프로토콜과 메소드 설정
- Restrict viewer access : signed URLs 과 signed cookies를 이용하여 인증된 요청만 허용할지 설정
1-4. 세부설정사항 - Cache key and origin requests
- Cache key : 객체를 캐싱 시킬때 사용할 값 지정. 즉, 캐시키는 해당 객체가 캐싱이 되었는지 여부를 파악하는 키가 된다. 해당 정책은 CloudFront의 Policy에 지정가능하며, TTL 설정 및 Cache key 값 설정 항목이 포함되어 있다.
- CloudFront의 TTL (max-age) 작동방식은 아래 참고.
캐시 키 제어 - Amazon CloudFront
캐시 키 제어 Amazon CloudFront를 사용하여 CloudFront 엣지 로케이션에서 캐싱되는 객체의 캐시 키를 제어할 수 있습니다. 캐시 키는 캐시에 있는 모든 객체의 고유 식별자이며, 최종 사용자 요청이 캐
docs.aws.amazon.com
- Cache policy : 기본값으로 세팅되어 있는 S3 추천 policy를 선택해 준다.
- Origin request policy : 오리진으로 요청 시 필요한 정책을 선택한다. (ex CORS)
- Response headers policy : CloudFront가 응답시 추가가 필요한 헤더에 대한 정책 지정이 가능하다. (ex CORS)
- Additional Settings : (추후에 추가하기로하자..)
1-5. 세부설정사항 - Function associations
- CloudFront function과 Lambda@Edge를 통해 다양한 동작을 할 수 있게 설정 가능하다.
(ex 특정 국가들의 요청을 국가 별 URL로 리다이렉션하기 등)
1-6. 세부설정사항 - Settings
- Price class : 엣지로케이션의 경우 리전별로 묶여진 등급이 존재하며, 특정 리전이 포함되지 않은 등급으로 선택하면 해당 리전의 사용자의 응답은 느릴 수 있지만 비용 절약을 할 수 있음.
아래 CloudFront 비용 관련
https://aws.amazon.com/ko/cloudfront/pricing/
Amazon CloudFront CDN - 요금제 및 요금 - 무료 체험
AWS 프리 티어의 일부로 Amazon CloudFront를 무료로 시작할 수 있습니다. Amazon CloudFront를 사용하면 매월 1TB의 데이터 전송, 10,000,000개의 HTTP 및 HTTPS 요청, 2,000,000개의 CloudFront 함수 호출을 받게 됩니다
aws.amazon.com
- Alternate domain name (CNAME) : CloudFront에 CNAME을 적용할 Domain name
- Custom SSL certificate : 별도의 도메인으로 SSL 적용을 위해서 ACM 인증서를 발급받아 SSL인증서를 등록 할 수 있다.
- Supported HTTP versions : HTTP/2 지원할건지
- Default root object : root 경로로 요청시 반환할 오브젝트 경로
- Standard logging : 뷰어로그를 S3로 저장할 건지
1-7. 설정확인 후 완료
2. TEST
2-1. CloudFront 로의 http 접속결과
- X-Amz-Cf-Pop 헤더 정보로 접속 된 ip의 팝정보를 알 수 있음 (icn)
2-2. CloudFront 로의 https 접속 결과
2-3. CloudFront dig 결과
- AWS IP 대역 알아보기?
https://docs.aws.amazon.com/ko_kr/general/latest/gr/aws-ip-ranges.html
비용관련?
https://aws.amazon.com/ko/cloudfront/pricing/
궁금한 점?
- OAI를 사용하여 S3 오리진 설정하기
- signed URLs 과 signed cookies를 이용하여 CloudFront 접근하기
- redirect, 이미지 리사이징, SSL 인증서 적용 등..
Reference
https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/Introduction.html
https://docs.aws.amazon.com/ko_kr/general/latest/gr/aws-ip-ranges.html
'IT > AWS' 카테고리의 다른 글
[AWS] VPC Peering 간단 실습 :: 다른 VPC의 EC2 접속하기 (0) | 2022.05.26 |
---|