簡體   English   中英

使用 python Boto3 放入 AWS Dynamo

[英]Put in AWS Dynamo using python Boto3

我在 Dynamo 有一張桌子

D B

現在我正在嘗試在表中添加一個新行(產品)。 當我使用 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

您的代碼中有幾個問題:

  1. 如果它是 JSON ,則需要使用Item=json.loads(event['body'])解析事件主體
  2. 您需要使用'body': json.dumps(response)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM