提供的关键元素与架构不匹配 - AWS

问题描述 投票:-1回答:1

我在stackoverflow上看到了类似的问题,但答案无法解决我的问题

我在我的API GETWAY中创建了一个GET类型的资源。在我的查询字符串中,我正在传递以下内容:

[email protected]

要么

racf=XXXX&[email protected]

我收到此错误:

提供的关键元素与架构不匹配

但是,如果我使用主键,它可以工作。

racf=XXXX

我在dynamoDB中为email属性创建了一个索引

LAMBDA功能:

case 'GET':
    if (event.queryStringParameters) {
      dynamo.getItem({ 
          TableName: "eventregistration-db",
          Key:{
            //"racf": event.queryStringParameters.racf,
            "email": event.queryStringParameters.email
          }
       },done);
   } else {
     dynamo.scan({ TableName: tableName }, done);  
  }               
 break;
amazon-web-services rest aws-lambda amazon-dynamodb aws-api-gateway
1个回答
2
投票

看起来email不是您的DynamoDb表的Primary Key的一部分。

对于getItem,您必须使用表列,表的主键(分区键和可选的排序键)由组成。

scan不需要任何密钥,因为它在桌面上进行了全面搜索 - 这就是为什么它在这种情况下有效。

email(和racf)设置为表的主键以使其可用。

如果要使用索引,则必须使用query

dynamo.query({
    TableName: tableName,
    IndexName: indexName,
    KeyConditionExpression: "email = :email",
    ExpressionAttributeValues: {
        ":email": event.queryStringParameters.email
    }
}, done);
© www.soinside.com 2019 - 2024. All rights reserved.