Day 14 的 ELB 建好後,AWS 會給它一個自動產生的名稱,例如 my-alb-1234567890.us-east-1.elb.amazonaws.com。這個名稱連得上,但太長、沒有意義,不適合給使用者輸入。ELB 背後的 IP 也會隨擴展和維護改變,無法把固定 IP 寫進網域設定。
使用者輸入的是 www.example.com,中間需要一個服務把這個名稱對應到 ELB,這個服務是 DNS。瀏覽器連線前先向 DNS 查詢「www.example.com 在哪裡」,拿到答案後直接連到目標。AWS 的 DNS 服務是 Route 53。
DNS 只回答這一次查詢,之後的請求和回應都不經過它。因此 Route 53 的「路由策略」不是在轉送流量,而是同一個名稱有多個候選答案時,決定回哪一個。
名稱對應完成後,還有連線速度的問題:源站在美東,台灣使用者的每次請求都要跨太平洋。這部分由 CloudFront 和 Global Accelerator 處理,放在後半段。
後面五段依照一次連線的順序排列:

每一段處理的,都是上一段解決之後接著出現的問題。
一個網域的所有 DNS 記錄放在 Route 53 的 hosted zone 裡,一個網域對應一個 hosted zone。最基本的記錄是 A 記錄:把名稱對應到一個 IP。
ELB 的 IP 會變,無法用 A 記錄寫死 IP。需要的是「名稱對應到另一個名稱」:把 www.example.com 指向 ELB 自動產生的那串名稱。有兩種記錄做得到:
| CNAME | Alias | |
|---|---|---|
| 來源 | DNS 標準的記錄類型 | Route 53 自己的擴充功能 |
能不能用在根網域(example.com) |
不能 | 可以 |
| 能指向什麼 | 任何主機名稱 | AWS 資源(ELB、CloudFront、S3 靜態網站、API Gateway…),或同一個 hosted zone 的其他記錄 |
| 查詢費用 | 收費 | 指向 AWS 資源時免費 |
| TTL | 自己設 | 跟著目標資源,不能設 |
根網域是指沒有 www 這類前綴的 example.com 本身。DNS 規定 CNAME 不能和其他記錄共用同一個名稱,而根網域一定有 NS、SOA 這兩筆管理網域本身的記錄,所以根網域放不了 CNAME。Alias 不受這個限制:Route 53 收到查詢時,直接查出目標資源當下的 IP,以 A 記錄的形式回答。
指向 AWS 資源時用 Alias;根網域指向 ELB,只能用 Alias。
網站只有一個 ELB 時,一筆 Alias 記錄就夠了。之後目標會變多:新版本放在另一個 ELB、在歐洲開第二個 Region、準備一個備援站。同一個名稱底下有多筆記錄時,路由策略決定這次查詢回哪一筆。
八種策略依「挑選的依據」分成四組:
| 依據 | 策略 | 典型需求 | 運作方式 |
|---|---|---|---|
| 不挑 | Simple | 只有一個目標 | 直接回;填了多個值會全部回給客戶端,由客戶端自己選,不能掛 health check |
| 不挑 | Multi-value | 回多個健康的 IP,由客戶端自己選 | 最多回 8 筆,每筆可掛 health check;不能取代 Load Balancer |
| 比例 | Weighted | 新版本先放 10% 流量測試 | 每筆記錄設權重,依比例回;權重設 0 等於暫時下線 |
| 使用者的位置 | Latency | 全球使用者連到最快的 Region | 依 AWS 量測的網路延遲,回延遲最低的 Region |
| 使用者的位置 | Geolocation | 歐洲使用者一律使用歐洲的服務(法規、語言) | 依使用者所在的洲/國家/州回對應記錄;需要一筆 default 記錄接住沒有對應到的地區 |
| 使用者的位置 | Geoproximity | 擴大或縮小某個 Region 服務的範圍 | 依使用者與資源的地理距離,用 bias 調整範圍;需透過 Traffic Flow 設定 |
| 使用者的位置 | IP-based | 依客戶端的 IP 網段決定 | 自訂 CIDR 對應表,例如某家 ISP 的使用者走特定端點 |
| 目標是否健康 | Failover | 主站掛了自動切到備援站 | primary+secondary,primary 的 health check 失敗時改回 secondary |
依使用者位置的四種裡,Latency 和 Geolocation 最容易混淆:Latency 看哪裡快,Geolocation 看人在哪。 歐洲使用者連美國可能比較快,Latency 會回美國;法規要求歐洲的資料留在歐洲時,用的是 Geolocation。
Weighted 的記錄範例:
www.example.com A Weight 90 → ALB-v1(舊版)
www.example.com A Weight 10 → ALB-v2(新版)
→ 十次查詢大約九次回舊版、一次回新版;新版穩定後再把權重調過去
策略之間可以組合。第 ① 段提到 Alias 能指向同一個 hosted zone 的其他記錄,所以一筆 Geolocation 記錄可以再指向一組 Latency 記錄,組成兩層規則。
表格最後一列的 Failover,以及 Multi-value,都需要知道目標是否還活著,這是下一段的 health check。
Route 53 只負責回答,本身不知道目標有沒有壞。Failover 和 Multi-value 靠 health check 取得這個資訊:Route 53 從全球十幾個地點定期連線到目標,超過 18% 的地點回報正常就判定為健康。從多個地點檢查,是為了避免單一地點的網路問題造成誤判。
health checker 位在網際網路上,所以依目標能不能從網際網路連到,分成三種:
| 類型 | 用途 |
|---|---|
| 直接連線到 endpoint | 目標可以從網際網路連到(ELB、有 public IP 的 EC2) |
| 監控 CloudWatch alarm | 目標只有 private IP(VPC 內的機器),health checker 連不到,改看反映目標狀態的 alarm |
| 組合其他 health check(calculated) | 例如「三個 endpoint 至少兩個健康才算健康」 |
Failover 記錄
www.example.com A Failover PRIMARY → ALB(us-east-1) health check: hc-1
www.example.com A Failover SECONDARY → S3 靜態維護頁
→ hc-1 失敗,Route 53 開始回 SECONDARY;恢復後自動切回
health check 失敗後,Route 53 立刻改回 secondary,但使用者不一定馬上連到 secondary。DNS 的答案會被客戶端和中間的 DNS 伺服器快取,快取時間由記錄的 TTL 決定;TTL 到期前,客戶端會繼續拿舊答案連到已經壞掉的主站。
計畫性的切換(例如搬移網站)會事先把 TTL 調短(例如 60 秒),切換完再調回去。即使如此,部分客戶端仍會快取得比 TTL 更久。這個限制在第 ⑤ 段會再出現。
①~③ 決定了使用者連到哪個 ELB,但距離沒有改變:開頭提到的美東源站,台灣使用者的每次請求仍然要跨太平洋。
CloudFront 在全球幾百個邊緣節點(edge location)快取內容。使用者連到最近的節點,節點有快取就直接回應,沒有才回源站(origin)取得。搭配 Route 53 時,網域用 Alias 指向 CloudFront,CloudFront 再把 ELB 設為源站,也就是總覽圖中 ④ 的位置。

