in lambda/src/data_access/ddb_util.py [0:0]
def get_item_ddb(table_name, ddb_client=None, **kwargs):
if ddb_client is not None:
table = ddb_client.Table(table_name)
logger.info('getting ddb data using ddb client override')
else:
table = dynamodb.Table(table_name)
try:
valid_args = ['Key', 'AttributesToGet', 'ProjectionExpression']
response = table.get_item(**{k: v for k, v in kwargs.items() if k in valid_args})
except ClientError as e:
logger.error('Error querying %s DDB table', table_name, exc_info=True)
raise e
else:
if 'Item' not in response:
return None
item = response['Item']
logger.info('Success querying %s DDB table. Found item', table_name)
logger.debug('item %s', json.dumps(item, cls=DecimalEncoder))
return item