AWS Dynamodb boto3 batch_write_item无效

时间:2018-02-19 05:00:41

标签: amazon-web-services boto3

我一直试图围绕boto3(适用于AWS的Python SDK)中batch_write_item的工作原理。我的代码如下:

users = self.scan_table(filterKey="key",filterValue="value",table="users")
deleteUsers = []

# Create lists to delete
for u in users:
    deleteUsers.append({"DeleteRequest":{"Key":{"S":u["user_id"]}}})

# Delete items
ret = self.db.batch_write_item(
    RequestItems={
        "users":delUsers
    }
)

输出如下(对于每个要删除的项目):

ClientError: An error occurred (ValidationException) when calling the
BatchWriteItem operation: The provided key element does not match the schema

据我所知,我完全遵循documentation中的规定说明。我错过了什么?

编辑: 根据jarmod的评论,我觉得我需要指明我确实使用的是boto3资源,而不是客户端。 clientresource有两套独立的文档。事实证明,建议使用正确使用的功能文档。

1 个答案:

答案 0 :(得分:0)

哦,事实证明我没有正确阅读文档(尽管它可以在某些地方更加清晰)。我更改了以下代码:

    # Create lists to delete
    for u in users:
        delUsers.append({"DeleteRequest":{"Key":{"S":u["user_id"]}}})

要:

    # Create lists to delete
    for u in users:
        delUsers.append({"DeleteRequest":{"Key":{"user_id":u["user_id"]}}})

解释是我假设" S"是指键的类型,但这并不是什么要求。在玩弄删除括号并玩弄虚拟数据后,很明显我需要更改" S"到我试图影响的表的主键的实际名称,在这种情况下," user_id"。

之后它运作得很好。