昨天簡單介紹使用 S3 架設網站
但是實際上使用 S3 架站
或者說從 S3 流出資源本身就不是個建議的方式
如果不使用其他 AWS 服務單純使用 S3
則有機會透過大量存取造成龐大金額支出
而使用 CloudFront 最大的好處就是可以跟防火牆設定做綁定
除了最基本的可以跟 Web ACLs 關聯做到第七層的防禦
或是進階一點使用 AWS Shield Advanced
也可以達到第三、四、七層甚至是 DDoS 的防禦
再加上 CloudFront 也可以自訂網域
可以將我們的網址指向 CloudFront 再透過 Cert Manager 綁定的憑證交握
因此普遍在使用 S3 架站的時候
基本上還是會在外層掛一個 CloudFront
建立一個新個 Bucket 並確認 物件擁有權
為 ACL 已停用 (建議)
以及 儲存貯體的「封鎖公開存取」設定
為 封鎖所有公開存取權
如果不想要新建立 Bucket
也可以在原有的 Bucket 中
許可
的分類底下做設定
在屬性
分類中最下方靜態網站託管的區塊點按編輯
停用靜態網站託管
如果沒有購買 SSL 憑證又想要自訂網域的人
可以在 AWS Certificate Manager
請求一張憑證
已經有憑證的人
則可以手動匯入憑證
需注意匯入憑證時
要連中繼憑證一併匯入
根據官方文件所述
CloudFront 的憑證只支援維吉尼亞北部(us-east-1)
因此平常使用區域在哪裡
使用 CloudFront 如果要客製化網域
都需要在 us-east-1 匯入憑證
來源中可以直接選到我們建立的 S3 Bucket
如果選擇完 S3 Bucket 出現下列黃色框框
表示未將網站端點停用
記得先停用網站端點
選擇完 Bucket 後在原始存取
的區塊
選擇 Legacy access identities
並在旁邊選擇建立新的 OAI
下方儲存體政策要勾選 是,更新儲存體政策
以便讓 CloudFront 存取 S3
快取行為區塊
除了快取之外
也可以選擇 HTTP 允許的方法
以及回應的方式
設定中可以選擇 CloudFront 佈署的節點
選擇最佳效能的可以佈署到每個 AWS 的 Region
如果有要自訂網域的使用者也需要在這裡選擇憑證
預設根物件記得填 index.html
等待數分鐘後
再點按 CloudFront 的網址就可以連到頁面
如果無法正常存取
通常是 CloudFront 到 S3 之間的 Policy 有問題
參考資料: