如何从AWS Lambda函数内部读取Dynamodb记录?你知道吗
我正试图通过以下方式给get_item
打电话:
import os
import boto3
def handler(event, context):
id = event['id']
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('mytable')
response = table.get_item(
Key={
'id': id,
}
)
print('response:', response)
item = response['Item']
return {}
但是,当我通过Lambda测试工具运行测试时,它会失败,并出现以下错误:
{
"errorMessage": "'Item'",
"errorType": "KeyError",
"stackTrace": [
" File \"/var/task/main.py\", line 33, in handler\n item = response['Item']\n"
]
}
即使docs说get_item
应该返回一个包含Item
字典的对象,它实际上返回:
{'ResponseMetadata': {'RequestId': 'DIDH3KVSPP1LU7O0TBLGP701QRVV4KQNSO5AEMVJF66Q9ASUAAJG', 'HTTPStatusCode': 200, 'HTTPHeaders': {'server': 'Server', 'date': 'Thu, 24 Oct 2019 03:15:42 GMT', 'content-type': 'application/x-amz-json-1.0', 'content-length': '2', 'connection': 'keep-alive', 'x-amzn-requestid': 'DIDH3KVSPP1LU7O0TBLGP701QRVV4KQNSO5AEMVJF66Q9ASUAAJG', 'x-amz-crc32': '2745614147'}, 'RetryAttempts': 0}}
为什么不提供Item
?如何从Dynamo检索记录?你知道吗
我测试了你的代码,效果非常好:
id
的主键创建了一个DynamoDB表结果是:
注意返回数据前面的
Item
。你知道吗它不适用于您的一些可能原因:
KeyError
。检查主键是否为id
,以匹配get_item()
调用中的代码。你知道吗id
设置为所请求值的条目。当我尝试此操作时,得到的错误消息与您收到的完全相同。因此,请检查代码对id = event['id']
所做的操作,因为它可能没有返回您期望的值。你知道吗相关问题 更多 >
编程相关推荐