使用python Boto3将AWS Dynamo放入
我在迪纳摩有一张桌子 现在我尝试在表中添加一个新行(产品)。 当我尝试使用API网关时,我创建了一个资源,并使用请求模式产品创建了一个post方法 请求模型使用python Boto3将AWS Dynamo放入,python,amazon-web-services,aws-lambda,aws-api-gateway,aws-dynamodb,Python,Amazon Web Services,Aws Lambda,Aws Api Gateway,Aws Dynamodb,我在迪纳摩有一张桌子 现在我尝试在表中添加一个新行(产品)。 当我尝试使用API网关时,我创建了一个资源,并使用请求模式产品创建了一个post方法 请求模型 { "$schema" : "http://json-schema.org/draft-04/schema#", "title" : "Error Schema", "type" : "object",
{
"$schema" : "http://json-schema.org/draft-04/schema#",
"title" : "Error Schema",
"type" : "object",
"properties" : {
"ID" : { "type" : "string" },
"Catogory" : { "type" : "string" },
"SubCatogory" : { "type" : "string" },
"ProductName" : { "type" : "string" }
}
}
当我尝试使用API网关调用lambda时
{
"message": "Internal server error"
}
当我深入挖掘时,我得到了错误
Invalid type for parameter Item, value: {
"SubCatogory": "Car",
"ID": "6",
"ProductName": "jeep wrangler",
"Catogory": "Vehicle"
}, type: <class 'str'>, valid types: <class 'dict'>.
Execution failed due to configuration error: Malformed Lambda proxy response
如何检索数据和外接数据库
编辑1
添加Lambda中使用的代码
import json
import boto3
def lambda_handler(event, context):
dynamodb = boto3.resource("dynamodb")
table = dynamodb.Table('Products')
request_params = event['body']
project_json = request_params
response = table.put_item(Item=project_json)
# response = event['body']
return {
'statusCode': 200,
'body': response
}
当我试图返回事件['body']
时,我可以看到与输入相同的响应
编辑2
已尝试使用json.loads(请求参数)将json字符串转换为dict
将错误获取为
Invalid type for parameter Item, value: {
"SubCatogory": "Car",
"ID": "6",
"ProductName": "jeep wrangler",
"Catogory": "Vehicle"
}, type: <class 'str'>, valid types: <class 'dict'>.
Execution failed due to configuration error: Malformed Lambda proxy response
您的代码中有几个问题:
Item=JSON.loads(事件['body]])
“body”:json.dumps(response)
显示执行以下操作的代码:insertion@gold_cy怀疑您的正文是JSON字符串,您需要将它解析为一个对象。@jarmod,我是python新手,我尝试过JSON.loads()但是由于配置错误,dint work
执行仍然失败:格式错误的Lambda代理响应
这是我尝试使用project_json=json.loads(请求参数)时出现的错误,因为事件体是一个json字符串,您必须使用json.loads(事件['body'))进行解析。
,响应主体也应该是JSON字符串。因此,请使用json.dumps(response)
。谢谢你的帮助