在 IAM 范围的 DynamoDB 表上进行扫描



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

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

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

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

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

最佳做法是将应用程序设计为使用查询而不是扫描。 扫描费用昂贵,并且根据定义扫描整个表。 根据 Dynamodb 扫描和查询最佳实践文档:

如果可能,应避免对大型表使用 Scan 操作 或使用可删除许多结果的筛选器编制索引

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

IAM 安全部分将完成防止编辑其他用户数据的工作,但对于单个用户,扫描将需要从扫描中删除其他用户文件,并且成本高昂。

相关内容

  • 没有找到相关文章

最新更新