Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何计算Dynamodb项目大小?获取验证错误400KB Boto_Python 2.7_Amazon Web Services_Amazon Dynamodb_Boto - Fatal编程技术网

Python 2.7 如何计算Dynamodb项目大小?获取验证错误400KB Boto

Python 2.7 如何计算Dynamodb项目大小?获取验证错误400KB Boto,python-2.7,amazon-web-services,amazon-dynamodb,boto,Python 2.7,Amazon Web Services,Amazon Dynamodb,Boto,ValidationException:ValidationException:400错误请求 {u'message':u'Item size已超过允许的最大大小,'u''u'type':u'com.amazon.coral.validateValidationException'} 我拥有的item对象的大小为92004字节 >>> iii <boto.dynamodb2.items.Item object at 0x7f7922c97190> >>&

ValidationException:ValidationException:400错误请求 {u'message':u'Item size已超过允许的最大大小,'u''u'type':u'com.amazon.coral.validateValidationException'}

我拥有的item对象的大小为92004字节

>>> iii
<boto.dynamodb2.items.Item object at 0x7f7922c97190>
>>> iiip = iii.prepare_full() # it is now in dynamodb format e.g. "Item":{"time":{"N":"300"}, "user":{"S":"self"}} 

>>> len(json.dumps(iiip))
92004
>>>

换句话说,cloudtrail数据的大小必须小于68482字节。我想知道为什么他们声称它是400KB。很明显,我遗漏了一些东西。

如果没有问题,您可以共享您的输入数据吗?您正在尝试使用平面文件作为输入插入大容量数据吗?看起来dynamoDB无法解释新行或将所有记录视为单个记录!! 我得到了一个类似的错误,但对于散列键字段。我正在尝试使用配置单元脚本批量加载数据。我意识到属性应该用制表符分隔,通过修改输入格式,错误就为我解决了


尝试一次插入一条记录。如果您没有得到上面的错误,那么这与数据的格式有关

如果没有问题,您可以共享您的输入数据吗?您正在尝试使用平面文件作为输入插入大容量数据吗?看起来dynamoDB无法解释新行或将所有记录视为单个记录!! 我得到了一个类似的错误,但对于散列键字段。我正在尝试使用配置单元脚本批量加载数据。我意识到属性应该用制表符分隔,通过修改输入格式,错误就为我解决了


尝试一次插入一条记录。如果您没有得到上面的错误,那么这与数据的格式有关

回答我自己的问题,因为这可能会帮助有同样问题的人。 我联系了aws技术支持,以下是解释:

我的dynamodb表上有5个索引,因为每个索引都复制了数据;总数据=68481*5+1=410886,接近400KB

我觉得Dynamodb文档中缺少这个,如果亚马逊能添加它,那就太好了


因此,总而言之,最终保存在dynamodb表中的总数据项大小为=Acutal data*index number+1。

回答了我自己的问题,因为它可能会帮助解决同样问题的人。 我联系了aws技术支持,以下是解释:

我的dynamodb表上有5个索引,因为每个索引都复制了数据;总数据=68481*5+1=410886,接近400KB

我觉得Dynamodb文档中缺少这个,如果亚马逊能添加它,那就太好了


因此,总而言之,最终保存在dynamodb表中的总数据项大小为=Acutal data*index number+1。

我试图一次插入一个项,但仍然得到相同的错误。我不能在这里共享数据,但它是一个简单的JSON blob。我试图一次插入一个项目,但仍然得到相同的错误。我不能在这里共享数据,但它是一个简单的JSON blob。这些是全局二级索引吗?这是文档中令人震惊的遗漏!这些是LSI本地二级索引。啊,我明白了,谢谢!我使用的是GSI,但基于测试,它没有表现出相同的问题,我只是说这太疯狂了,希望我在定义LSI时知道这一点。没人会谈论这个?这些是全球二级指数吗?这是文档中令人震惊的遗漏!这些是LSI本地二级索引。啊,我明白了,谢谢!我使用的是GSI,但基于测试,它没有表现出相同的问题,我只是说这太疯狂了,希望我在定义LSI时知道这一点。怎么没人谈论这个?
>>> i00['Resources'] = "A" * 66848; len(json.dumps(i00))
68481
>>> i = Item(ct.table, data=i00); i.save()
True
>>> i.delete()
True
>>> i00['Resources'] = "A" * 66849; len(json.dumps(i00))
68482
>>> i = Item(ct.table, data=i00); i.save()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/var/www/virtualenv/ken/local/lib/python2.7/site-packages/boto/dynamodb2/items.py", line 455, in save
    returned = self.table._put_item(final_data, expects=expects)
  File "/var/www/virtualenv/ken/local/lib/python2.7/site-packages/boto/dynamodb2/table.py", line 835, in _put_item
    self.connection.put_item(self.table_name, item_data, **kwargs)
  File "/var/www/virtualenv/ken/local/lib/python2.7/site-packages/boto/dynamodb2/layer1.py", line 1510, in put_item
    body=json.dumps(params))
  File "/var/www/virtualenv/ken/local/lib/python2.7/site-packages/boto/dynamodb2/layer1.py", line 2842, in make_request
    retry_handler=self._retry_handler)
  File "/var/www/virtualenv/ken/local/lib/python2.7/site-packages/boto/connection.py", line 954, in _mexe
    status = retry_handler(response, i, next_sleep)
  File "/var/www/virtualenv/ken/local/lib/python2.7/site-packages/boto/dynamodb2/layer1.py", line 2882, in _retry_handler
    response.status, response.reason, data)
ValidationException: ValidationException: 400 Bad Request
{u'message': u'Item size has exceeded the maximum allowed size', u'__type': u'com.amazon.coral.validate#ValidationException'}