월루를 꿈꾸는 대학생

AWS CloudFront 정의 및 실습 본문

Cloud/AWS

AWS CloudFront 정의 및 실습

하즈시 2020. 12. 26. 23:38
728x90

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

728x90

'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