in CommonLayerCode/datalake-library/python/datalake_library/interfaces/dynamo_interface.py [0:0]
def query_object_metadata_index(self, index, key_expression, key_value, filter_expression, filter_value, max_items):
try:
items = []
response = self.object_metadata_table.query(
IndexName=index,
KeyConditionExpression=Key(key_expression).eq(key_value),
FilterExpression=Attr(filter_expression).eq(filter_value)
)
if response['Items']:
items.extend(response['Items'])
while 'LastEvaluatedKey' in response:
response = self.object_metadata_table.query(
IndexName=index,
KeyConditionExpression=Key(key_expression).eq(key_value),
FilterExpression=Attr(filter_expression).eq(filter_value),
ExclusiveStartKey=response['LastEvaluatedKey']
)
if response['Items']:
items.extend(response['Items'])
if len(items) > max_items:
items = items[:max_items]
break
except ClientError:
msg = 'Error querying object metadata {} index'.format(index)
self._logger.exception(msg)
raise
return items