Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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 Boto3将AWS Dynamo放入_Python_Amazon Web Services_Aws Lambda_Aws Api Gateway_Aws Dynamodb - Fatal编程技术网

使用python Boto3将AWS Dynamo放入

使用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",

我在迪纳摩有一张桌子

现在我尝试在表中添加一个新行(产品)。 当我尝试使用API网关时,我创建了一个资源,并使用请求模式产品创建了一个post方法

请求模型

{
  "$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

您的代码中有几个问题:

  • 如果事件体是JSON,则需要使用
    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)
    。谢谢你的帮助