This issue has shown that, when we introduce new providers and propagate the configs to users, then remove the config ("asf" was removed and renamed to "default"), user configuration breaks
- #6358

One way of dealing with this is checking at startup time whether the configured providers are available, and if not, log a warning and fall back to the default provider.
call_safe(self.lifecycle_hook.on_before_start)
        if not self.start_function:
            return
        if self.start_function is _default:
            
            if not self.listener:
                return
            from localstack.services.infra import add_service_proxy_listener
            add_service_proxy_listener(self.plugin_name, self.listener)
            return
        kwargs = {"asynchronous": asynchronous}
        if self.listener:
            kwargs["update_listener"] = self.listener
        return self.start_function(**kwargs)
    def stop(self):
        call_safe(self.lifecycle_hook.on_before_stop)
        if not self.stop_function:
            return
        return self.stop_function()
    def check(self, expect_shutdown=False, print_error=False):
        if not self.check_function:
            return
        return self.check_function(expect_shutdown=expect_shutdown, print_error=print_error)
    def name(self):
        return self.plugin_name
    def is_enabled(self):
        if self.default_active:
            return True
        return is_api_enabled(self.name())
class ServiceState(Enum):