我们计划将DynamoDB用作在AWS中运行的不同应用程序的noSQL数据库,并计划使用AWS Identity and Access Management(IAM)连接到DynamoDB。
通常,您拥有一个AWS账户,您可以为每个应用创建新用户,并且可以授予他们访问DynamoDB中各自表的权限,以确保他们无法访问/修改其他应用数据。
我的问题是,应用程序可以在DynamoDB中使用相同的名称表吗?例如LOG,所以每个应用程序在DynamoDB中都有自己的LOG表,但数据是不是共享的? (我们可以在基于SQL的数据库中通过定义每个应用程序的模式并创建需要访问它的模式的用户来实现这一点)
注意:我们不打算使用不同的DynamoDB区域,并且想知道是否可以使用一个区域?
答案 0 :(得分:15)
DynamoDB不像常见的SQL RDBMS那样提供Database
和Schema
等命名空间级别,例如: PostgreSQL,Oracle。
[hostname > ] database > schema > table
使用DynamoDB更像是
[aws-region > aws-account-id > ] table
因此,您有两种分离访问DynamoDB的应用程序的选择:
1)只需使用表名前缀来分隔表 特定应用程序使用IAM来确保'App A'只能访问 它需要访问的表格。
或强>
2)使用分离的AWS账户。
注意:通常,您不应在应用程序中对DynamoDB表名进行硬编码。使用逻辑表名称到实际表名称的一些映射。例如一些变量tableName_LOG = 'AppA_LOG'
。