扫描IAM范围的DynamoDB表

时间:2018-05-28 10:33:39

标签: amazon-web-services amazon-dynamodb amazon-cognito amazon-iam

我有一个表允许用户(通过Cognito进行身份验证)阅读&只编写自己的记录,由IAM策略启用,如下所示:

"Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": [
                        "${cognito-identity.amazonaws.com:sub}"
                    ]
                 }
             }

我正在设计我的数据结构,需要知道DynamoDB如何在扫描操作的上下文中应用此范围。

执行扫描时,DynamoDB会先将用户范围应用于表(因此扫描的唯一文档将是用户的文档),还是扫描会占用整个表格,然后将策略应用于范围记录?

这个问题的含义是扫描效率如何 - 如果要扫描整个表格,那么操作将非常昂贵,但是如果只有用户自己的记录(表格的一小部分)正在扫描,然后扫描可能是可接受的效率。

1 个答案:

答案 0 :(得分:0)

设计应用程序以使用Query而不是Scans的最佳做法。扫描很昂贵,按照定义扫描整个表格。根据{{​​3}}:

  

如果可能,应避免在大型表上使用扫描操作   或使用过滤器删除许多结果的索引

您提出的正是这种情况。请考虑重新设计以避免这种情况。

IAM安全部门将负责阻止编辑其他用户数据,但对于单个用户,扫描将需要从扫描中删除其他用户文件,并且费用昂贵。