'Perform a query of DynamoDB.  This version is currently punting
and expecting you to provide a full and correct JSON body
which is passed as is to DynamoDB.
:type table_name: str
:param table_name: The name of the table to query.
:type hash_key_value: dict
:param key: A DynamoDB-style HashKeyValue.
:type range_key_conditions: dict
:param range_key_conditions: A Python version of the
RangeKeyConditions data structure.
:type attributes_to_get: list
:param attributes_to_get: A list of attribute names.
If supplied, only the specified attribute names will
be returned.  Otherwise, all attributes will be returned.
:type limit: int
:param limit: The maximum number of items to return.
:type count: bool
:param count: If True, Amazon DynamoDB returns a total
number of items for the Query operation, even if the
operation has no matching items for the assigned filter.
:type consistent_read: bool
:param consistent_read: If True, a consistent read
request is issued.  Otherwise, an eventually consistent
request is issued.
:type scan_index_forward: bool
:param scan_index_forward: Specified forward or backward
traversal of the index.  Default is forward (True).
:type exclusive_start_key: list or tuple
:param exclusive_start_key: Primary key of the item from
which to continue an earlier query.  This would be
provided as the LastEvaluatedKey in that query.'

def query(self, table_name, hash_key_value, range_key_conditions=None, attributes_to_get=None, limit=None, consistent_read=False, scan_index_forward=True, exclusive_start_key=None, object_hook=None, count=False):

    data = {'TableName': table_name, 'HashKeyValue': hash_key_value}
    if range_key_conditions:
        data['RangeKeyCondition'] = range_key_conditions
    if attributes_to_get:
        data['AttributesToGet'] = attributes_to_get
    if limit:
        data['Limit'] = limit
    if count:
        data['Count'] = True
    if consistent_read:
        data['ConsistentRead'] = True
    if scan_index_forward:
        data['ScanIndexForward'] = True
    else:
        data['ScanIndexForward'] = False
    if exclusive_start_key:
        data['ExclusiveStartKey'] = exclusive_start_key
    json_input = json.dumps(data)
    return self.make_request('Query', json_input, object_hook=object_hook)
