2020ironman 12th – Modern Web – Day05 – Amazon Lightsail 也可以套用 CDN (AWS Cloudfront)

分享

何謂CDN

內容傳遞網路(英語:Content Delivery Network或Content Distribution Network,縮寫:CDN)是指一種透過網際網路互相連接的電腦網路系統,利用最靠近每位使用者的伺服器,更快、更可靠地將音樂、圖片、影片、應用程式及其他檔案傳送給使用者,來提供高效能、可擴展性及低成本的網路內容傳遞給使用者。出自維基百科

為何要用CDN

CDN其實有很多的好處

1. 讓USER離你的端點近一點,速度快點
2. 快取靜態資源,減低伺服器的負載
3. 降低被攻擊的風險,本土的陽春CDN除外,國際廠商的CDN基本上都幫你抵禦L3、L4的攻擊
4. 隱藏主機,很多人的主機還是低分散的狀態,知道的網站就可以猜說你的其他服務是不是在同一台

其實好處還有很多,只要是走http的服務基本上都一定可以套用到CDN上除非特殊需求不然很少沒辦法做到套用的。

AWS CDN (AWS Cloudfront) 使用說明前文

在列表跟事前準備文章的時候其實已經是一段時間之前了

在這段時間中AWS Lightsail 現在已經整合了Cloudfront 與 AWS Certificate Manager

在之前都是透過Cloudfront設定的介面來設定

但是現在來說已經不需要那麼麻煩了

但是由於該文件說真的絕大部分的人需要時間消化且不是那麼直接

該整理就當作Day 30+之後的文章

AWS Lightsail 原生整合的原廠文件如後連結 官方文件

本文提供的設定方式還是以原生cloudfront為主

因為這個方式不論哪個雲哪個地端都可以通用

是相容性比較高的用法還是用這個方式會比較好

AWS CDN (AWS Cloudfront) 使用基礎使用說明

找到Networking & Content Delivery 類別點選類別內的Cloudfront進入設定

AWS CDN (AWS Cloudfront) 初步設定

在一個新帳號點入的時候應該呈現現在這個樣子

點選藍色的Create Distribution就可以開始建立了

這個畫面我不知道明年還會不會存在

因為AWS即將於年底停止RTMP這個在前端早該淘汰的協議了

但是以現在來說應該暫時都不會消失

點選Web 中的 Get Started即可開始設定

因下列的設定非常的繁雜

我以分三段截圖說明

以下只說重點我在這個系列之後還會再做詳解!

1. Origin Settings
2. Default Cache Behavior Settings
3. Distribution Settings

Origin Settings

只需填寫

Origin Domain Name 

這邊的填寫是看你伺服器在哪邊填寫可以解析到哪台伺服器的URL

他可以只是一個導引作用也可以是真正跟你伺服器訪問的URL

取決於Behavior怎樣設定

這個等詳解再說!

Default Cache Behavior Settings

基礎設定可以選擇都不動

但是這樣很容易錯誤我建議修改幾個地方

1. Allowed HTTP Methods 改為 GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
2. Cache Policy 改為 Managed-CachingDisabled
3. Origin Request Policy 改為 Managed-AllViewer

這改法蠻爛的

就是啥都不快取轉發到原站

但是如果Default是我建議這樣設定最不會錯

要快取啥東西在進階中再進行Behavior定義

Distribution Settings

1. Alternate Domain Names (CNAMEs) 一定要注意你要用哪個URL來指到CDN一定要設定上去
2. SSL Certificate 如果沒有https不管他,如果有https請參考Day06

設定之後呢?

點選Create Distribution送出啦

送出之後就是做DNS指向到產出的URL

要注意的是這個URL一定要是Distribution Settings 中 Alternate Domain Names (CNAMEs) 的域名指過來才有效

不用時的刪除方式

要刪除基本上很多人都卡住

為何Delete就是不能點選刪除

這是由於AWS設計的防呆機制

如果要刪除只能刪除已停用的

所以說要刪除前要先點選Disable進行停用且要等他生效

