【问题标题】:KeyConditions and KeyConditionExpression fail in PythonPython 中的 KeyConditions 和 KeyConditionExpression 失败
【发布时间】:2019-03-20 04:50:54
【问题描述】:

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

查询尝试设置 KeyConditionExpression 失败,并显示以下消息: “由于客户函数错误,Lambda 执行失败,状态为 200:未定义名称‘键’。”

相关的python在这里:

     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)

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

[Working query][1] 

我得到了同样的错误。

另外,当我尝试设置 KeyConditions 时,我得到一个不同的错误: “由于客户函数错误,Lambda 执行失败,状态为 200:调用查询操作时发生错误(ValidationException):必须在请求中指定 KeyConditions 或 KeyConditionExpression 参数。”

相关的python在这里:

    params = {
    'TableName': 'Test',
    'KeyConditions': {
        "flight": {
            'ComparisonOperator': "EQ",
            'AttributeValueList': [{'S': '2002'}]
        }
    }
}

我的表(Test)有一个 GSI 索引,flight-index,以 flight 作为分区键,项目(所有类型的字符串)就是这些:

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

我也没有在本地运行 DynamoDB。 (我正在寻找线索。)

尽管整个测试用例很简单,但我一定遗漏了一些非常简单的东西,但我已经挣扎了几天,阅读了几十篇文章来找到它。

有人可以帮助使用这些指定查询目标的方法吗?

【问题讨论】:

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


    【解决方案1】:

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

    我必须做的:

    希望这可以帮助其他人尝试做一个简单的 DynamoDB 查询。

    【讨论】:

    • Import Key 是这里的赢家——我也为此苦苦挣扎。
    猜你喜欢
    • 2021-11-03
    • 1970-01-01
    • 2015-10-20
    • 2023-01-16
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    相关资源
    最近更新 更多