Validate configuration file.
        :raises: RuntimeError

def _validate_config(self):
        """
        Validate configuration file.
        :raises: RuntimeError
        """
        # while set().issubset() is easier, we want to tell the user the names
        # of any invalid keys
        bad_keys = []
        for k in self._config.keys():
            if k not in self._example.keys():
                bad_keys.append(k)
        if len(bad_keys) > 0:
            raise InvalidConfigError('Invalid keys: %s' % bad_keys)
        # endpoints
        if 'endpoints' not in self._config or len(
                self._config['endpoints']) < 1:
            raise InvalidConfigError('configuration must have '
                                     'at least one endpoint')
        for ep in self._config['endpoints']:
            if sorted(
                    self._config['endpoints'][ep].keys()
            ) != ['method', 'queues']:
                raise InvalidConfigError('Endpoint %s configuration keys must '
                                         'be "method" and "queues".' % ep)
            meth = self._config['endpoints'][ep]['method']
            if meth not in self._allowed_methods:
                raise InvalidConfigError('Endpoint %s method %s not allowed '
                                         '(allowed methods: %s'
                                         ')' % (ep, meth,
                                                self._allowed_methods))
        levels = ['CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG', 'NOTSET']
        if ('logging_level' in self._config and
                self._config['logging_level'] not in levels):
            raise InvalidConfigError('logging_level must be one of %s' % levels)
        """
        'api_gateway_method_settings': {
            'throttlingBurstLimit': None,
            'throttlingRateLimit': None
        },
        """
        if 'api_gateway_method_settings' not in self._config:
            return
        ms = self._config['api_gateway_method_settings']
        bad_keys = []
        for k in ms.keys():
            if k not in self._example['api_gateway_method_settings'].keys():
                bad_keys.append(k)
        if len(bad_keys) > 0:
            raise InvalidConfigError(
                'Invalid keys in "api_gateway_method_settings": %s' % bad_keys)
        if 'metricsEnabled' in ms and ms['metricsEnabled'] not in [True, False]:
            raise InvalidConfigError(
                'api_gateway_method_settings metricsEnabled key must be omitted'
                ' or a boolean')
        if ('loggingLevel' in ms and
                ms['loggingLevel'] not in ['OFF', 'INFO', 'ERROR']):
            raise InvalidConfigError(
                'api_gateway_method_settings loggingLevel must be omitted or '
                'one of "OFF", "INFO" or "ERROR"'
            )
        if ('metricsEnabled' in ms and
                ms['dataTraceEnabled'] not in [True, False]):
            raise InvalidConfigError(
                'api_gateway_method_settings dataTraceEnabled key must be '
                'omitted or a boolean')
        if ('throttlingBurstLimit' in ms and
                ms['throttlingBurstLimit'] is not None):
            try:
                assert ms['throttlingBurstLimit'] == int(
                    ms['throttlingBurstLimit'])
            except (AssertionError, ValueError, TypeError):
                raise InvalidConfigError(
                    'api_gateway_method_settings throttlingBurstLimit key must '
                    'be omitted, null or an integer'
                )
        if ('throttlingRateLimit' in ms and
                ms['throttlingRateLimit'] is not None):
            try:
                assert ms['throttlingRateLimit'] == float(
                    ms['throttlingRateLimit'])
            except (AssertionError, ValueError, TypeError):
                raise InvalidConfigError(
                    'api_gateway_method_settings throttlingRateLimit key must '
                    'be omitted, null or a Number (float/double)'
                )