可以在 AWS 之外使用 DynamoDB 嗎?
可以。DynamoDB 透過 HTTPS 從任何地方都連得到 — 你的程式碼不必跑在 AWS 上。任何持有 AWS 憑證的應用程式,都能透過 SDK 或已簽署的請求呼叫區域端點,不管它跑在你的筆電、地端伺服器,還是另一個雲端。只有資料庫住在 AWS 裡。
存取是怎麼運作的
DynamoDB 是一個 API,不是一個由你託管的通訊端:用戶端向一個區域 HTTPS 端點送出以 AWS 憑證簽署、並由 IAM 授權的請求。AWS 的各種 SDK(JavaScript、Python、Java、Go 等)、CLI 與主控台用的都是同一個公開 API — 它們都不在意自己跑在哪裡。
用 curl、完全不需要 AWS 帳戶,你就能看到這件事。對某個區域的端點送出一個空的 ListTables 內容,它會回答:
{
"__type": "com.amazon.coral.service#MissingAuthenticationTokenException",
"message": "Request is missing Authentication Token"
}這是一個被拒絕的請求,但也是一個服務確實接受、解析並回覆的請求,而發出它的是一台不在 AWS 上的筆電。加上 SigV4 簽章,同一個呼叫就會成功。
網路會讓你付出什麼
端點從任何地方都連得到;但延遲從任何地方都不一樣。我們在 2026-07-28 從西班牙的一條家用連線量測:每個區域透過一條重複使用的 HTTPS 連線送出十次未簽署的 ListTables,讀取 curl 的 time_starttransfer。
| 區域 | 第一次請求(TCP + TLS) | 暖連線中位數 |
|---|---|---|
eu-central-1(法蘭克福) | 232 ms | 50 ms |
eu-west-1(愛爾蘭) | 204 ms | 59 ms |
us-east-1(北維吉尼亞) | 456 ms | 118 ms |
us-west-2(奧勒岡) | 577 ms | 182 ms |
sa-east-1(聖保羅) | 743 ms | 247 ms |
ap-northeast-1(東京) | 905 ms | 263 ms |
一台機器、一天、一條路由,所以請看比例,而不是絕對的毫秒數。
DynamoDB 在伺服器端以個位數毫秒回應。從西班牙到東京,網路在上面再加了大約 250 ms,那是資料庫本身工作量的 25 到 50 倍。一個在區域內感覺瞬間完成的讀取迴圈,到了區域外就會變成你程式裡最慢的東西。
第一次請求的成本是暖連線的三到四倍,而那全部都是 TCP 與 TLS 的建立。長時間執行的行程只付一次。短命的行程 — 一個 cron 工作、一段 CLI 腳本、一個每次叫用都建立新用戶端的函式 — 則每次都要付。請重複使用用戶端。
在 AWS 之外還有什麼會變
- 資料傳輸 — 離開 AWS 的流量要收資料傳輸費,而免費額度是共用的,不是各服務各自計算:「AWS customers receive 100 GB of free data transfer out to the internet free each month, aggregated across all AWS Services and Regions (except China and GovCloud).」
- 憑證 — AWS 之外的程式碼無法使用執行個體角色,所以你得明確管理存取金鑰或聯合憑證。
完全不用 AWS 也能開發
開發階段你甚至不需要 AWS 帳戶:DynamoDB Local 會在你自己的機器上執行這套 API,離線且免費。等你準備好,換掉端點,同一份程式碼就會指向網路服務。
深入了解
桌面用戶端就是這件事每天的證明:DynoTable 跑在你的 Mac 或 PC 上 — 完全在 AWS 之外 — 並同時連接 AWS 區域與本機端點。用運算式建構器建構它送出的那些查詢。
參考資料
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- Accessing DynamoDB — Amazon DynamoDB Developer Guide
- Setting up DynamoDB local (downloadable version) — Amazon DynamoDB Developer Guide
- Amazon DynamoDB on-demand pricing
最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。
延遲於 2026-07-28 從西班牙的一條家用連線量測,每個區域透過一條重複使用的連線送出十次請求。你的數字會不一樣;重點在於各區域之間的差距。