AWS 어렵지 않아요 - CloudFront 편

dlrmsghks7·2020년 3월 29일
7
post-thumbnail

개인적으로 처음 AWS를 조작하였을 때
왠지모를 압박감과 두려움이 들어 어렵게 느껴지곤 하였습니다.
이제는 기존보다는 어렵지 않게 사용하지만 아직도 조금은
난해한 부분이 있어 이 기회에 AWS의 요소 하나씩 공부하면서
정리를 해보고자 합니다.
이 정리가 작은 도움이라도 되었음 좋겠습니다!!:)

CloudFront는 뭔가요?

Cloudfront는 AWS에서 제공하는 CDN(컨텐츠 전송 네트워크)입니다.
CDN 서비스를 이용하면 서비스 대기 시간과 성능이 개선되어
이미지, 오디오, 비디오 및 일반 웹 페이지 등을 최종 사용자에게 빠르게 제공할 수 있습니다.

서비스를 하는 곳이 S3에서 설정한 같은 리전이면 데이터를 빠르게 전송할 수 있지만,
다른 리전일 경우 아무래도 같은 지역에 비해 비교적 지연 시간이 있을 수 있습니다.
CloudFront는 오리진 서버에 위치한 원본 파일을 전세계에 위치한 에지 로케이션으로 배포하고
에지 로케이션은 이 데이터를 캐싱하며 사용자는 자신의 위치와 가까운 에지 로케이션에서
캐싱된 데이터를 제공 받으므로 이런 문제를 어느 정도 해결할 수 있습니다.

오리진 서버는 S3 버킷, EC2 혹은 ELB(Elastic Load Balancer)와 같은
다른 AWS이거나 자체 오리진 서버일 수 있습니다.

S3에서 버킷을 생성하고 파일을 업로드를 다 마쳤다는 전제하에 순서를 써보자면 아래와 같습니다.

사용방법

  1. CloudFront는 Storage & Content Delivery 내부에 있으며 CloudFront를 클릭하여 이동합니다.
  2. CloudFront Distribution은 CloudFront의 독립적 단위입니다. Create Distribution 버튼을 클릭합니다.
  3. Web 아래쪽에 있는 Get Started 버튼을 클릭합니다.
  4. Origin Settings에 항목을 채워 넣습니다. 각 항목에 대한 설명입니다.

|항목|설명|
|-|-|
|Origin Domain Name|오리진의 도메인 이름입니다.
인풋 박스를 클릭하면 현재 사용할 수 있는 항목이 나오는데
S3의 버킷을 사용할 것이므로 그에 맞게 해당 항목을 클릭합니다|
|Origin Path|Orgin Path로 입력된 디렉토리 명을 실제 접근 시 생략할 수 있습니다.
가령 moong2 S3 버킷이 있고 내부에 src라는 디렉토리와
그 내부에 index.html 파일이 존재한다고 가정했을 때
Origin Path가 /src 라면 moong2/index.html 으로 접근 시
CloundFront는 moong2/src/index.html 파일을 제공합니다.
|
|Origin ID|오리진을 구분하는 ID이며, Origin Domain Name이 입력되면 자동으로 채워집니다.|
|Restrict Bucket Access|S3 버킷에 CloudFront만 접근할 수 있도록 설정하는 옵션입니다.|
|Origin Access Identity|오리진에 접근 시 사용할 식별자입니다. 새로 생성하거나 이미 있는 것을 사용할 수 있습니다.|
|Comment|Origin Access Identity에서 새로운 식별자 생성을 클릭할 경우
식별자를 생성 시 사용할 이름입니다. 새로 사용할 식별자의 이름을 적어주면 됩니다.|
|Grant Read Permissions on Bucket|CloudFront가 S3에 접근할 수 있는 권한을 버킷의 Policy에 업데이트하는 지에 대한 설정입니다.
Yes로 설정하면 다른 모든 접속은 제한되고 CloudFront만 접근할 수 있도록 버킷에 Bucket Policy가 설정됩니다.|

  1. 아래에 계속 Default Cache Behavior Settings를 채워 넣습니다.

