# AWS - 設計一個用客制網域全球使用者上傳檔案到 S3 的系統
# 元件說明
- S3 儲存圖片檔案
- CloudFront 全球加速、CDN、安全代理上傳與下載
- OAC (Origin Access Control) CloudFront 與 S3 之間的私有授權通道
- ACM (AWS Certification Manager) 建立與綁定 HTTPS 憑證給 CloudFront
- Route53 DNS 將網域指向到 CloudFront
- CORS + Pre-signed URL 安全授權上傳圖片給 S3
# 實作步驟
# Step.1 建立 S3 Bucket
- 設定一個 bucket my-photo
- 區域 eu-west-1
- 關閉 Public Access 所有存取都走 CloudFront
- 設定 CORS Policy (允許上傳請求)
# Step.2 建立 CloudFront Distribution
- Origin Domain
- 選擇 S3 Bucket
- Origin Access -> 選擇 Origin Access Control (OAC)
- Origin Access Control 設定
- Create Control > Sign requests > 建立後 CloudFront 會生成一個簽署身份
- 更新 S3 Bucket Policy 把 Permission 貼上去
這樣只有 CloudFront 可以存取 S3
# Step.3 設定 ACM 憑證
- ACM > 選擇 us-east-1 因為 CloudFront 只能用這個區域的憑證
- 建立憑證給你的 Domain
- 驗證 DNS 在 Route53 建立 CNAME Record
- 回到 CloudFront > Distribution > Setting
- CloudFront Domain Name: 你的 Domain
- SSL Certification: 剛剛建立的憑證
# Step.4 設定 Route53
建立一個 CNAME/ALIAS
- Record Name 你的 Domain
- Value 你的 CloudFront Distribution Domain Name
# Step.5 安全上傳設計
方法有兩種
- Pre-signed URL 上傳
- CloudFront Signed URL