import json import boto3 from datetime import date import time from botocore.exceptions import ClientError #from boto3.dynamodb.types import TypeDeserializer def lambda_handler(event, context): try: p = json.loads(event['body']) table = "dyndata" partition_key = p['datatype'] date1 = date.fromisoformat(p['startdate']) date2 = date.fromisoformat(p['enddate']) sort_key1 = str(round(time.mktime(date1.timetuple()))) sort_key2 = str(round(time.mktime(date2.timetuple()))) response = [] dynamodb_client = boto3.client('dynamodb', region_name="ap-southeast-2") rows = dynamodb_client.query( TableName=table, Limit=6, KeyConditionExpression='datapart = :datapart AND datasort BETWEEN :datasort1 AND :datasort2', ExpressionAttributeValues={ ':datapart': {'S': partition_key}, ':datasort1': {'N': sort_key1}, ':datasort2': {'N': sort_key2} } ) if len(rows) > 0: for item in rows['Items']: response.append({"date": item['datasort']['N'], "datavalue": item['datavalue']['S']}) else: response.append({"date": "0", "datavalue": "No data found"}) except ClientError as e: text = { "result": 1, "msg": e.response['Error']['Message'] } else: if len(response) == 0: response.append({"date": "0", "datavalue": "No data found"}) text = { "result": 0, "data": response } return { "statusCode": 200, "isBase64Encoded": False, "headers": {"Access-Control-Allow-Origin" : "*"}, "body": json.dumps(text), }