티스토리 뷰

  1. 개요
    1. CloudFront AWS CDN 서비스임.
    2. Edge Location(캐시서버) 으로 전송되며 Expire 24시간임.
    3. HTTP Header Cache-Control 이용하여 시간 조절 가능
    4. Invalidation (무효화) 요청으로 캐시된 파일을 삭제 가능.

 

  1. 특징
    1. 동적 컨텐츠 전송을 지원한다 ( Dynamic Content Delivery )
      1. URL 규칙에 따라 정적 페이지는 캐시, 동적 페이지는 EC2 바로 접속 설정 가능
      2. Http GET, HEAD, POST, PUT, DELETE, OPTIONS, PATCH 메서드 지원, 특히 POST, PUT, DELETE, OPTIONS, PATHC 메서드는 오리진으로 바로 전달.
      3. HTTP 쿠키를 지원
    2. 라이브 스트리밍 프로토콜 지원
    3. 사용한 만큼만 비용 지불

 

  1. 배포 ( Distribution )
    1. Distribution 가장 CloudFront 가장 작은 단위
    2. 독립적인 도메인을 가지게 되며 Route53 별도 DNS 통해 CNAME 설정으로 연결가능.
    3. Origin : 원본을 가지고 있는 서버.
      1. S3 bucket : 가장 기본적인 Origin, S3 bucket생성 저장만 하면 .
      2. EC2 instance :  서버를 구축하면 Origin으로 사용가능.
      3. ELB : EC2 instance 여러 대의 부하분산 Origin 사용할 있음.
      4. AWS 이외의 서버 : 서버의 형태만 띠고 있다면, OS, APP 종류에 상관없이 Origin으로 사용가능.

 

  1. S3 이용하여 Distribution
    1. Web : 일반적인 서버, RTMP : 동영상 실시간 스트리밍 프로토콜

 

  1. Origin Settings
    1. Origin Domain NAME : Origin 이름 설정, 지정 가능한 S3 Bucket , ELB 표기됨
    2. Origin Path
    3. Origin ID : Origin Domain Name 설정하면 자동으로 입력됨.
    4. Restrict Bucket Access : S3 bucket CloudFront 접근할 있도록 설정하는 옵션.
      1. Yes 선택시 : Origin Access Identity : 새로운 식별자 또는 기존 식별자를 설정할 있음.
      2. Comment : 생성할 식별자
      3. Grant Read Permissions on Bucket : CloudFront S3에서 파일을 읽을 있는 권한을 버킷의 Bucket Poilicy 설정 . Yes 다른 모든 접속은 제한되고 CloudFront 접근 가능함.
    5. Origin Custom Headers

 

  1. Default Cache Behavior Settings
    1. Viewer Protocol Policy : 3가지 옵션 둘다쓰거나 리다이렉트 시키거나 https 쓰거나.
    2. Allowed HTTP Methods : 허용 메서드 종류
    3. Object Caching : Customize가능함 Min,Max Default .
    4. Forward Cookies : Origin Cookies CloudFront 통해 사용자에게 전달할지를 선택하는 옵션
      1. None :전달하지 않음. 캐시 성능이 좀더 향상됨.
      2. Whitelist : 선별 하여 전달
    5. Query String Forwarding and Caching : Oringin에서 쿼리 문자열에 따라 파일을 구분해서 보여주고 싶을때 설정. 설정하지 않으면, 성능향상
    6. Smooth Streaming : Microsoft Smooth Streaming 프로토콜을 사용 여부 ( 실시간 스트리밍 )
    7. Restrict Viewer Access : 서명된 URL 또는 서명된 쿠키를 사용하여 콘텐츠에 액세스 할지 여부, Signed URL CloudFront 사용을 제안하고 싶을때 설정.
    8. Compress Objects Automatically : 헤더에 gzip 포함되어 있으면 자동으로 압축을 사용할지 여부

 

  1. Distribution Settings
    1. Price Class : 요금수준, edge location 사용범위를 설정 하는데, 필요 없는 지역을 제외할 사용.
      1. Use Only U.S., Canada and Europe
      2. Use U.S, Canada, Europe Asia And Africa
      3. Use All Edge Locations
    2. Alternate Domain Names : Route 53에서 도메인을 연결하려면 설정 해야됨. 구입한 도메인 입력하는 .
    3. SSLCertificate : SSL사용시
    4. Default Root Object : 최상위 디릭토리 접근시 기본적으로 보여줄 파일 이름 ( index.html )
    5. Logging : 로그설정
      1. Bucket for Logs - 로그를 저장할 S3 선택
      2. Log Prefix - S3버킷에 로그를 저장할때 디렉토리명을 설정
    6. Comment : 메모
    7. Distribution State : 배포상태

 

  1. 커스텀 오리진 사용 - EC2, ELB, 외부 서버를 Origin으로 사용하는 ( 필수적으로 서버가 필요 )

 

  1. Node.js 이용하여 EC2 CloudFront 연동
    1. EC2 서버를 설정한다.
    2. Elastic IP 사용한다. = 사용하지 않을 경우 Public 도메인이 변경 되어 정보를 잃을 있음.
    3. Origin Domain name EC2 Public Domain 입력.
    4. Step 2 에서 Default Root Object index.html 항목 입력-> 이후 생성

 

  1. 외부 서버와 CloudFront 연동
    1. 서버로 구성되어 있다면 위의 내용과 같음.

 

  1. Signed URL CloudFront 콘텐츠 사용 제한.
    1. Signed URL 파일의 사용을 제한하는 기능임.
    2. 특정 날짜가 지나면 받지 못하게 하거나
    3. 특정 날짜 이후에 파일을 받게 하거나
    4. 특정 IP에서만 파일을 받을 있도록 설정 할때 이용.

 

  1. Canned Policy 사용한 Signed URL
    1. 파일 1개의 사용을 제한함.
    2. 특정 날짜가 지나면 파일을 받지 못하게 하는 기능만 수행.
    3. Policy 내용이 URL 포함되어 있지 않아 URL 길이가 짧음.
    4. URL 구조로 = http://domain/index.html?Expires= Signature= Key-Pair-ID=

 

  1. Custom Policy 사용한 Signed URL
    1. 파일 여러 개의 사용을 제한
    2. 특정날짜가 지나면 파일을 받지 못하는 기능, 특정 날짜 이후에 파일을 받을 있는 기능 사용가능.
    3. 특정 IP 혹은 특정 IP 대역에서만 파일을 받을 있도록 있음.
    4. Policy URL 포함되어 있어 URL 길이가 .
    5. URL 구조 = http://domain/index.html?Policy= Signature= Key-Pair-ID=

 

  1. 생성
    1. CloudFront -> Signed URL 만들 Distribution 클릭 -> Distribution Setting -> Behaviors -> Behavior 클릭-> Edit  - > Edit Behavior 항목에서 [ Restrict Viewer Access ( Use Signed URLs OR Signed Cookies )] YES 선택
    2. Behavior 설정
      1. Restrict Viewer Access : Signed URL 사용 유무
      2. Trusted Signers : Signed URL 에서 서명( Signature) 계정 설정
        1. Self : 서명할 AWS 계정. 기본값.
        2. Specify Account : 서명할 AWS 계정을 추가할 있음. 계정 번호를 입력 해야됨.
          1. 계정 번호 : AWS 콘솔 ( 이름 ) -> My Account 페이지에서 확인 가능.
      3. Key 생성
        1.  상단 계정에 대한 My Security Credentials -> CloudFront key pairs -> Create New Key Pair
        2. 공개키와 개인키를 다운받음.
          1. 개인키 : pk-<엑세스키>.pem
          2. 공개키 : rsa-<엑세스 >.pem
        3. Canned_policy.json 파일 생성
          1. Resource : CloudFront에서 배포된 도메인
          2. DataLessThan -> AWS:EpochTime : https://www.epochconverter.com/ UTC 생성 입력
          3. [root@ip-172-31-24-57 bin]# cat canned_policy.json |openssl sha1 -sign pk-APK.pem |openssl base64 |tr '+=/' '-_~'