|항목|설명|
|-|-|
|Path Pattern|CloudFront로 파일을 가져올 규칙입니다.
기본값은 *로 설정되어 있어서 모든 파일을 가져오게 됩니다.
이 부분은 여기서는 수정할 수 없고 배포를 생성한 뒤 따로 추가할 수 있습니다.|
|Viewer Protocol Policy|CloudFront로 보여질 프로토콜 정책 입니다.
* HTTP and HTTPS: HTTP와 HTTPS를 둘 다 사용합니다.
* Redirect HTTP to HTTPS: 모든 HTTP 접속을 HTTPS로 리다이렉트 합니다.
* HTTPS Only: HTTPS만 사용합니다.|
|Allowed HTTP Methods|허용하는 HTTP 메서드 종류입니다.
* GET, HEAD: 파일을 읽기만 할 때 선택합니다.
* GET, HEAD, PUT, POST, PATCH, DELETE, OPTIONS: 동적 콘텐츠 전송을 사용할 때 선택합니다.
|
|Object Caching|파일의 캐시 유지 시간을 설정합니다. 유지 시간이 지나면 CloudFront에서 파일이 삭제됩니다.
* Use Origin Cache Headers:
오리진 HTTP 헤더의 캐시 설정(Cache-Control)을 따릅니다.
각 파일마다 캐시 설정을 다르게 할 수 있는 장점이 있습니다.
캐시 설정이 없으면 기본 캐시 유지 시간은 24시간 입니다.
* Customize:
기본 캐시 유지 시간을 따로 설정합니다.
Minimum TTL: 최소 캐시 유지시간 입니다. 초 단위로 설정해야 합니다.
이 Minimum TTL 설정 시간과 오리진 HTTP 헤더의
캐시 설정(Cache-Control) 시간 중 긴 시간이 적용됩니다.|
|Forward Cookies|오리진의 쿠키를 CloudFront를 거쳐 사용자에게 전달할지 설정합니다.
* None: 쿠키를 전달하지 않습니다. 캐시 성능이 좀더 향상됩니다.
* Whitelist: 쿠키를 선별하여 전달합니다.
(Whitelist Cookies: 전달할 쿠키 이름을 설정합니다. 각 쿠키는 새 줄로 구분합니다.)|
|Forward Query Strings|CloudFront에서 오리진으로 쿼리 문자열을 전달합니다.
오리진에서 쿼리 문자열에 따라 파일을 구분하여 보여주고 싶을 때 설정합니다.
설정하지 않으면 캐시 성능이 향상됩니다.|
|Smooth Streaming|실시간 스트리밍 프로토콜인 Microsoft Smooth Streaming을 사용하고 싶을 때 설정합니다.|
|Restrict Viewer Access|Signed URL로 CloudFront 사용을 제한하고 싶을 때 설정합니다.|

  1. 아래에 계속해서 Distribution Settings를 채워 넣습니다.

|항목|설명|
|-|-|
|Price Class|요금 그리고 사용 지역을 설정합니다.
Use All Edge Locations를 지정하면 세계 모든 에지 로케이션을 이용할 수 있고
그만큼 좋은 성능을 보여줄 수 있으나 대신 다른 옵션보다 가격이 높습니다.
* Use Only US and Europe: 미국과 유럽의 에지 로케이션만 사용합니다.
* Use Only US, Europe and Asia: 미국과 유럽, 아시아의 에지 로케이션만 사용합니다.
* Use All Edge Locations: 모든 에지 로케이션을 사용합니다.
위의 두 옵션보다는 요금이 많이 나옵니다.|
|Alternate Domain Names|Route 53에서 도메인을 연결하려면 이 부분을 설정해야 합니다.
여러 도메인이라면 새 줄로 구분하고 최대 10개까지 설정할 수 있습니다.
각자 구입한 도메인 이름을 설정하면 됩니다.|
|SSL Certificate|HTTPS 프로토콜을 사용하기 위한 인증서 설정입니다.
* Default CloudFront Certificate: CloudFront의 인증서를 사용합니다.
* Custom SSL Certificate: 사용자가 구입한 도메인과 인증서를 사용하고 싶을 때 설정합니다.
인증서 저장은 IAM에서 할 수 있습니다.|
|Custom SSL Client Support|커스텀 SSL 클라이언트 설정입니다. 앞에서 Custom SSL Certificate를 설정해야 합니다.
* All Clients: 전용 IP 사용자 지정 SSL 설정입니다.
* Only Clients that Support Server Name Indication: 서버 이름 표시(SNI)를 설정합니다.|
|Default Root Object|CloudFront 배포 도메인의 최상위(Root)로 접속했을 때 기본적으로 보여줄 파일 이름입니다.|
|Logging|CloudFront 접속 로그 설정입니다.
* Bucket for Logs: CloudFront 로그를 저장할 S3 버킷을 선택합니다.
* Log Prefix: S3 버킷에 로그를 저장할 때, 디렉터리 명을 설정합니다.|
|Comment|메모입니다. 추가적인 설명을 기록하고 싶을 때 사용합니다|
|Distribution State|배포를 생성한 뒤 배포 상태 설정입니다.
Enabled로 설정하면 곧바로 사용할 수 있는 상태가 되며
Disabled로 설정하면 그냥 배포만 생성하고 비활성화 상태로 둡니다.|

위의 순서대로 하면 Cloudfront 배포가 생성되었을 것입니다.
Status를 보면 inProgress로 표시되며 인디케이터가 회전하며
보통 배포가 모든 에지 로케이션에 전파되기까지 약 15~20분이 소요됩니다.
모든 에지 로케이션에 전파가 완료되면 Status가 Deployed로 바뀝니다.
Domain Name에 CloudFront 배포의 도메인이 표시됩니다.
웹 브라우저에서 접속하여 확인하고 이상이 없으면 끝입니다.

배포 삭제하는 방법

loudFront 배포를 삭제하려면 배포 목록에서 배포를 선택한 뒤
Disable 버튼을 클릭하여 동작을 정지시킵니다.
모든 에지 로케이션에 전파되기까지 15~20분 정도 걸립니다.
Status가 Deployed로 바뀌었다면 Delete 버튼을 클릭하여 배포를 삭제합니다.

앞으로 AWS에서 주로 쓰는 것들을 정리해보고자 합니다.
일단 사용법위주로 실무에서 도움이 되게 정리하고자 하며 추후 관련된 네트워크 지식을 정리하여
매핑할 생각입니다. 다음편은 S3 버킷 혹은 EC2가 될 예정입니다.
잘못된 내용이 있다면 알려주시면 수정하겠습니다.

조금이나마 도움이 되셨길 바라며 읽어주셔서 감사합니다.

profile
좋은 프론트엔드 개발자가 되고 싶습니다😊

1개의 댓글

comment-user-thumbnail
2020년 9월 20일

좋은 글 감사합니다!

답글 달기