DynamoDB与Cognito的局限性
问题描述:
我想为我的应用程序使用AWS Cognito & DynamoDB实现公共文件共享系统。基本上,用户可以使用Cognito创建并登录帐户,并使用此帐户上传文件。公共元数据需要经常访问DynamoDB(例如评级,下载次数,上传日期等),并将文件本身存入S3存储桶。DynamoDB与Cognito的局限性
为确保只有共享该文件的Cognito用户才能删除DynamoDB项目并修改某些专用属性,我将Cognito身份标识用作DynamoDB内部项目的主键,并附带策略规则as described in the docs。 Afaik没有其他解决方案。
到目前为止,这显然意味着用户无法向数据库上传超过1个项目,因为DynamoDB项目的主键属性必须是唯一的,这是不可能的,因为我使用的是Cognito身份标识为他们。
我当然可以为每个用户创建一个项目,并存储元数据,他所拥有的地图内的每个文件,但这不会让我按日期,等级等
我要查询的项目我老实说卡住了,并且想不到以任何其他方式构建我的数据库项目来完成此项工作的方法。 DynamoDB甚至可行吗?
答
您可以为每个文件创建一个带唯一标识的范围键,同时将主键保留为允许保留DynamoDB细粒度授权的Cognito ID。
你是否在考虑将主键作为认知ID的同时,为每个图像添加一个范围键作为GUID? – Ashan
@Ashan非常感谢你,这实际上工作。我重新创建了表并在安装时添加了一个排序键。 – domp
没有probs。我已经为他人未来的参考更新了答案。 – Ashan