1
我正在遷移一些代碼以使用boto的DynamoDB2庫,但我在與boot.dynamodb2連接時遇到問題。然而,原始的boto連接工作正常。DynamoDB2的連接錯誤,但沒有使用boto的DynamoDB的連接錯誤
我使用博託版本2.32.0和Python 2.7.3
import boto
import boto.dynamodb2
from boto.dynamodb2.table import Table
access_id = '-------------' # removed
secrey_key = '--------------' # removed
tablename = 'test'
lookup = 'hash1'
conn = boto.connect_dynamodb(aws_access_key_id=access_id, aws_secret_access_key=secret_key)
table1 = conn.get_table(tablename)
item1 = table1.get_item(lookup)
print "DB1 item :: ", item1
conn2 = boto.dynamodb2.connect_to_region('us-east-1', aws_access_key_id=access_id, aws_secret_access_key=secret_key)
table2 = Table(tablename)
item2 = table2.get_item(hashkey=lookup)
print "DB2 item :: ", item2
這是輸出。請注意,該項目是由舊的發電機調用而不是boto.dynamodb2版本返回的。
DB1 item :: {'hashkey': 'hash1', 'value': 1}
Traceback (most recent call last):
File "bototest.py", line 18, in <module>
item2 = table2.get_item(hashkey=lookup)
File "/usr/local/lib/python2.7/dist-packages/boto-2.31.0-py2.7.egg/boto/dynamodb2/table.py", line 502, in get_item
consistent_read=consistent
File "/usr/local/lib/python2.7/dist-packages/boto-2.31.0-py2.7.egg/boto/dynamodb2/layer1.py", line 911, in get_item
body=json.dumps(params))
File "/usr/local/lib/python2.7/dist-packages/boto-2.31.0-py2.7.egg/boto/dynamodb2/layer1.py", line 2100, in make_request
retry_handler=self._retry_handler)
File "/usr/local/lib/python2.7/dist-packages/boto-2.31.0-py2.7.egg/boto/connection.py", line 940, in _mexe
status = retry_handler(response, i, next_sleep)
File "/usr/local/lib/python2.7/dist-packages/boto-2.31.0-py2.7.egg/boto/dynamodb2/layer1.py", line 2143, in _retry_handler
data)
boto.exception.JSONResponseError: JSONResponseError: 400 Bad Request
{u'message': u'The security token included in the request is invalid.', u'__type': u'com.amazon.coral.service#UnrecognizedClientException'}
謝謝!我應該注意到一些如此明顯的事情。我一直在盯着官方博託移民文件完全困惑。不幸的是,他們忽略了許多連接步驟。 – 2014-09-03 06:06:46
非常有用。謝謝! – 2015-04-28 17:13:28