Как запросить DynamoDB с помощью лямбда-функции с несколькими фильтрами, переданными из API - PullRequest
0 голосов
/ 06 марта 2020

Я создаю лямбда-функцию с DynamodB для списка элементов и пытаюсь передать параметры для фильтрации данных. Не пропуская фильтр, я могу получить данные методом сканирования, но при прохождении фильтра получаю ошибку. Ниже код, который я пытаюсь

    from __future__ import print_function 
import json
import boto3
from boto3.dynamodb.conditions import Key, Attr

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('table-all')

def scan_table_allpages(self, table_name, filter_key=None, filter_value=None):

        table = self.dynamodb_resource.Table(table)

        if filter_key and filter_value:
            filtering_exp = Key(filter_key).eq(filter_value)
            response = table.scan(FilterExpression=filtering_exp)
        else:
            response = table.scan()

        items = response['Items']
        while True:
            print(len(response['Items']))
            if response.get('LastEvaluatedKey'):
                response = table.scan(ExclusiveStartKey=response['LastEvaluatedKey'])
                items += response['Items']
            else:
                break
        return items 

# def lambda_handler(event, context):    
#     print(table.creation_date_time)

#     response = table.get_items(
#         Key={
#             'Country':event['pathParameters']['USA']
#         }
#     )

#     #response = table.query()
#     #print(response)

#     return response

scan_table_allpages(self.table,filter_key="Country",filter_value='USA') 
...