| 設定 | 用途 |
|---|---|
| 源站 | S3(靜態檔案)、ELB 或 EC2(動態內容),或任何 HTTP 伺服器 |
| Origin Access Control(OAC) | 源站是 S3 時使用:CloudFront 以自己的身分讀取 bucket,bucket policy 只允許這個 distribution,bucket 本身不對外開放 |
| Geo restriction | 以允許清單或封鎖清單限制國家,用於內容授權有地區限制的情況 |
| Cache invalidation | 檔案更新後讓快取立刻失效。可以指定路徑,但每月超過一千個路徑要收費;另一種做法是檔名加版本號,讓更新後的檔案成為新物件 |
快取對靜態內容效果最好。動態內容也能經過 CloudFront,但每次內容不同、快取命中率低,主要的好處是邊緣節點到源站這段改走 AWS 骨幹網路。
CloudFront 的前提是 HTTP/HTTPS 內容。下一段處理這個前提以外的情況。
CloudFront 處理不了兩種情況:
Global Accelerator 提供兩個固定的 anycast IP,全球的邊緣節點都用這兩個 IP 對外。使用者連到最近的邊緣節點後,流量走 AWS 骨幹網路到後端的 ELB;它不快取內容,支援任何 TCP/UDP。後端某個 Region 失效時,Global Accelerator 在數秒內把流量改送到其他 Region,使用者連的 IP 不變,所以不受 DNS 快取影響。固定 IP 也方便企業客戶加入防火牆白名單。
| CloudFront | Global Accelerator | |
|---|---|---|
| 加速方式 | 在邊緣節點快取內容 | 固定 anycast IP+AWS 骨幹網路,不快取 |
| 協定 | HTTP/HTTPS | 任何 TCP/UDP |
| 適合 | 靜態內容、影片、網站 | 遊戲、IoT、VoIP;需要固定 IP 加白名單 |
| 故障切換 | 可設主備源站(origin group),限 HTTP;使用者端仍依 DNS | 秒級,不受 DNS TTL 影響 |
內容可以快取 → CloudFront;不是 HTTP、需要固定 IP、需要秒級切換 → Global Accelerator。
| 主題 | 說明 |
|---|---|
| Hosted zone 的兩種類型 | public 供網際網路查詢;private 綁定 VPC,只有 VPC 內查得到,用於內部服務的內部網域名稱 |
| 網域在其他註冊商購買 | 可以只把 DNS 交給 Route 53 管理:在註冊商把 NS 記錄改成 Route 53 提供的四台 name server |
| Route 53 Resolver | VPC 內部的 DNS。地端和 AWS 互相要解析對方的內部網域,要設 inbound/outbound endpoint(Day 21) |
| 段落 | 解決的問題 | 重點 |
|---|---|---|
| ① Alias | 網域指向 AWS 資源 | 可放根網域,指向 AWS 資源的查詢免費 |
| ② 路由策略 | 一個名稱有多個目標 | Weighted 依比例、Latency 看哪裡快、Geolocation 看人在哪、Failover 主備 |
| ③ Health check | 不回答壞掉的目標 | private 目標改看 CloudWatch alarm;切換受 DNS TTL 影響 |
| ④ CloudFront | 距離造成的延遲 | 邊緣快取,HTTP 內容 |
| ⑤ Global Accelerator | 非 HTTP、固定 IP、秒級切換 | anycast IP+AWS 骨幹網路,不快取 |
摘要:Route 53 決定回答哪個位址——Alias 指向 AWS 資源,路由策略在多個目標間挑選,health check 排除壞掉的目標。答案回給使用者後,CloudFront 用快取縮短距離,Global Accelerator 處理非 HTTP 流量和不受 DNS 快取影響的切換。
某跨國電商在 eu-central-1、us-east-1、ap-northeast-1 各部署一套網站,各自有一個 ALB,對外網域是
shop.example.com。法遵部門要求:歐洲使用者的請求一律由 eu-central-1 處理,不論哪個 Region 比較快;其他地區的使用者則要連到延遲最低的 Region。一位解決方案架構師需要用 Amazon Route 53 設定這個網域的 DNS 記錄。
哪一個設定方式符合需求?
某公司的內部人事系統只在 VPC 內使用,以 private hosted zone 的
hr.corp.internal解析到 us-east-1 的主要 EC2,這台機器只有 private IP。另一台位於 us-west-2 的備援 EC2 已持續同步資料。公司要求主要機器的應用程式無法回應時,DNS 要自動改為回應備援機器的 IP,兩台機器都不能暴露在網際網路上,並希望維運負擔最低。
解決方案架構師應該怎麼做?
某新創公司把網域
example.com的 DNS 從其他業者搬到 Route 53。網站架在一個 ALB 後方,使用者有時直接輸入example.com,有時輸入www.example.com,每個月的 DNS 查詢量約數億次。在原本的業者那邊,www.example.com是用 CNAME 指向 ALB 的 DNS 名稱。公司要求兩個網址都要能正常連到網站,並希望 DNS 相關的費用最低(MOST cost-effective)。
哪一個設定方式最符合需求?
example.com 與 www.example.com 都建立指向 ALB 的 alias A 記錄example.com 與 www.example.com 都建立 CNAME 記錄,值設為 ALB 的 DNS 名稱example.com 建立指向 ALB 的 alias 記錄,www.example.com 以 CNAME 指向 example.com
某線上課程平台把影片存在 Amazon S3,透過 CloudFront 提供給使用者觀看。授權合約規定影片只能提供給台灣與日本的使用者;資安團隊也要求 S3 bucket 不能被任何人直接存取,只能透過 CloudFront 取得內容。公司希望以維運負擔最低(LEAST operational overhead)的方式滿足這兩項要求。
解決方案架構師應該採取哪兩項做法?(選擇兩項)
aws:SourceIp 條件,只允許台灣與日本各家 ISP 的 IP 網段讀取影片物件某遊戲公司的多人連線伺服器使用 UDP,部署在 us-west-2 與 eu-west-1 兩個 Region 的 NLB 後方,玩家遍布全球。公司要求:玩家連線要從最近的進入點盡快進入 AWS 骨幹網路;某個 Region 失效時,要在數秒內自動改連另一個 Region,不能受玩家端的 DNS 快取影響;企業客戶也需要固定 IP 加入防火牆白名單。公司希望以維運負擔最低的方式設計。
哪一個方案最符合需求?
這是兩層規則:第一層用 geolocation 保證「人在歐洲就去 eu-central-1」,這是法遵要求,不能被延遲蓋過;其他地區都落到 geolocation 的預設位置(Default),而預設位置的記錄再用 alias 指向同一個 hosted zone 裡另一組只含美、日 ALB 的 latency 記錄,由第二層挑延遲最低的。Route 53 允許 alias 指向同一個 hosted zone 的其他記錄,就是為了組出這種巢狀的規則。
A 是這篇強調過的混淆:latency 看的是「哪裡快」,歐洲使用者如果連美國比較快,就會被送去美國,違反法遵。B 的 geoproximity 是依距離劃範圍,bias 只能把範圍拉大或縮小,沒辦法保證「歐洲的使用者一個不漏、歐洲以外一個不收」。C 的方向對了一半,但 weighted 是依比例分配,不是依延遲挑選,其他地區的使用者不一定會連到最快的 Region。
Route 53 的 health checker 在網際網路上,打不到 VPC 裡的 private IP。這種情況要反過來做:先用 CloudWatch 指標建立一個反映應用程式狀態的 alarm,再建立「監控這個 alarm 狀態」的 health check,把它掛到 failover 記錄的 primary 上。alarm 進入 ALARM 狀態,health check 就判定失敗,Route 53 開始回應備援機器的 IP;兩台機器都不用對外開放。
A 是誤解:health check 不能直接檢查 private IP,這筆 health check 根本打不到機器。C 技術上能讓 health checker 打到機器,但主要機器等於暴露在網際網路上,違反要求。D 的 multivalue answer 沒有掛 health check,兩台的 IP 都會一直被回應,主要機器掛了,客戶端還是有一半的機會拿到它的 IP;調低 TTL 只影響快取時間,不會讓壞掉的那筆消失。
alias 記錄可以放在根網域(example.com),也可以指向 ALB;而且 alias 指向 AWS 資源的查詢不收費,每月數億次的查詢都不用付查詢費用。兩個名稱都用 alias 指向 ALB,就能正常運作,費用也最低。
B 是誤解:CNAME 不能放在根網域,example.com 那筆根本建不起來。C 也是誤解:ALB 的 IP 會隨擴展和維護改變,寫死 IP 遲早會連到錯的地方。D 技術上可以運作,也是最容易被選的干擾項:example.com 那筆沒有問題,但 www.example.com 用的是 CNAME,而 CNAME 的查詢要收費,查詢量大的時候費用就會比 A 高。
CloudFront 的 geo restriction 依使用者的所在國家決定要不要回應,設定允許清單只放行 TW 與 JP,其他國家的使用者會直接收到 403,這是 CloudFront 內建的功能,不用額外維護。Origin Access Control 則讓 CloudFront 用自己的身分讀取 S3,bucket policy 只允許這個 distribution,任何人直接存取 bucket 都會被拒絕。兩項各自滿足一個要求,合起來才完整。
B 是誤解:DNS 只是回答「名字對應到哪」,其他國家的使用者只要換一台 DNS 伺服器,或直接連 CloudFront 的網域名稱,就能繞過這個限制。D 會讓台灣和日本的使用者可以直接存取 bucket,違反「只能透過 CloudFront」;而且各家 ISP 的 IP 網段一直在變,維護這份清單的負擔很重。E 的 Transfer Acceleration 是加速上傳和下載到 S3 的功能,跟地區授權無關,也沒有限制「只能透過 CloudFront」讀取。
Global Accelerator 提供兩個固定的 anycast IP,玩家連到最近的邊緣節點後,就走 AWS 骨幹網路到後端;它支援 UDP,會持續檢查每個 endpoint group 的健康狀態,某個 Region 失效時在數秒內把流量改送到另一個 Region。IP 本身不變,所以不受 DNS 快取影響,企業客戶也能把這兩個 IP 加進白名單。
A 是誤解:CloudFront 只處理 HTTP/HTTPS,不能轉送 UDP 的遊戲流量。C 依賴 DNS,即使 TTL 設得很短,很多客戶端和中間的解析器仍會快取更久,做不到保證數秒內切換,也沒有固定 IP 可以給客戶加白名單。D 要把 IP 寫死在客戶端、自己寫切換邏輯,IP 一改就得更新所有玩家的客戶端;企業客戶要加進白名單的 IP 也變成四個,而且玩家不會經過 AWS 骨幹網路加速。