anonymous read with amazon simpledb
我想使用 javascript 直接从客户端查询 simpledb。我的应用程序读取量很大,我宁愿不通过我的应用程序服务器路由请求。是否可以在没有身份验证的情况下执行选择请求?
我可以设置一个身份验证服务器,但这很不雅,因为它只会对每个读取请求说"是",并且会引入另一个瓶颈/减速/故障点。
其他云数据库解决方案(微软、谷歌)有这个功能吗?
这可以使用 AWS IAM(身份和访问管理)和服务器端"令牌自动售货机"。 AWS 文档有一篇专门为使用令牌自动售货机验证 AWS 移动应用程序用户的用例和 GitHub 中的服务器、iOS 和 Android 示例代码编写的文章。通用技术可用于非移动和/或 JavaScript 客户端。
注意:仍然需要一个服务器组件来出售临时访问令牌。但是,这些请求的数量可以显着减少(最多每 36 小时一次)。剩下的请求是从不受信任的客户端直接到 SimpleDB 的,没有中介。
一般技术
- 令牌是使用只读访问策略创建的(下面的示例)
- 令牌持续时间最长为 36 小时,默认为 12 小时(api 文档)
只读访问策略
来自 AWS 示例代码"只读访问策略"
1 2 3 4 5 6 7 8 9 | { "Statement": [ { "Action": ["sdb:GetAttributes","sdb:List*","sdb:Select*"], "Effect":"Allow", "Resource":"*" } ] } |
这超出了 SimpleDB。您可以为其他几个 AWS 资源设置访问策略(请参阅完整访问策略示例)。
用静态资源替换动态客户端-服务器调用的变体
虽然您无法消除服务器组件,但客户端不一定要直接与自动售货机对话:
-
根据
fudge 设置适当的 maxAge 缓存控制标头
您需要使用您的服务器签署所有请求。我想这就是你的意思。您仍然可以节省一些带宽。
我想说,只要 JavaScript 客户端可以验证自己,每个人都可以。
需要身份验证服务器,您可以使用 EC2。