def lambda_handler(event, context):
    '''
    Args:
        event (dict/list/str/int/float/NoneType): AWS event data.
        context (LambdaContext): Lambda runtime information.
    '''

    logger.debug('Lambda event received.')
    logger.info(
        json_dump_request_event(class_name='lambda_handler',
                                method_name='lambda_handler',
                                params=event,
                                details={'message': 'Lambda event received.'}))

    monitor = Monitor(ses_client=ses_client,
                      cloudwatch_client=cloudwatch_client,
                      logger=logger)
    monitor.handle_ses_sending_quota()
    monitor.handle_ses_reputation()

    response = monitor.send_notifications(raise_on_errors=True)

    logger.debug('Lambda event processed.')
    logger.info(
        json_dump_response_event(
            class_name='lambda_handler',
            method_name='lambda_handler',
            response=response,
            details={'message': 'Lambda event processed.'}))
Ejemplo n.º 2
0
    def _log_handle_ses_reputation_response(self):
        '''
        Log the SES account reputation handler response.
        '''

        self.logger.debug('SES account reputation handler complete.')

        self.logger.info(
            json_dump_response_event(class_name=self.__class__.__name__,
                                     method_name='handle_ses_reputation'))
Ejemplo n.º 3
0
    def _log_handle_ses_quota_response(self):
        '''
        Log the SES account quota handler response.
        '''

        self.logger.debug('SES account sending handler complete.')

        self.logger.info(
            json_dump_response_event(class_name=self.__class__.__name__,
                                     method_name='handle_ses_quota'))
Ejemplo n.º 4
0
    def _log_disable_account_sending_response(self):
        '''
        Log the disable account sending response.
        '''

        self.logger.debug('SES account sending DISABLED!')

        self.logger.info(
            json_dump_response_event(class_name=self.__class__.__name__,
                                     method_name='disable_account_sending_request'))
Ejemplo n.º 5
0
    def _log_get_ses_account_reputation_metrics_response(self, response):
        '''
        Log the response from getting SES account reputation metrics.

        Args:
            response (dict): MetricDataResults dict object.
        '''

        self.logger.debug('Received SES reputation metric data for account')

        self.logger.info(
            json_dump_response_event(
                class_name=self.__class__.__name__,
                method_name='get_ses_account_reputation_metrics',
                response=response))
Ejemplo n.º 6
0
    def _log_post_json_response(self, response):
        '''
        Logs JSON POST params.

        Args:
            url (str): The url being posted to.
            response (requests.Response): Response object.
        '''

        self.logger.debug('Received POST %s response from %s',
                          response.status_code, response.url)

        self.logger.info(
            json_dump_response_event(class_name=self.__class__.__name__,
                                     method_name='post_json',
                                     response=response.json(),
                                     details={
                                         'url': response.url,
                                         'status_code': response.status_code
                                     }))