2016年3月30日 星期三

AWS 隨意筆記 (3) CloudFront (CDN) 基本設定

1

上一篇試著使用了S3,在雲端存放並分享資料基本上已經可以實現,但最好再配合CDN服務,可以提升大型檔案的下載速度。


CDN服務是什麼:

Content delivery network 或 Content distribution network,縮寫為CDN,詳見:WIKI 內容傳遞網路

超簡單的說,把資料複製到散佈在各地的主機群,以分散資料傳輸與存取壓力、利用各主機所在地理位置增進速度。


CloudFront是什麼:

是Amazon的CDN服務,官方介紹:Amazon CloudFront – 內容交付網路 (CDN)

使用S3儲存資料並不一定要配合CloudFront作為CDN,當然也可以用別家CDN。如果用S3配合CloudFront的設定方式會很簡單。

而使用CloudFront「目前也已經」不一定要用AWS原始伺服器(Amazon S3、EC2、Elastic Load Balancing 等)當作資料來源,不過如果用AWS做為來源,由資料來源到CloudFront的傳輸是免費的。 (用其他主機做來源,主機會產生傳出到CloudFront的流量費用)

CloudFront依據:「資料傳出量」、「資料存取請求次數」、「資料傳輸目的或請求的區域」來計費。


新手免費方案包含:

Amazon CloudFront (CDN):
AWS 的新客戶註冊時,可獲得每月 50 GB 的資料傳出以及 2,000,000 個 HTTP 和 HTTPS 請求,為期一年。

超過用量部分,按照 Amazon CloudFront 定價 收取費用。


創建一個新的 Distribution (分流):

以下例子以S3作為資料來源。

在主控台畫面左邊可以找到「CloudFront」,如圖:

點進去之後,右上角可以看到,CloudFront沒有分區可選 --也不需選擇分區。

Distribition分成兩類:Web(一般用途) 與 RTMP(影音串流用途)。在此選擇Web的「Get Started」。

圖一:

然後會進入創建細節(PART1),如下圖:

圖二:

  • Origin Domain Name:點擊這個輸入框,就會出現「-Amazon S3 Buckets-」的下拉選單,只要從中選擇你想作為來源的Bucket即可。
  • Origin Path: 如果只想使用上述來源中的某個資料夾,在此輸入以" / "開頭的路徑名稱。
  • Origin ID: 輸入一個用來辨識此資料來源的自訂名稱
  • Restrict Bucket Access: 是否對資料來源加上存取限制。如果希望以後是向cloudfront存取資料,而非直接對資料來源存取,請選"Yes"。
  • Origin Access Identity: 指定CloudFront用來存取資料來源的Identity(身份),如果沒有設定過,就選"Create a New Identity"。
  • Comment:辨識此Identity的自訂名稱
  • Grant Read Permissions on Bucket:假如之前沒有編寫過S3 Bucket Policy,就選"Yes",Cloudfront將會自動更新此來源的存取限制Policy。
創建細節(Part2),如下圖,大致都按照預設即可:

圖三:

更多細節(Part3),如下圖:

圖四:

  • Compress Objetcts Automatically: 如果想將資料進行gzip壓縮後再傳出,請選"Yes"。
    (詳情可參考 官方文件: Serving Compressed Files , Amazon CloudFront Now Supports Gzip Compression at the Edge )
  • Price Class: 如果認為速度最重要就選"Use All Edge Locations" (會使用所有地區的節點為使用者提供所在地的最佳傳輸速度),如果想盡量省錢不管速度就選"Use Only US and Europe" (這兩區的節點最便宜)。
  • Alternate Domain Names (CNAMEs):如果想為此分流設定自訂網址,請在此輸入。
  • SSL Certificate: 先選Default(預設的),之後再改。

創建完畢後,要等一段時間才能使用此分流.....

請先回到CloudFront主畫面,點入剛剛創建的分流,可以看到設定畫面如下圖,紅框中的Domain Name就是這個分流的預設網址。

圖五:

如果要用自訂網址存取此分流,也是到網址的管理後台,新建一筆CName紀錄即可,例如:
CName: cdn
值: xxxxxxxx.cloudfront.net (分流的原始網址)


基本使用:

回到S3,進入作為來源的bucket,找出一個檔案的網址,例如 https://s3-ap-northeast-1.amazonaws.com/asset.asdf.com/01.png,會發現無法開啟,也是 Access Denied 。
(如果沒有特別去公開化此檔案的話)。

這是因為之前在設定分流時,設定了 "Restrict Bucket Access" 與 "Grant Read Permissions on Bucket"選項,此Bucket已經被限制只能透過此分流的Identity來存取。

也就是說,以後要改透過cloudfront來存取資料了,將網址更改成以下的形式皆可:

https://xxxxxxxx.cloudfront.net/01.png

https://cdn.asdf.com/01.png (如果有設定自訂網址的話)

1 則留言:

  1. Carol兄您好,您的文章精彩又詳盡,非常謝謝您,我依照步驟完成了s3+cloudfront設定,但不知為何檔案一直沒辦法快取,使用工具檢測結果都是未設定到期日,不知是那裡錯了,請問您能給一些建議嗎? https://ae1img.okweb.asia/3001/images/quick_fb.png

    回覆刪除

歡迎分享本文~