[英]Put in AWS Dynamo using python Boto3
我在 Dynamo 有一張桌子
現在我正在嘗試在表中添加一個新行(產品)。 當我使用 API 網關嘗試此操作時,我創建了一個資源並使用請求模式Product創建了一個 post 方法
請求 Model
{
"$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'>.
我的請求正文如下所示。
{
"SubCatogory": "Car",
"ID": "6",
"ProductName": "jeep wrangler",
"Catogory": "Vehicle"
}
如何檢索數據並添加到數據庫中
編輯 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
}
當我嘗試返回event['body']
時,我可以看到響應與輸入相同
編輯 2
嘗試使用 json.loads(request_params) 將 json 字符串轉換為 dict
import json
import boto3
def lambda_handler(event, context):
dynamodb = boto3.resource("dynamodb")
table = dynamodb.Table('Products')
request_params = event['body']
product_json = json.loads(request_params)
response = table.put_item(Item=product_json)
# response = json.loads(event['body'])
return {
'statusCode': 200,
'body': response
}
得到錯誤為
Execution failed due to configuration error: Malformed Lambda proxy response
您的代碼中有幾個問題:
Item=json.loads(event['body'])
解析事件主體'body': json.dumps(response)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.