可以在 AWS 之外使用 DynamoDB 吗?
可以。DynamoDB 通过 HTTPS 在任何地方都可访问——你的代码不必跑在 AWS 上。任何持有 AWS 凭证的应用都能通过 SDK 或签名请求调用区域 endpoint,不管它跑在你的笔记本、本地服务器还是另一朵云上。只有数据库本身住在 AWS 里。
访问是怎么工作的
DynamoDB 是一个 API,不是一个由你托管的套接字:客户端向一个区域性 HTTPS endpoint 发送用 AWS 凭证签名、并经 IAM 授权的请求。AWS 的各语言 SDK(JavaScript、Python、Java、Go 等)、CLI 和控制台用的都是这同一个公开 API——它们谁都不在乎自己跑在哪里。
用 curl 就能看到这一点,连 AWS 账户都不用有。向某个区域的 endpoint 发一个空的 ListTables 请求体,它会回答:
{
"__type": "com.amazon.coral.service#MissingAuthenticationTokenException",
"message": "Request is missing Authentication Token"
}一个被拒绝的请求,但也是服务从一台不在 AWS 上的笔记本那里接受、解析并回复了的请求。加上 SigV4 签名,同样的调用就会成功。
网络会让你付出什么
endpoint 在任何地方都可达;延迟却不是在任何地方都一样。我们于 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 建立上。长驻进程只付一次。而短命的进程——一个定时任务、一段 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,离线且免费。等你准备好了,换个 endpoint,同样的代码就指向 Web 服务了。
深入了解
桌面客户端就是这件事每天的证明:DynoTable 跑在你的 Mac 或 PC 上——完全在 AWS 之外——并且既能连 AWS 区域,也能连本地 endpoint。用表达式构建器构建它所发送的查询。
参考资料
- 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 从西班牙的一条家用宽带测量,每个区域在一条复用连接上发十次请求。你的数字会不一样;重点在于区域之间的差距。