问题描述
我正在使用Lambda函数来获取数据并将数据放入DynamoDB。
我可以在表中放入一个新项目,但是当我尝试传递除KEY之外的任何内容时,都会出现以下错误:
An error occurred (ValidationException) when calling the UpdateItem operation:
The provided key element does not match the schema
这有效(仅带钥匙):
"body": "{\"TableName\":\"myExampleTableName\",\"Key\":{\"id\": {\"S\": \"SomeID\"}}}"
这会引发错误(带有密钥和一些数据):
"body": "{\"TableName\":\"myExampleTableName\",\"Key\":{\"id\": {\"S\": \"SomeID\"},\"Data\": {\"S\": \"MyDataExampleData\"}}}"
尽管语法似乎与示例中显示的here相同。
有人看到我在做什么错吗?
这是一种更具可读性的方式:
{
"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
}
}
)