无法使用 python 从 AWS dynamodb 获取_item?

2024-03-03

我是 dynamodb 的新手,试图从 dynamodb 获取数据。

这是我的表,其中“主题”作为主哈希键 https://i.stack.imgur.com/GVoXN.jpg

我的Python代码

import boto3 
from boto3 import dynamodb 

from boto3.session import Session

from boto3.dynamodb.conditions import Key, Attr


dynamodb_session = Session(aws_access_key_id='XXXXXXXXXXXXXXX',
          aws_secret_access_key='XXXXXXXXXXXXXXXXXXXXXXXXXXXX',
          region_name='us-east-1')

dynamodb = dynamodb_session.resource('dynamodb')

table=dynamodb.Table('Garbage_collector_table')

my_topic = "$aws/things/garbage_collector_thing/shadow/update/accepted"

response = table.get_item(TableName='Garbage_collector_table', Key={'topic':my_topic})

for res in response: 
    print "result ",res

我收到以下错误

Traceback (most recent call last):
 File "get-data-dynamodb-boto3.py", line 19, in <module>
    response = table.get_item(TableName='Garbage_collector_table', Key={'topic': my_topic})   File
 "/usr/local/lib/python2.7/dist-packages/boto3/resources/factory.py",
 line 518, in do_action
     response = action(self, *args, **kwargs)   File "/usr/local/lib/python2.7/dist-packages/boto3/resources/action.py",
 line 83, in __call__
     response = getattr(parent.meta.client, operation_name)(**params)   File "/usr/local/lib/python2.7/dist-packages/botocore/client.py", line
 258, in _api_call
     return self._make_api_call(operation_name, kwargs)   File /usr/local/lib/python2.7/dist-packages/botocore/client.py", line 548,
 in _make_api_call
     raise ClientError(parsed_response, operation_name)

botocore.exceptions.ClientError:发生错误 (ValidationException) 调用 GetItem 操作时:提供的 关键元素与架构不匹配

我的代码中遗漏了什么吗?


您正在混合具有不同方法的资源和客户端对象。更多信息在这里 https://stackoverflow.com/a/42818143/4311160.

boto3 资源的正确语法是:

response = table.get_item(Key={'topic': my_topic})

boto3 客户端的正确语法是:

client = boto3.client('dynamodb')
response = client.get_item(TableName='Garbage_collector_table', Key={'topic':{'S':str(my_topic)}})

参考:Boto3-DynamoDB http://boto3.readthedocs.io/en/latest/reference/services/dynamodb.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 python 从 AWS dynamodb 获取_item? 的相关文章

随机推荐