':raises: ``DynamoDBExpiredTokenError`` if the security token expires.'

def make_request(self, action, body='', object_hook=None):

    headers = {'X-Amz-Target': ('%s_%s.%s' % (self.ServiceName, self.Version, action)), 'Host': self.region.endpoint, 'Content-Type': 'application/x-amz-json-1.0', 'Content-Length': str(len(body))}
    http_request = self.build_base_http_request('POST', '/', '/', {}, headers, body, None)
    start = time.time()
    response = self._mexe(http_request, sender=None, override_num_retries=self.NumberRetries, retry_handler=self._retry_handler)
    elapsed = ((time.time() - start) * 1000)
    request_id = response.getheader('x-amzn-RequestId')
    boto.log.debug(('RequestId:    %s' % request_id))
    boto.perflog.debug('%s:    id=%s    time=%sms', headers['X-Amz-Target'], request_id, int(elapsed))
    response_body = response.read().decode('utf-8')
    boto.log.debug(response_body)
    return json.loads(response_body, object_hook=object_hook)
