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.
def __init__(
        self,
        api: str,
        create_service: Callable[[], Service],
        should_load: Callable[[], bool] = None,
    ) -> None:
        super().__init__()
        self.api = api
        self._create_service = create_service
        self._should_load = should_load
    def should_load(self) -> bool:
        if self._should_load:
            return self._should_load()
        return True
    def create_service(self) -> Service:
        return self._create_service()
def aws_provider(api: str = None, name="default", should_load: Callable[[], bool] = None):
    """
    Decorator for marking methods that create a Service instance as a ServicePlugin. Methods marked with this
    decorator are discoverable as a PluginSpec within the namespace "localstack.aws.provider", with the name
    "<api>:<name>". If api is not explicitly specified, then the method name is used as api name.
    """
    def wrapper(fn):
        
        _api = api or fn.__name__
        
        
        @functools.wraps(fn)
        def factory() -> ServicePluginAdapter: