我正在尝试使用AWS Cognito& amp;为我的应用程序实现公共文件共享系统。 DynamoDB。用户基本上可以使用Cognito创建并登录帐户,并使用此帐户上传文件。需要经常访问的公共元数据会发送到DynamoDB(例如评级,下载次数,上传日期等),文件本身也会发送到S3存储桶。
为了确保只允许共享该文件的Cognito用户删除DynamoDB项并修改某些私有属性,我使用Cognito身份标识作为DynamoDB中项目的主键,并附带策略规则as described in the docs。 Afaik没有其他解决方案。
到目前为止一切顺利,但这显然意味着用户无法将超过1个项目上传到数据库,因为DynamoDB项目的主键属性需要是唯一的,这是不可能的,因为我使用的是Cognito身份标识它们。
我当然可以为每个用户创建一个项目,并为他在地图中拥有的每个文件存储元数据,但这不允许我按日期,等级等查询项目。
我老老实实地陷入困境,无法想出以任何其他方式构建我的数据库项目以使其工作的方法。这对DynamoDB来说是否可行?
答案 0 :(得分:1)
您可以为每个文件创建一个具有唯一ID的范围键,同时将主键保持为Cognito id,以允许保留DynamoDB细粒度授权。