AWS Сбой API-шлюза: Сбой выполнения лямбды со статусом 200 из-за ошибки функции клиента: Объект типа Decimal не JSON Сериализуемый - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь получить свои данные из DynamodB с помощью API-шлюза. Он работает с другими функциями, которые относительно похожи. Если я работаю без "json .dumps () ", я получаю Malformed исключение, но в журналах есть данные из таблицы, в противном случае я получаю это исключение (без каких-либо данных):

Сбой выполнения лямбды со статусом 200 из-за ошибки функции клиента: объект типа Decimal не JSON serializable

Это мой python -код

import json
import boto3
from decimal import Decimal

from boto3.dynamodb.conditions import Key, Attr

dynamodb = boto3.resource('dynamodb')
tablename = dynamodb.Table('db')

def lambda_handler(event, context):

   query = event["queryStringParameters"]['email']
   #query = event['query']

   response = tablename.scan(
      FilterExpression=Attr('email').eq(query))
   items = response['Items']

   return{
      "isBase64Encoded": False,
      "statusCode": 200,
      "body" : json.dumps(items)
   }

Этот код для другой таблицы работает нормально:

import json
import boto3
from decimal import Decimal

from boto3.dynamodb.conditions import Key, Attr

dynamodb = boto3.resource('dynamodb')
tablename = dynamodb.Table('FOODGER')

def lambda_handler(event, context):

   query = event["queryStringParameters"]['query']
   #query = event['query']

   response = tablename.scan(
      FilterExpression=Attr('generic food.name').begins_with(query.title()))
   items = response['Items']

   return{
      "isBase64Encoded": False,
      "statusCode": 200,
      "body" : json.dumps(items)
   }

...