[Cloud Architecture] 2. CDN with AWS CloudFormation
TABLE OF CONTENTS
1. What is CDN and CloudFront?
Cloudfront와 S3를 연동해서 기존에 Cloudfront에 Caching되어있던 것을 invalidation시킨 후 S3를 새롭게 Cloudfront의 Origin으로 둬서 이 S3에서 Contents를 가져와서 제시하도록 해보자
일단 S3 Bucket(Public Access 허용)을 만들어두자. 그리고 이 S3 Bucket에 Static Contents(HCJ나 .jpg 같은 것처럼 브라우저에 그냥 바로 뿌려지는 것들)를 업로드 해주자. 그 후 Cloudfront를 생성해주고 Origin은 내가 만든 S3 Bucket으로 해주자. 그리고 Cloudfront에서만 이 S3 버킷에 액세스할 수 있도록 Origin access control(원본 액세스 제어)를 설정해주자
당연히 뷰어 프로토콜에는 Redirect HTTP to HTTPS로 설정해두자
그리고 대체 도메인 이름(CNAME)을 설정해 두도록 하자
SSL 인증서는 내가 Virginia region에 ACM로 만들어뒀던 SSL 인증서를 선택하자.
그 후 이 Cloudfront의 정책을 복사해서 S3 bucket에서 Policy를 그대로 박아주자.
그러면 이 cloudfront의 도메인 이름으로 들어가면 정상적으로 해당 static contents가 S3에 올라간 파일의 이름에 따라 출력이 되게 된다.
2. How to invalidate CloudFront cache?
그리고 F12로 찍어보면 Hit가 되는 것을 볼 수 있다.
이후 S3에서 해당 static content(dog.jpg, cat,jpg)를 삭제를 해도 cloudfront에는 계속 caching이 되어 있기 때문에 계속 뜨게 되므로 이제 Cloudfront에서 캐시된 S3 객체를 invalidate 시켜보자
일단 S3에 올라가 있는 Static Contents 부터 없앤다. 그 후 Cloudfront의 무효화 생성에서 /*로 전부 다 없애버리자
이후 다시 S3에 객체를 업로드하면 새롭게 생성된 객체가 Cloudfront에서 보이게 된다
지금까지는 자동으로 생성된 Cloudfront 도메인으로 작업을 했지만(아래와 같이) 이제 레코드를 설정해서 내가 설정한 레코드로 도메인이 설정되도록 해주자
[Reference]
1. https://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/Welcome.html
AWS CloudFormation란 무엇인가요? - AWS CloudFormation
AWS CloudFormation란 무엇인가요? AWS CloudFormation은 AWS 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해 주는 서비스입니다.
docs.aws.amazon.com
2. https://www.ibm.com/kr-ko/topics/content-delivery-networks
CDN(Content Delivery Network)이란? | IBM
CDN(Content Delivery Network)은 웹사이트 및 모바일 앱의 성능을 최적화하여 고객 만족도를 높입니다.
www.ibm.com