CloudFront
• 콘텐츠 전송 네트워크 서비스 (CDN, Contents Delivery Network)
• 엣지 로케이션의 콘텐츠 캐싱을 이용해 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 서비스
• 전세계에 배포된 200개 이상의 엣지 로케이션을 이용하여 콘텐츠 전송
• 엣지 로케이션은 데이터를 임시 저장할 수 있는 캐싱 기능이 있음
CloudFront 특징
• 사용자에게 가까운 곳의 엣지로케이션에서 데이터를 전송
• 글로벌 배포
• 전세계 사용자에게 최상의 경험을 제공
• 콘텐츠 지연시간을 최소화 하면서 제공
• 비디오 콘텐츠 등의 실시간 스트리밍 배포
• 웹사이트 속도를 높여 해외사용자에게 향상된 브라우징 경험
• EC2 등의 오리진 서버의 부하를 줄일 수 있음
• 오리진에서 CloudFront로 전송되는 비용은 부과 되지 않으므로 비용 절감 효과가 있음
• 사용자의 요청 헤더 값(디바이스, 최종 사용자의 위치, 최종 사용자가 사용하는 언어 및 다양한 조건)에 따라 서로 다른 버전의 콘텐츠를 캐싱하여 제공할 수 있음
price class
• 비용 절약을 위해 가격등급에 따라 배포하는 엣지 로케이션 수를 줄일 수 있음
• 3가지 가격등급이 있음
✓ 전체 가격 등급(Price Class All) : 모든 리전에 배포
✓ 가격 등급 200(Price Class 200) : 대부분의 리전에 배포
✓ 가격 등급 100(Price Class 100) : 일부 리전에 배포 하며 가장 낮은 비용
Origin Group : CloudFront에 대한 고가용성
• 오리진 장애 조치를 사용하여 CloudFront를 설정
• 기본 오리진과 보조 오리진이 포함된 오리진 그룹을 생성
• 기본 오리진을 사용할 수 없거나 실패를 나타내는 특정 HTTP 응답 상태 코드를 반환하는 경우 CloudFront는
자동으로 보조 오리진으로 전환
Lambda@Edge
:lamda는 컴퓨팅 서비스로 코드를 사용하여 함수를 싱핼 할 수 있는 컴퓨팅 서비스가 Lambda임, 이 컴퓨팅 서비스를 클라우드 프론트에서 Edge 로케이션에서 실행 할 수 있음 그래서 유저가 클라우드 프론트를 통하여 콘텐츠를 전달하게 되면 특정 함 수를 실행할 수 있도록
• CloudFront를 통해 전달되는 콘텐츠를 사용자 지정하는 함수를 실행할 수 있게 해주는 AWS Lambda 가 확장된 컴퓨팅 서비스
• Node.js 또는 Python 함수를 작성한 후 사용자와 가까운 엣지 로케이션에서 해당 함수를 실행
• 다음과 같은 CloudFront 이벤트가 발생할 때 Lambda 함수를 실행
✓ CloudFront가 최종 사용자의 요청을 수신할 때(최종 사용자 요청)
✓ CloudFront가 오리진에 요청을 전달하기 전(오리진 요청)
✓ CloudFront가 오리진의 응답을 수신할 때(오리진 응답)
✓ CloudFront가 최종 사용자에게 응답을 반환하기 전(최종 사용자 응답)
• Lambda@Edge 사용 예
✓ A/B 테스트를 위해 사이트의 다양한 버전을 볼 수 있도록 쿠키를 검사하고 URL을 다시 작성
✓ User-Agent 헤더를 확인하여 사용 중인 디바이스를 기반으로 디바이스의 화면 크기에 따라 다른 이미지를 반환
✓ 최종 사용자 요청 또는 오리진 요청 이벤트가 발생할 때 HTTP 응답을 생성
✓ 데이터 전송 비용을 줄이기 위해 사용자에게 전송되는 파일을 압축
CloudFront 실습
s3버킷을 만들고 파일에 권한주기
URL을 복사해서 붙여넣으면 웹페이지가 나오는데
이 버킷을 클라우드 프론트를 만들수 있음
PRICING
버킷에 불러와서 사용하게 됨 > 각 위치에서 알 수 있게함
ColudFront 보안
Cloud Front 보안 액세스 – 뷰어 / 오리진 프로토콜 정책
:Match viewer (기존것을 참고하여 앞이랑 맞춤)
Cloud Front 보안 액세스 – OAI (Origin Access Identity)
OAI(Origin Access Identity)를 통해 S3버킷의 액세스를 클라우드 프론트를 통해서만 하도록 할 수 있게 하는 기능
Singed URL, Signed Cookies
서명된 URL또는 쿠키를 이용해서 콘텐츠에 접속하는 기능
URL또는 쿠키에는 콘텐츠만료기간, 액세스가능한 IP주소를 저장할 수 있음
유료 콘텐츠나 보안을 위해 콘텐츠의 유효/만료 기간을 지정해야 하는 경우 사용 (예, 승인된 사용자만 콘텐츠를 볼 수 있도록 허용)
서명된 URL은 1개의 파일에 1개의 서명만 저장 (1개의 파일 접속을 위한 URL)
서명된 쿠키는 하나의 쿠키로 여러 개의 파일 접속 가능
지역 제한 (Geographic Restrictions)
특정 국가에서의 콘텐츠 액세스를 제한 하는 기능
법률적인 사항으로 국가별로 저작권이 다른 경우에 사용가능
2가지 지리적 제한 옵션
➢ 화이트리스트(Whitelist): 리스트에 있는 국가만 액세스 허용하고 나머지는 모두 거부
➢ 블랙리스트(Blacklist): 리스트에 있는 국가만 액세스 거부하고 나머지는 모두 허용
AWS Web Application Firewall(WAF), AWS Shield와 결합해 DDoS 방어 기능을 함
필드 레벨 암호화
✓ 신용 카드 번호와 같이 사용자가 제출한 데이터를 안전하게 오리진 서버로 업로드할 수 있게 해주는 CloudFront의 기능
✓ PUT/POST 요청이 오리진으로 전달되기 전에 엣지로케이션에서 비대칭 암호화 키를 사용하여 데이터를 추가로 암호화
✓ 데이터는 프라이빗 키를 가진 애플리케이션만 복호화 할 수 있음
복사한 정책 붙여넣기
직접 엑세스 하는경우에는 에러가뜸
도메인을 통해서는 접속됨 (OAI 적용)
지리적 제한도 가능!
Global Accelerator 개요
• 가장 가까운 위치로 트래픽을 라우팅하여 인터넷 대기시간을 줄이고 전송 성능을 향상하는 서비스
• Global Accelerator를 미사용시 서버로부터 지리적으로 먼 사용자는 많은 인터넷 라우팅을 하여 속도가 느림
• Global Accelerator를 사용하면 사용자는 가까운 거리의 엣지로케이션으로 라우팅하고 엣지로케이션과 서버는 AWS전용네트워크 연결로 전송속도가 빠름
특징
• 글로벌 액셀러레이터에는 2개의 Anycast 퍼블릭 고정 IP가 생성됨 (IP 주소 연결 방식)
• Anycast는 네트워크 트래픽을 가장 가까운 노드로 전송하는 라우팅 방식
• Elastic IP, EC2인스턴스, ALB, NLB 등의 AWS 엔드포인트를 연결하여 사용 가능
• 애플리케이션의 Health Check기능을 통해 하나의 서버 장애 발생시 다른 서버로 라우팅 가능
비교! : 둘다 엣지 로케이션을 사용하는 특징이 있음
Amazon CloudFront
변화하는 동적인 IP 주소 세트를 사용
• 전 세계에 분포된 엣지 로케이션을 사용
• 엣지 로케이션을 콘텐츠를 캐시 하는데 사용
• HTTP 프로토콜을 처리하는데 적합
• 캐시 가능한 콘텐츠(예: 이미지, 비디오) 와 동적인 콘텐츠(예: API 가속화 및 동적
사이트 제공)의 성능을 개선
Global Accelerator
• 고정된 IP 주소를 사용
• 전 세계에 분포된 엣지 로케이션을 사용
• 엣지 로케이션을 가장 가까운 리전의 엔드포인트로 최적화된 경로를 찾는데 사용
• TCP, UDP 프로토콜을 처리하는데 적합
• TCP 또는 UDP를 사용하는 광범위한 애플리케이션의 성능을 개선
• Non-HTTP를 사용하는 게임(UDP), 미디어, VoIP, 모바일 앱, IoT등의 다양한 애플리케이션의 성능을 향상
• 고정 IP 주소가 필요한 HTTP에 사용
Global Acceleraotr 실습
두개의 리스터 기입
각 리스너에 엔드포인트 연결
인스턴스를 종료하면
자동으로 연결됨