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.
import abc
import functools
import logging
import threading
from collections import defaultdict
from concurrent.futures import ThreadPoolExecutor
from enum import Enum
from typing import Callable, Dict, List, Optional, Tuple
from plugin import Plugin, PluginLifecycleListener, PluginManager, PluginSpec
from readerwriterlock import rwlock
from werkzeug import Request
from localstack import config
from localstack.config import ServiceProviderConfig
from localstack.utils.bootstrap import get_enabled_apis, is_api_enabled, log_duration
from localstack.utils.functions import call_safe
from localstack.utils.net import wait_for_port_status
from localstack.utils.sync import poll_condition
LOG = logging.getLogger(__name__)
PLUGIN_NAMESPACE = "localstack.aws.provider"
_default = object()  
class PersistenceContext: