AWS CloudFront基礎使用經驗紀錄

2022/08/18

CloudFront

是AWS的CDN服務

以下AWS資源可透過CloudFront節省成本

  • S3
  • Load Balancer
  • MediaStore
  • MediaPackage

 

配合S3使用

 

S3存取權設定-不使用原始存取身分 (OAI)

一般此應用情境通常為CloudFront存取的S3物件完全公開(例如網站圖片)

 

image.png

若使用此設定

S3 Bucket必須設定為允許公有存取

 

S3存取權設定-使用原始存取身分 (OAI)

一般使用此物件的情境通常為CloudFront存取S3的物件為不公開類型

例如限定權限才能下載的檔案、或是受保護的串流檔案

使用此功能通常要再配合CloudFront Signed Url或Signed Cookie功能才能取得資源

 

參考文件: https://docs.aws.amazon.com/zh_tw/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html

根據文件

一個 AWS 帳戶可以擁有最多 100 個 CloudFront 原始伺服器存取身分OAI

但OAI可用在多個CloudFront Distribution(分佈)

因此只要建立一個OAI共用即可

 

在CloudFront服務的sidebar有個OAI頁面

可先在此頁面建立一個OAI

cloudfront-oai.png

 

儲存貯體政策(Bucket Policy)的部份

這邊使用的是自行手動更新

 

S3 Bucket Pocliy更新如下

只要替換調OAI IdBucket 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}/*"
		}
	]
}

 

檢視器設定

cloudfront-viewer.png

 

通訊協定政策一般都為強制HTTPS

 

HTTP method依照需求設定

用途一般通常為GET,HEAD即可

若使用在串流可能會需要使用OPTIONS method

 

快取政策

直接使用AWS推薦的CachingOptimized即可

cloudfront-cors.png

 

測試(使用OAI)

先在S3上傳一張測試圖片、一個測試txt檔

cloudfront-demo.png

 

在瀏覽器檢視圖片網址 https://{bucket-name}.{region}.amazonaws.com/1200-810.jpg

會出現Access Deined錯誤

image.png

 

但網址換為CloudFront https://{cloudfront-distrbution-id}.cloudfront.net/1200-810.jpg

即可看到正常的圖片

 

自訂CloudFront網域+HTTPS憑證設定

有的情況使用CloudFront可能會需要自訂網域

首先要先前往AWS ACM憑證管理頁面請求自訂網域憑證

 

ACM憑證請求(公有憑證)

設定網域名稱

並選擇DNS驗證方法

image.png

 

開始DNS驗證

進入到剛才建立的憑證頁面

會看到狀態為等待驗證

這時候會看到下方的CNAME名稱、CNAME值

這兩個值要用在DNS上透過CNAME設定來驗證

image.png

 

憑證驗證DNS CNAME設定

透過前面ACM的CNAME設定在DNS建立一個CNAME紀錄

完成之後大概1-3分鐘

憑證狀態就會變為已驗證代表驗證成功了

image.png

 

設定自訂網域DNS

自訂網域必須先設定CNAME指向CloudFront Distrbution的預設網域

cloudfront-custom-domain.png

 

在"自訂網域CNAME DNS生效後"

接著前往CloudFront的自訂網域設定網址

在設定自訂SSL憑證下拉選單選擇剛才建立的憑證即可

請注意DNS一定要生效才能設定下列自訂網域步驟

cloudfront-custom-domain.png

 

清除快取(Invalidation)

在需要清除快取的情況下

可前往Distrbution內的"無效判定(Invalidation)"頁籤建立無效判定來清除快取

cloudfront-invalid.png

 

透過指定路徑即可清除指定物件快取

或是透過萬用字元*符號

來一次清除多個物件的快取

image.png