无法从Python Lambda函数放入DynamoDB

问题描述

我正在使用Lambda函数获取数据并将数据放入DynamoDB。

我可以在表中放入一个新项目,但是当我尝试传递除KEY之外的任何内容时,都会出现以下错误

@H_404_4@An error occurred (ValidationException) when calling the UpdateItem operation: The provided key element does not match the schema

这有效(仅带钥匙):

@H_404_4@"body": "{\"TableName\":\"myExampleTableName\",\"Key\":{\"id\": {\"S\": \"SomeID\"}}}"

这会引发错误(带有密钥和一些数据):

@H_404_4@"body": "{\"TableName\":\"myExampleTableName\",\"Key\":{\"id\": {\"S\": \"SomeID\"},\"Data\": {\"S\": \"MyDataExampleData\"}}}"

尽管语法似乎与示例中显示here相同。

有人看到我在做什么错吗?

这是一种更具可读性的方式:

@H_404_4@{ "TableName":"myExampleTableName","Key":{ "id": {"S": "SomeID"},"Data": {"S": "MyDataExampleData"} } }

解决方法

“键”内的“数据”字段似乎不正确。如果我们拥有您要放入的表的实际代码和架构,将会更容易理解。

这是一个使用python的示例,您可以看到其中没有“ Key”属性,但有“ Item”(我假设您根据发送的文档使用python)

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Python.03.html

response = table.put_item(
   Item={
        'year': year,'title': title,'info': {
            'plot': plot,'rating': rating
        }
    }
)