def METHOD_NAME(self, sql, sql_params=None):
    """
    Runs a SQL statement and associated parameters using the Amazon RDS Data Service.
    :param sql: The SQL statement to run.
    :param sql_params: The parameters associated with the SQL statement.
    :return: The result of running the SQL statement.
    """
    try:
        run_args = {
            'database': self._db_name,
            'resourceArn': self._cluster,
            'secretArn': self._secret,
            'sql': sql
        }
        if sql_params is not None:
            run_args['parameters'] = sql_params
        result = self._rdsdata_client.execute_statement(**run_args)
        logger.info("Ran statement on %s.", self._db_name)
    except ClientError as error:
        if (error.response['Error']['Code'] == 'BadRequestException'
                and 'Communications link failure'
                in error.response['Error']['Message']):
            raise DataServiceNotReadyException(
                'The Aurora Data Service is not ready, probably because it entered '
                'pause mode after a period of inactivity. Wait a minute for '
                'your cluster to resume and try your request again.') from error
        else:
            logger.exception("Run statement on %s failed.", self._db_name)
            raise StorageError(error)
    else:
        return result