AWS CloudFront基礎使用經驗紀錄
CloudFront
是AWS的CDN服務
以下AWS資源可透過CloudFront節省成本
- S3
- Load Balancer
- MediaStore
- MediaPackage
配合S3使用
S3存取權設定-不使用原始存取身分 (OAI)
一般此應用情境通常為CloudFront存取的S3物件完全公開(例如網站圖片)
若使用此設定
S3 Bucket必須設定為允許公有存取
S3存取權設定-使用原始存取身分 (OAI)
一般使用此物件的情境通常為CloudFront存取S3的物件為不公開類型
例如限定權限才能下載的檔案、或是受保護的串流檔案
使用此功能通常要再配合CloudFront Signed Url或Signed Cookie功能才能取得資源
根據文件
一個 AWS 帳戶可以擁有最多 100 個 CloudFront 原始伺服器存取身分OAI
但OAI可用在多個CloudFront Distribution(分佈)
因此只要建立一個OAI共用即可
在CloudFront服務的sidebar有個OAI頁面
可先在此頁面建立一個OAI
儲存貯體政策(Bucket Policy)的部份
這邊使用的是自行手動更新
S3 Bucket Pocliy更新如下
只要替換調OAI Id及Bucket Name即可(花括號框起來的代表變數)
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity {oai-id}"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::{your-bucket-name}/*"
}
]
}
檢視器設定
通訊協定政策一般都為強制HTTPS
HTTP method依照需求設定
用途一般通常為GET,HEAD即可
若使用在串流可能會需要使用OPTIONS method
快取政策
直接使用AWS推薦的CachingOptimized即可
測試(使用OAI)
先在S3上傳一張測試圖片、一個測試txt檔
在瀏覽器檢視圖片網址 https://{bucket-name}.{region}.amazonaws.com/1200-810.jpg
會出現Access Deined錯誤
但網址換為CloudFront https://{cloudfront-distrbution-id}.cloudfront.net/1200-810.jpg
即可看到正常的圖片
自訂CloudFront網域+HTTPS憑證設定
有的情況使用CloudFront可能會需要自訂網域
首先要先前往AWS ACM憑證管理頁面請求自訂網域憑證
ACM憑證請求(公有憑證)
設定網域名稱
並選擇DNS驗證方法
開始DNS驗證
進入到剛才建立的憑證頁面
會看到狀態為等待驗證
這時候會看到下方的CNAME名稱、CNAME值
這兩個值要用在DNS上透過CNAME設定來驗證
憑證驗證DNS CNAME設定
透過前面ACM的CNAME設定在DNS建立一個CNAME紀錄
完成之後大概1-3分鐘
憑證狀態就會變為已驗證代表驗證成功了
設定自訂網域DNS
自訂網域必須先設定CNAME指向CloudFront Distrbution的預設網域
在"自訂網域CNAME DNS生效後"
接著前往CloudFront的自訂網域設定網址
在設定自訂SSL憑證下拉選單選擇剛才建立的憑證即可
請注意DNS一定要生效才能設定下列自訂網域步驟
清除快取(Invalidation)
在需要清除快取的情況下
可前往Distrbution內的"無效判定(Invalidation)"頁籤建立無效判定來清除快取
透過指定路徑即可清除指定物件快取
或是透過萬用字元*符號
來一次清除多個物件的快取