如何从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"
]
}
尽管文档说get_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}}
为什么没有提供项目?如何从Dynamo检索记录?
我测试了你的代码,效果非常好:
id
import boto3
def handler(event, context):
id = 'food'
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('stack')
response = table.get_item(
Key={
'id': id,
}
)
print('response:', response)
item = response['Item']
return {}
返回:
response: {'Item': {'id': 'food', 'name': 'apple'}, 'ResponseMetadata': {'RequestId': '...', 'HTTPStatusCode': 200, 'HTTPHeaders': {'server': 'Server', 'date': 'Thu, 24 Oct 2019 04:38:35 GMT', 'content-type': 'application/x-amz-json-1.0', 'content-length': '49', 'connection': 'keep-alive', 'x-amzn-requestid': '...', 'x-amz-crc32': '...'}, 'RetryAttempts': 0}}
注意返回数据前面的Item
。
它不适用于您的一些可能原因:
KeyError
。检查您的主键是否被称为id
以匹配get_item()
调用中的代码。id
设置为所请求值的条目。当我尝试此操作时,我收到了与您收到的完全相同的错误消息。因此,请检查您的代码在使用id=event['id']
做什么,因为它可能没有返回您期望的值。问题内容: 是否可以从Java内部类中获取对它的引用? 即 问题答案: 您可以像这样访问外部类的实例:
问题内容: 这不是直截了当的问题。在我的情况下,外部类变量和内部类setter方法的参数名称相同。喜欢: 现在,我无法初始化外部类实例变量p,因为它指示内部类。再次,我做不到它得到一个错误。现在如何分配外部p,同时将内部Class方法的参数命名为p? 问题答案: 这是您可以/应该这样做的方式:
这不是直截了当的问题。在我的例子中,外部类变量和内部类setter方法的参数名称是相同的。比如: 现在我不能用初始化外部类实例变量p,因为它指示内部类。同样,我不能执行会出现错误。现在,我如何分配外部p,使内部类方法的参数与名称p相同?
我已经创建了JavaSwing应用程序,其中包含一个jDesktoppane,在它里面我正在从主框架(JFrame)中的切换按钮加载/调用一些内部框架。我使用了jButton组来切换所有的按钮,所以当按下一个按钮时,只有一个帧会切换。 由于我使用了切换按钮,即使我配置了JInternalFrame,相关切换按钮仍将处于按下模式(已选择)。我尝试了很多方法,但无法将切换按钮的状态从选中更改为未选中。
我正在使用Java文本编辑器(Swing)。到目前为止,我已经做了身体。我有这个功能的问题: 新建(JMenuItem)(清空JTextArea的内容) 当用户单击该按钮时,JTextArea内容应替换为空字符串。这是我的代码(我正在使用与问题无关的代码,例如创建菜单、添加菜单项,只添加类。) 这是TextArea类: (如你所见,是空的。) 这是MenuBar类: 这是类构造函数,我在其中添加了
问题内容: 如何从内部类访问外部类? 我正在重写一种使它在不同线程上运行的方法。从内联线程中,我需要调用原始方法,但是当然只要调用就会变成无限递归。 具体来说,我在扩展BufferedReader: 这个地方给了我我找不到的NullPointerException。 谢谢。 问题答案: 像这样: 上面的测试在执行时显示: