Amazon dynamodb KeySchema无效:第二个KeySchemaElement不是范围键类型

Amazon dynamodb KeySchema无效:第二个KeySchemaElement不是范围键类型,amazon-dynamodb,amazon-cloudformation,Amazon Dynamodb,Amazon Cloudformation,在我的Cloudformation脚本中,我正在创建一个带有两个键的Dynamo DB表(数据集)——让我们称它们为CatalogId和DatasetId。它们都是我无法控制的URI,但可以说它们一起构成了一个唯一的ID 我在主键模式/索引中创建了这两个散列键。当我这样做时,CF给了我以下错误: Invalid KeySchema: The second KeySchemaElement is not a RANGE key type 我做错了什么?答案是只有一个键可以是主索引中的哈希键。第二

在我的Cloudformation脚本中,我正在创建一个带有两个键的Dynamo DB表(数据集)——让我们称它们为CatalogId和DatasetId。它们都是我无法控制的URI,但可以说它们一起构成了一个唯一的ID

我在主键模式/索引中创建了这两个散列键。当我这样做时,CF给了我以下错误:

Invalid KeySchema: The second KeySchemaElement is not a RANGE key type

我做错了什么?

答案是只有一个键可以是主索引中的哈希键。第二个键必须是RANGE类型,即使您从未计划将其与您提到的>或进行比较,DynamoDB也没有该选项。它期望客户端连接为字符串,并将该值存储在一个字段中(即,在上述情况下为哈希键)

如果仍然需要将这些属性作为单独的字段,则可以将其单独存储为非关键属性

问:复合属性索引可能吗

不可以。但是您可以将属性连接到字符串中,并将其用作键

示例:-

  • 名和姓作为复合键
  • 连接名字和姓氏,并将其存储为哈希键
  • 将名字另存为非键属性
  • 将姓氏另存为非关键属性
  • 我知道这有点多余。这只是一个让事情变得清晰的变通方法