觀點 · 資訊分享

Amazon Cognito 支援跨區域複製:主區域登入服務掛了,備援區域的帳號資料已經等著接手

AWS 讓 Cognito 使用者集區可以近即時同步到另一個區域。主區域出狀況時把流量切過去,已登入的人不必重新登入,但備援區域有幾項功能做不到。

發布
2026-06-04
篇幅
約 4 分鐘 · 1,957 字
結構
7 節 + 3 題常見問題
標籤
#AWS#Amazon Cognito#跨區域備援#身分驗證
Amazon Cognito 支援跨區域複製:主區域登入服務掛了,備援區域的帳號資料已經等著接手

一句話看懂:AWS 讓 Cognito 的會員登入系統可以在另一個區域放一份近即時同步的備份,主區域出事時,登入流量可以改道過去。

Cognito 支援跨區域複製資訊圖卡:帳號與設定近即時同步到備援區域,主區域出事時可改道登入

先用白話講:Cognito 跨區域複製是什麼?

想像你開了一間會員制健身房,所有會員名單只放在一間分店的櫃台。那間分店淹水停電,全部會員都進不了門,連其他分店都不知道誰是會員。

如果每間分店都有一份同步更新的會員名單,總店出事時,會員改去另一間分店報上名字就能進場。這就是 Amazon Cognito 多區域複製要做的事。

Cognito 是 AWS 的「登入與會員管理服務」,很多網站和 App 用它處理帳號密碼、Google 或 Facebook 登入、企業 SAML 登入。以前一個使用者集區只住在一個 AWS 區域,那個區域的 Cognito 出狀況,登入就跟著停擺。

發生什麼事

AWS 在 2026 年 6 月 4 日宣布,Cognito 現在支援多區域複製:

  • 把使用者與機器身分的資料(包含登入憑證、使用者集區設定、聯合登入設定)近即時同步到你指定的備援區域
  • 主區域發生中斷時,可以把流量導到備援區域的使用者集區
  • 已登入的使用者不必重新登入,已註冊的人可以用原本的帳密登入
  • 備援區域支援帳號密碼、社群與 SAML / OIDC 聯合登入,以及機器對機器(M2M)授權流程

這是附加功能,使用者集區要在 Essentials 或 Plus 方案才能用。官方公告列出的可用區域,我自己數過共 16 個,包含東京、首爾、新加坡、雪梨、孟買等亞太區域,沒有看到台灣的區域。

備援區域做不到的事

官方開發者指南把限制列得很清楚,上線前一定要看:

項目 備援區域的狀況
新增使用者 不行,註冊與管理員建立都不行
重設密碼、修改個人資料 不行,要等主區域恢復
TOTP 驗證碼 不支援,要等主區域服務時才能驗證
聯合登入 只有之前在主區域登入過的人才能登入
登入失敗鎖定次數 兩邊各算各的,不會同步
副本數量 每個使用者目錄最多一個備援

另外,資料同步是最終一致:主區域剛改的東西,備援區域可能慢一點點才看到。

給開發者的技術細節

開啟前的前置條件:

  • 使用者集區要在 Essentials 或 Plus 方案(Lite 不能開)
  • 先改用多區域的客戶自管 KMS 金鑰,而且所有副本所在的區域都要有這把金鑰
  • 建議把使用者集區的簽發者(issuer)更新成官方建議的設定,讓不同區域的權杖驗證一致

新建的備援使用者集區一開始是 INACTIVE,要先檢查區域設定(電子郵件、簡訊、Lambda 觸發器、WAF 等可以各區域不同),再改成 ACTIVE。API 長這樣:

// CreateUserPoolReplica
{
  "UserPoolId": "us-east-1_EXAMPLE",
  "RegionName": "us-west-2"
}

要做到自動切換,還得在使用者集區網域上設定 Route 53 健康檢查(UpdateUserPoolDomain 的 Routing.Failover,填入備援區域與健康檢查 ID)。健康檢查判定不健康時,Cognito 會改由備援區域提供登入頁面與驗證;恢復健康後再切回主區域。公告沒有寫價格,官方只說另有附加費用,細節要看 Cognito 定價頁。

我的看法

接案時常遇到客戶問「雲端服務掛了怎麼辦」,過去對 Cognito 這類託管登入服務,我們能做的幾乎只有「祈禱」。這次官方把備援做成內建功能,對怕登入中斷的會員制網站是個好消息。

不過我會先問兩件事:第一,客戶真的需要嗎?中小企業的內部系統或小型電商,多數能接受一年停擺一兩次,多付一筆附加費加上維運複雜度不一定划算。第二,備援區域不能註冊、不能重設密碼,這些限制要在前端提前設計好提示畫面,不然切換當下客人會一頭霧水。

如果你的系統已經用 Cognito,建議先在測試環境跑一次完整的切換演練,確認健康檢查與畫面行為,再決定要不要上正式環境。

名詞小辭典

  • 使用者集區(User Pool):Cognito 裡存放帳號、密碼與登入設定的地方,可以想成一份會員名冊。
  • 聯合登入(Federation):讓使用者用 Google、Facebook 或公司的 SAML / OIDC 帳號登入,不必另外註冊。
  • KMS:AWS 的金鑰管理服務,負責保管加密資料用的鑰匙。
  • Route 53 健康檢查:定時檢查服務是否正常的功能,判定異常時可以觸發流量改道。

資料來源

常見問題

Cognito 多區域複製是什麼?
把主區域使用者集區裡的帳號、密碼資料、設定與聯合登入設定,持續同步到另一個區域的備援使用者集區。主區域出問題時,可以把登入流量導到備援那邊。
備援區域發生切換時,使用者感覺得到嗎?
官方說已登入的使用者可以繼續使用應用程式,不必重新驗證,已註冊的人也能用原本的帳密登入。不過備援區域不能註冊新帳號、不能重設密碼,使用 TOTP 驗證碼的人要等主區域恢復才能驗證。
要怎麼開?一定會自動切換嗎?
用主控台、CLI 或 SDK 新增一個副本使用者集區(API 是 CreateUserPoolReplica),再把副本狀態改成 ACTIVE。要自動切換的話,得另外在使用者集區網域上掛一個 Route 53 健康檢查,健康檢查判定不健康時,Cognito 才會改由備援區域回應。
LINE