월루를 꿈꾸는 대학생
AWS CloudFront 정의 및 실습 본문
CLOUD FRONT
- 전송 속도 향상과 비용 절감
- 전 세계를 대상으로 S3버킷이나 EC2 생성하는 것은 비효율
-> 가까운 엣지 로케이션에서 받아서 쓰자
캐쉬 개념
오리진 : cloudfront 는 cdn 서비스라서 항상 원본에서 파일을 복사해서 가져옴 ... 이 파일을 가져오는 서비스가 오리진
# s3 - cloudfront
일단 s3로 정적 웹사이트 호스팅 구축
cloudfront에 가서 구축
구축 완료 위의 도메인 네임에 접속
ec2 접속
node js 및 npm 설치
# curl -sL https://rpm.nodesource.com/setup_8.x | sudo -E bash - #yum install nodejs --enablerepo=nodesource
yum install nodejs --enablerepo=nodesource
mkdir ExampleServer
cd ExampleServer
npm instsall express
npm과 node.js 를 설치를 하고 구문 작성
app.js
var express = require('express');
var app = express();
app.get(['/','/index.html'], function (req, res) { res.send('Hello CloudFront = EC2');$
app.listen(80);
서버 실행
sudo node app.js
cloudfront
다시 만들기
#외부 서버 연동
이 경우 그냥 있는 웹서버의 정보를 엣지 서버로 캐싱해서 전세계적으로 배포시 좀 더 빠르게 해준다
### Signed URL 사용 설정
S3 있는 CLOUDFRONT 감
EDIT 드가서 RESTRICT VIEWER ACCESS = YES
YES 로 바꾸기
이제 못 드감 키 있어여 함!
Trusted Signers = self
!!
설정하면 10 -15 분 뒤 접속 가능 하지만 에러가 발생
이제 signed URL 맞는 파라키터들이 없으면 접근 불가
## SIGN URL 서명을 위한 CLOUDFRONT 키쌍 생성기
SIGN URL 만들려면 먼저 CLOUD FRONT 전용 키쌍과 엑세시 키 생성
정책을 서명 하는 이유는 정책이 변조되었는지 검증
키쌍이 생성 됨
개인 키 = pk
공개키 = rsa
# Canned Policy를 사용한 SignURL 생성하기
Canned = 미리 준비가 됨 // 배포 서버에서 정책을 이미 알고 있기에 url에 정책 내용이 포함 xx
ec2 인스턴스에 접속 canned_policy.js 작성
영국시간은 https://www.epochconverter.com/ 참고
해당 cloudfront 사용하는 ec2에 들어가서
canned_policy.json 사용하기
{
"Statement": [{
"Resource": "http://dra5fnra3dmk0.cloudfront.net/index/html",
"Condition": {
"DateLessThan" : {
"AWS:EpochTime" : 1585942691
}
}
}]
}
vim canned_policy.json
cat canned_policy.json | openssl sha1 -sign 개인키 | openssl base64 | tr '+=/' '-_~'
이렇게 하면 실행 안 됨
ec2에다가 개인키 넣어야 함
직접 서명된 url 작성
http://d1m69r2qocr5m1.cloudfront.net/index.html?Expires=1585989911&Signature=T91JfGdnfGBoks~yGRc8qhBwCpFZVu8uC96c2Y0Kf3seR3Q4n8ttHMuCB8ALa14R
3UsIxGWVZGoFFtvZUA7lWgKvhhj5U2zoBFixhrdvEsWVb2j6Aik6dDXBWim7mX4H
hWH0rTTsEY1C6QQ6yjVz8UD8bVwOubLcuYd0ljkQknYTjwcTfTnMppV0Sfk-FVd5
oCFa05U0ADcG2xXNW2CtmjRRtcpB4iqoEiOpLqnFkQxNR43jq8oat9UA2kpiThTA
ms0DD4lLMQhvqFZsewacvo4x3yr1Iy7Mt7HI3oBloqnNW1xcAI5VcP9SUQIPkgOe
pqsqYQv7aIOBrvOGRV0rrA__
&Key-Pair-id=APKAIFHDWVTV6MCAETRA
http://d1m69r2qocr5m1.cloudfront.net/index.html?Policy=http://d1m69r2qocr5m1.cloudfront.net/index.html?Expires=1585989911&Signature=SvcbX~PyI71SqKxxovd-u5ChKWP81Xf778XJXSz~l3pb7Uzf0rKW6Sh5vaqRnpVo
Ny7DeMNmM4VxmjWsifgZzX74-g4DKpIJyLRYPkZC9rJ3SJwhxn5tIKZVd3CJCEtB
jrrRh485uHjZx8OYonBNuU53EmEQ6N2ANUD4iVAqJD7rGmc1whsWhufPUbJzSwUH
vic04a0yYq50-CfUomPdVx6vuj-oHSXvic-EWM6312Xqfe07kdkCVwbqDtJpneZs
F6l2FZc1LTIGIl-ocqmMJj1RpgGddrd58C14UyzZC~oBnUOYF5kh4zYzDLbHmZR3
SBfL8QxDdBoWyqMsZ61HdA__&Key-Pair-id=APKAIFHDWVTV6MCAETRA&Key-Pair-id=APKAIFHDWVTV6MCAETRA
'Cloud > AWS' 카테고리의 다른 글
AWS API GATEWAY 정의 및 실습 (0) | 2020.12.27 |
---|---|
AWS S3 정의 및 실습 (0) | 2020.12.26 |
AWS RDS 정의 및 실습 (0) | 2020.12.26 |
AWS DynamaDB (0) | 2020.12.26 |
AWS IAM 정의 및 실습 (0) | 2020.12.26 |