2016-06-02 12 views
2

Ich bin neu in Dynamodb versucht, Daten von dynamodb zu bekommen.Kann AWS dynamob nicht mit Python get_item?

This is my table with "topic" as a primary hash key

mein Python-Code

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 

Ich erhalte die folgenden Fehler

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: An error occurred (ValidationException) when calling the GetItem operation: The provided key element does not match the schema

bin ich etwas fehle in meinem Code?

Antwort

5

Die korrekte Syntax ist:

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

aber ich persönlich empfehlen Boto-Client zu verwenden:

client = boto3.client('dynamodb') 

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

http://boto3.readthedocs.io/en/latest/reference/services/dynamodb.html