Python中的KeyConditions和KeyConditionExpression失败

时间:2019-03-16 16:23:57

标签: python aws-lambda aws-api-gateway

我正在尝试修改lambda-microservice示例,以从aws-api-gateway向dynamodb提交GET查询。我已经得到了可以运行的示例,但是它执行的是表扫描,而不是查询。

查询尝试使用以下消息设置KeyConditionExpression失败: “由于客户功能错误,Lambda执行失败,状态为200:未定义名称'Key'。”

相关的python在这里:

List<Entry> list = new ArrayList(entries); 

此查询表单与此帖子中使用的表单相同:

     operations = {
         'GET': lambda dynamo, x: dynamo.query(**x),
     }

    dynamodb = boto3.resource('dynamodb')

    params = {
    'KeyConditionExpression': Key('flight').eq("2002")     
    }

table = dynamodb.Table('Test')
response = table.query(params)

我在上面遇到了同样的错误。

或者,尝试设置KeyConditions时出现另一种错误: “由于客户函数错误,Lambda执行失败,状态为200:调用Query操作时发生错误(ValidationException):必须在请求中指定KeyConditions或KeyConditionExpression参数。。

相关的python在这里:

[Working query][1] 

我的表(测试)具有一个GSI索引,即flight-index,其中将flight作为分区键,而各项(所有类型的字符串)就是这些:

Test table items

另一篇文章说:“ nodejs SDK不支持KeyConditionExpression。”我使用Python 3.7是否有任何类似的问题?

我也不在本地运行DynamoDB。 (我正在抓住稻草来寻找线索。)

就整个测试案例而言,它很简单,我肯定会错过一些非常简单的东西,但是我已经苦苦挣扎了几天,并且阅读了数十篇文章来找到它。

有人可以通过这两种方式指定查询目标吗?

1 个答案:

答案 0 :(得分:0)

有两个不同的问题使我的问题复杂化。我猜没有人回答,因为没有明显的解决方法。

我必须要做的:

希望这可以帮助其他人尝试执行简单的DynamoDB查询。