python boto3 put_item 在使用本地 dynamodb 容器时失败

标签 python linux amazon-web-services amazon-dynamodb boto3

我正在使用本地 dynamodb docker 容器测试 boto,我在将新项目放入表中时遇到此错误。该表存在。

from __future__ import print_function # Python 2/3 compatibility
import boto3
import os

os.environ["AWS_ACCESS_KEY_ID"] = "localaccesskey"
os.environ["AWS_SECRET_ACCESS_KEY"] = "password"

conn = boto3.resource('dynamodb', aws_access_key_id="localaccesskey",  aws_secret_access_key="password", region_name='eu-west-1', endpoint_url="http://localhost:8000")
print(list(conn.tables.all()))


table = conn.Table('Movies')
table.put_item(
   Item={
        'username': 'janedoe',
        'first_name': 'Jane',
        'last_name': 'Doe',
        'age': 25,
        'account_type': 'standard_user',
    }
)

错误:

/usr/bin/python2.7 /home/kshk/PycharmProjects/Skulldogo/eli.py
[dynamodb.Table(name=u'Movies'), dynamodb.Table(name=u'devApiConfig'), dynamodb.Table(name=u'devApiKeys'), dynamodb.Table(name=u'devObjectCache'), dynamodb.Table(name=u'devSessionCache'), dynamodb.Table(name=u'test'), dynamodb.Table(name=u'test1'), dynamodb.Table(name=u'test10')]
Traceback (most recent call last):
  File "/home/kshk/PycharmProjects/Skulldogo/eli.py", line 52, in <module>
    'account_type': 'standard_user',
  File "/usr/lib/python2.7/site-packages/boto3/resources/factory.py", line 518, in do_action
    response = action(self, *args, **kwargs)
  File "/usr/lib/python2.7/site-packages/boto3/resources/action.py", line 83, in __call__
    response = getattr(parent.meta.client, operation_name)(**params)
  File "/usr/lib/python2.7/site-packages/botocore/client.py", line 258, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/lib/python2.7/site-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 PutItem operation: One of the required keys was not given a value

有什么想法吗???

最佳答案

DynamoDB 在创建新记录时不会自动生成 ID。确保提供哈希键。

哦,还有定义时的范围键。

关于python boto3 put_item 在使用本地 dynamodb 容器时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38354163/

相关文章:

python : How to check if input is not equal to any item in a 2d array?

python - 为什么 pandas read_csv 转换器的性能要慢得多并且是非矢量化的?

c++ - 如何定义一个可以自省(introspection)的新 d-bus 接口(interface)?

linux - 将目录存储为变量供以后在 linux 脚本中使用

python - 如何创建简单的 3 层神经网络并使用监督学习进行教学?

python - 将textoverlay添加到rtps steam并将其保存到文件

regex - 你能用 grep 做所有能用egrep 做的事情吗?

python - 为什么 AWS 的 Chalice for Python 不尊重我的 virtualenv?

ios - S3TransferManager 无法在 ios 中的 S3GetObjectRequest targetedFilePath 上保存文件/数据

python - 作业完成后 spark-submit 继续挂起