【发布时间】:2018-01-21 20:31:24
【问题描述】:
我正在尝试使用 AWS Cognito 和 DynamoDB 为我的应用程序实施公共文件共享系统。基本上,用户可以使用 Cognito 创建并登录一个帐户,并使用该帐户上传他们的文件。需要经常访问的公共元数据(例如评分、下载次数、上传日期等)会进入 DynamoDB,文件本身会进入 S3 存储桶。
为确保仅允许共享文件的 Cognito 用户删除 DynamoDB 项目并修改某些私有属性,我使用 Cognito 身份 ID 作为我在 DynamoDB 中的项目的主键,并结合了策略规则as described in the docs。 Afaik 没有其他解决方案。
到目前为止一切都很好,但这显然意味着用户不能将超过 1 个项目上传到数据库,因为 DynamoDB 项目的主键属性需要是唯一的,这是不可能的,因为我使用 Cognito 身份 ID他们。
我当然可以为每个用户创建一个项目,并将他拥有的每个文件的元数据存储在地图中,但这不允许我按日期、评级等查询项目。
老实说,我被困住了,想不出任何其他方式来构建我的数据库项目以使其工作。这对 DynamoDB 是否可行?
【问题讨论】:
-
您是否考虑过为每个图像添加一个范围键作为 guid,同时将主键保留为 cognito id?
-
@Ashan 非常感谢,这确实有效。我重新创建了表格并在设置时添加了一个排序键。
-
没有问题。我已经更新了答案以供其他人将来参考。
标签: amazon-web-services amazon-dynamodb amazon-cognito