본문 바로가기

IT/AWS

[AWS] CloudFront 간단실습 :: S3 버킷 object cloudfront 태우기

CloudFront

CloudFront 란?

- AWS의 CDN(Contents Delivery Network) 서비스 

  • 간단히 말하면 멀리 있는 원본서버(Origin)으로부터 사용자 가까이 위치한 서버에 저장(캐싱)하여 빠르게 컨텐츠를 제공하는 서비스. 

 

- 엣지로케이션

  • Region, AZ와는 별도의 의미
  • CloudFront를 위한 전 세계 곳곳에 위치한 캐시 서버들의 모음 (ex 데이터센터)
  • POP 으로 구분하며, Amazon CloudFront는 현재 47개국 90개 도시에서 310개가 넘는 상호 접속 위치(POP)(엣지 로케이션 300개 이상, 리전별 중간 티어 캐시 13개)로 구성된 글로벌 네트워크를 사용하고 있다.

AWS Edge Locations

 

 

- 엣지 로케이션을 통해 .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) 작동방식은 아래 참고.

https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html?icmpid=docs_cf_help_panel#cache-key-understand-cache-policy-ttl 

 

캐시 키 제어 - 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/AmazonCloudFront/latest/DeveloperGuide/GettingStarted.SimpleDistribution.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