aSUsIeECEw5uIuKjlg8C-oAlAr7Y75y9uBCTC9Ijb~pcG4PaOIACTWUNP0tbjPvK

PoYr8tYJv4oXBGDYkj5PL6rT2UChrniiokJmX~mM9VerghNka0TCEqrzdlmA-iJ2...


          1. 도메인 + Expires + signature + key-pair-id 직접 생성

Ex )

http://d3a2v0e2zkto5y.cloudfront.net/index.html?Expires=1548374400&Signature=aSUsIeECEw5uIuKjlg8C-oAlAr7Y75y9uBCTC9Ijb~pcG4PaOIACTWUNP0tbjPvKgPoYr8tYJv4oXBGDYkj5PL6rT2UChrniiokJmX~mM9VerghNka0TCEqrzdlmA-iJ2gFz-xni9oeRJSDLU~KIic0FmARuzmhT3Ikxj9Aa5Y20ehPC11u7DzZ6epiPvbMSmWgRloE~FXoWW61TUTTbaWy~X-SIIqrGYM-JjV7rMUy83ezWFVRkyJQQpn3BOdO5DKbgLFtM7ZIhXKo2m2zGTHmyCMaEWzt0FgIL42CQFx6PlIrstmiWIuFTkVacA5T80EuMghTdA-OGUzKa7fPsgF0xXYA__g&Key-Pair-ID=APKAJVSAGJ63AKAJ6J2A 

          1. Invalidation
        1. Distributions -> Distribution Settings ->Invalidations -> Create Invalidation 에서 예제와 같은 형식으로 지정

'서버 > AWS 이야기' 카테고리의 다른 글

EBS ( Elactic Block Store )에 관하여  (0) 2019.02.11
ElasticCache에 관하여  (0) 2019.02.11
ELB 엑세스로그 포맷  (0) 2019.02.11
VPC에 관하여  (0) 2019.02.11
CloudFront 에 관하여  (0) 2019.02.11
S3에 관하여  (0) 2019.02.11
댓글
댓글쓰기 폼