<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_impression_event(self, experiment, variation_id, user_id, attributes):
 """ Create impression Event to be sent to the logging endpoint. Args: experiment: Experiment for which impression needs to be recorded. variation_id: ID for variation which would be presented to user. user_id: ID for user. attributes: Dict representing user attributes and values which need to be recorded. Returns: Event object encapsulating the impression event. """


    params = self._get_common_params(user_id, attributes)
    impression_params = self._get_required_params_for_impression(experiment, variation_id)

    params[self.EventParams.USERS][0][self.EventParams.SNAPSHOTS].append(impression_params)

    return Event(self.EVENTS_URL,
                 params,
                 http_verb=self.HTTP_VERB,
                 headers=self.HTTP_HEADERS)