# 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

  1. 設定一個 bucket my-photo
    • 區域 eu-west-1
  2. 關閉 Public Access 所有存取都走 CloudFront
  3. 設定 CORS Policy (允許上傳請求)

# Step.2 建立 CloudFront Distribution

  1. Origin Domain
    • 選擇 S3 Bucket
    • Origin Access -> 選擇 Origin Access Control (OAC)
  2. Origin Access Control 設定
    • Create Control > Sign requests > 建立後 CloudFront 會生成一個簽署身份
  3. 更新 S3 Bucket Policy 把 Permission 貼上去

這樣只有 CloudFront 可以存取 S3


# Step.3 設定 ACM 憑證

  1. ACM > 選擇 us-east-1 因為 CloudFront 只能用這個區域的憑證
  2. 建立憑證給你的 Domain
  3. 驗證 DNS 在 Route53 建立 CNAME Record
  4. 回到 CloudFront > Distribution > Setting
    • CloudFront Domain Name: 你的 Domain
    • SSL Certification: 剛剛建立的憑證

# Step.4 設定 Route53

建立一個 CNAME/ALIAS

  • Record Name 你的 Domain
  • Value 你的 CloudFront Distribution Domain Name

# Step.5 安全上傳設計

方法有兩種

  1. Pre-signed URL 上傳
  2. CloudFront Signed URL