在下圖這個狀況就可以點選來進行刪除囉

這邊如果還是發生不能刪除的狀況請注意上上圖的紫色部分

Cloudfront都是要等Status中顯示Deployed才能進行下一步喔

Read more

雲端架構延遲問題:為什麼AP與DB不能放太遠?

雲端與地端的架構差異認知不足導致的效能陷阱 前言 許多企業在上雲初期,經常基於成本考量或錯誤認知,將應用程式伺服器(AP)與資料庫(DB)部署在不同區域。這種做法在地端環境中影響較小,但在雲端環境中卻會造成嚴重的效能問題。本文透過台北-東京的實際案例,說明距離對雲端架構的致命影響。 核心問題: * 地端思維:同個機房內不同區域延遲可忽略 * 雲端現實:跨區域延遲可達數十毫秒 * 結果:連線建立時間從毫秒級暴增到秒級 1. 地端 vs 雲端的延遲差異 1.1 地端環境的延遲特性 傳統地端機房: 同機房不同機櫃:RTT < 1ms 同城市不同機房:RTT < 5ms 同國家不同城市:RTT < 20ms 地端架構師的經驗: * AP和DB分別放在不同機櫃:幾乎無延遲影響 * 災備機房放在不同城市:RTT約10-15ms,可接受 * 習慣性認為「網路延遲不是問題」

By Albert Yu
常用指令-Docker

常用指令-Docker

這篇整理 Docker 的常用指令與實務心得:從安裝、映像檔與容器的日常操作、資料保存與網路,到 Dockerfile 的寫法、Docker Compose、清理空間、推送到 Registry,以及最常遇到的問題怎麼查。指令以 Docker Engine 28 與 Docker Compose v2 為準(Compose 已經是 docker compose 子指令,不再是舊的 docker-compose)。 這篇不是官方文件的翻譯,而是我自己在家用伺服器、公司專案、CI/CD 流水線裡反覆用到的東西:哪些參數幾乎每次都要加、哪些指令看起來無害其實會刪資料、輸出要怎麼讀、出問題時先查哪裡。文中的 Dockerfile 與 compose 範例,大部分都實際在 Docker 28

By Albert Yu
常用指令-MAC

常用指令-MAC

這篇整理我在 Mac 上最常用的終端機指令:Homebrew 套件管理、系統資訊與更新、網路診斷、檔案與 Finder、磁碟與備份、電源與排程、效能與日誌、SSH 與鑰匙圈、隱私權與安全性,以及一些很實用但不常被提到的 macOS 專屬指令。內容以 Apple 晶片(M 系列)的 Mac、近年的 macOS 版本為準,Intel Mac 大多也適用,差異的地方會特別標註。文中的指令我都在自己的 Mac(Apple 晶片、macOS 27、zsh、Homebrew 7)上確認過指令與參數存在;少數因為需要管理員權限、會改動系統、或本機沒有安裝而無法實際驗證的部分,會在旁邊註明「本機未驗證」。 這篇文章很長,建議把它當成工具書:先看目錄式的章節標題,

By Albert Yu
常用指令-ubuntu

常用指令-ubuntu

這篇是我平常維運 Ubuntu 主機時最常用的指令整理,從系統更新、套件管理、服務管理、磁碟與網路,到憑證、資料庫、效能分析、排程、SSH、安全加固與疑難排解,盡量把「指令本身」和「什麼時候用、輸出怎麼讀、要注意什麼」放在一起。內容以 Ubuntu 24.04 LTS 為準,大部分指令在 22.04 也一樣能用;遇到版本差異的地方會另外註明。 這篇很長,建議當成工具書使用:先看目錄找到需要的章節,或直接跳到文末的「常見情境 SOP」與「速查表」。文中的指令、參數與設定檔範例,都在乾淨的 Ubuntu 24.04 環境裡實際跑過或用工具檢查過語法;少數需要實體硬體或完整 systemd 才能驗證的部分,我會在旁邊說明。

By Albert Yu