def lambda_handler()

in repos/serving/lambdas/functions/read-ddb/lambda_function.py [0:0]


def lambda_handler(event, context):

    logger.info('Lambda event is [{}]'.format(event))

    # Retrieve AWS request identifier for this execution
    request_id = str(context.aws_request_id)

    # Retrieve target DynamoDB table name from environment variables
    val_table_name = os.environ['target_ddb_table'] # mlops-table
    val_policy_id = str(event['queryStringParameters']['policy_id'])

    logger.info('Input parameters are [{}] [{}]'.format(val_table_name, val_policy_id))

    request_data = event.get("requestContext")

    logger.info('Request data is is [{}]'.format(request_data))

    # Create a paginator
    paginator = dynamodb.meta.client.get_paginator('query')

    logger.info('Retrieving data ...')

    try:

        # Scenario : retrieve all columns from the source table
        response_iterator = paginator.paginate(
            TableName=val_table_name,
            KeyConditionExpression=Key('policy_id').eq(val_policy_id),
            #FilterExpression=Attr('cnt_records').gte(val_record_cnt),
            Select='ALL_ATTRIBUTES',
            PaginationConfig={'MaxItems':10, 'PageSize': 10}
        )

        for page in response_iterator:
            #logger.info('count->[{}]'.format(page['Count']))
            if page['Count'] > 0:
                converted_items = json.dumps(page['Items'], cls=DecimalEncoder, indent = 2)

        logger.info('no. of items ->[{}]'.format(len(converted_items)))

        # Dummy response
        responsebody = converted_items

        # Generate response
        responseObject = {}
        responseObject['statusCode'] = 200
        responseObject['headers'] = {}
        responseObject['headers']['Content-Type'] = 'application/json'
        responseObject['body'] = responsebody

        return(responseObject)
    except ClientError as e:
        if e.response['Error']['Code'] == "AccessDeniedException":
            logger.error('Error - AccessDeniedException', exc_info=True)

            return {
            'statusCode': 401,
            'body': json.dumps('Insufficient rights to perform this operation')
            }
        else:
            raise