in lambda/src/data_access/ddb_util.py [0:0]
def scan_item_ddb(table_name, ddb_client=None, **kwargs):
if ddb_client is not None:
table = ddb_client.Table(table_name)
logger.info('querying ddb using ddb client override')
else:
table = dynamodb.Table(table_name)
try:
response = table.scan(**kwargs)
for i, item in enumerate(response["Items"]):
logger.debug(f'item {i}: {json.dumps(item, cls=DecimalEncoder)}')
result = response['Items']
while 'LastEvaluatedKey' in response:
response = table.scan(ExclusiveStartKey=response['LastEvaluatedKey'], **kwargs)
logger.info(f'DDBQuery: Found {len(response["Items"])} items in next page.')
result.extend(response['Items'])
return result
except ClientError as e:
logger.error(f'Error scanning {table_name} DDB table', exc_info=True)
raise e