无法使用索引从 DynamoDB table 检索结果

Not able to retrieve results from DynamoDB table using index

我正在使用一个 lambda 函数 (ptython),它接收一个事件并将其与 dynamodb 下的一个值进行比较 table。

Dynamo DB screenshot Indexes

lambda 是正确的,但我无法从数据库中检索任何值,但该值在那里。它说:

{ “原因”:“未找到记录”, “成功”:“假” }

*** 更新:

我可以通过最后一部分检索“成功”:“真”:

else:
        #item = response['Item']
        print("GetItem succeeded:")
        print(json.dumps(response))
        print(response['Items'])
        if "Items" in response:
            return{
                "Success":"True",
                "Extension":response["Items"][{extension}]
                }

正在打印:

{
  "stackTrace": [
    [
      "/var/task/lambda_function.py",
      30,
      "lambda_handler",
      "\"Extension\":response[\"Items\"][{extension}]"
    ]
  ],
  "errorType": "TypeError",
  "errorMessage": "list indices must be integers, not set"
}

我只需要这个输出:

 "Success":"True"
 "Extension:"7777"

请帮我实现这个,我会将答案标记为正确!

Lambda screenshot

Lambda test event

您似乎错误地访问了来自 DynamoDB 的响应。

 "Extension":response["Items"][{extension}]

response['Items'] 的输出是一个列表,您试图通过 [{extension}] 访问该列表是错误的。相反,您应该使用整数访问它,例如response['Items'][0]。通常,您会循环遍历结果,因为 query 可以 return 多个项目。

打印查询的响应时会发生什么:print(response['Items']) ?