Repository: getmoto/moto
Pull request #7221 (2024-01-16 20:12:09)

Techdebt: Update scaffolding to use mock_aws
Also update the Makefile to no longer skip KinesisVideoArchivedMedia-tests. There are just three of them, so it's easier to just skip them while running the test


Patch:
diff --git a/Makefile b/Makefile
index aa403f097..d72334194 100644
--- a/Makefile
+++ b/Makefile
@@ -4,9 +4,8 @@ SERVICE_NAME = "default"
 TEST_NAMES = "*"
 
 ifeq ($(TEST_SERVER_MODE), true)
-	# exclude test_kinesisvideoarchivedmedia
-	# because testing with moto_server is difficult with data-endpoint
-	TEST_EXCLUDE := --ignore tests/test_kinesisvideoarchivedmedia --ignore tests/test_acm --ignore tests/test_amp --ignore tests/test_awslambda --ignore tests/test_batch --ignore tests/test_ec2 --ignore tests/test_sqs
+	# Exclude parallel tests
+	TEST_EXCLUDE := --ignore tests/test_acm --ignore tests/test_amp --ignore tests/test_awslambda --ignore tests/test_batch --ignore tests/test_ec2 --ignore tests/test_sqs
 	# Parallel tests will be run separate
 	PARALLEL_TESTS := ./tests/test_acm/ ./tests/test_acmpca/ ./tests/test_amp/ ./tests/test_awslambda ./tests/test_batch ./tests/test_ec2 ./tests/test_sqs
 else
diff --git a/moto/__init__.py b/moto/__init__.py
index f5091de00..82ab04989 100644
--- a/moto/__init__.py
+++ b/moto/__init__.py
@@ -2,18 +2,3 @@ from moto.core.decorator import mock_aws  # noqa  # pylint: disable=unused-impor
 
 __title__ = "moto"
 __version__ = "4.2.14.dev"
-
-
-try:
-    # Need to monkey-patch botocore requests back to underlying urllib3 classes
-    from botocore.awsrequest import (  # type: ignore[attr-defined]
-        HTTPConnection,
-        HTTPConnectionPool,
-        HTTPSConnectionPool,
-        VerifiedHTTPSConnection,
-    )
-except ImportError:
-    pass
-else:
-    HTTPSConnectionPool.ConnectionCls = VerifiedHTTPSConnection
-    HTTPConnectionPool.ConnectionCls = HTTPConnection
diff --git a/moto/acm/models.py b/moto/acm/models.py
index 8d7bcf4c8..21b36504a 100644
--- a/moto/acm/models.py
+++ b/moto/acm/models.py
@@ -10,7 +10,8 @@ from cryptography.hazmat.primitives import hashes, serialization
 from cryptography.x509 import OID_COMMON_NAME, DNSName, NameOID
 
 from moto import settings
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import utcnow
 
 from .exceptions import (
diff --git a/moto/acmpca/models.py b/moto/acmpca/models.py
index c91f35a3d..7d7f0f954 100644
--- a/moto/acmpca/models.py
+++ b/moto/acmpca/models.py
@@ -9,7 +9,8 @@ from cryptography.hazmat.backends import default_backend
 from cryptography.hazmat.primitives import hashes, serialization
 from cryptography.x509 import Certificate, NameOID, load_pem_x509_certificate
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time, utcnow
 from moto.moto_api._internal import mock_random
 from moto.utilities.tagging_service import TaggingService
diff --git a/moto/amp/models.py b/moto/amp/models.py
index afb09112c..3aed63a82 100644
--- a/moto/amp/models.py
+++ b/moto/amp/models.py
@@ -2,7 +2,8 @@
 
 from typing import Any, Callable, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 from moto.moto_api._internal import mock_random
 from moto.utilities.paginator import paginate
diff --git a/moto/apigateway/models.py b/moto/apigateway/models.py
index 331bf0454..d207bbd83 100644
--- a/moto/apigateway/models.py
+++ b/moto/apigateway/models.py
@@ -19,7 +19,8 @@ except ImportError:
 from openapi_spec_validator.validation.exceptions import OpenAPIValidationError
 
 from moto.apigateway.exceptions import MethodNotFoundException
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.utils import path_url
 from moto.moto_api._internal import mock_random as random
 
diff --git a/moto/apigatewaymanagementapi/models.py b/moto/apigatewaymanagementapi/models.py
index 9947ded1d..374b99b8f 100644
--- a/moto/apigatewaymanagementapi/models.py
+++ b/moto/apigatewaymanagementapi/models.py
@@ -2,7 +2,7 @@
 from collections import defaultdict
 from typing import Any, Dict
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 from moto.core.utils import unix_time
 
 
diff --git a/moto/apigatewayv2/models.py b/moto/apigatewayv2/models.py
index 88e811205..0b396a214 100644
--- a/moto/apigatewayv2/models.py
+++ b/moto/apigatewayv2/models.py
@@ -5,7 +5,8 @@ from typing import Any, Dict, List, Optional, Union
 
 import yaml
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 from moto.moto_api._internal import mock_random as random
 from moto.utilities.tagging_service import TaggingService
diff --git a/moto/appconfig/models.py b/moto/appconfig/models.py
index b4e9ac0b0..50019eb15 100644
--- a/moto/appconfig/models.py
+++ b/moto/appconfig/models.py
@@ -1,6 +1,7 @@
 from typing import Any, Dict, Iterable, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal import mock_random
 from moto.utilities.tagging_service import TaggingService
 
diff --git a/moto/applicationautoscaling/models.py b/moto/applicationautoscaling/models.py
index e8feb39bd..50ce4c58f 100644
--- a/moto/applicationautoscaling/models.py
+++ b/moto/applicationautoscaling/models.py
@@ -3,7 +3,8 @@ from collections import OrderedDict
 from enum import Enum, unique
 from typing import Dict, List, Optional, Tuple, Union
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.ecs import ecs_backends
 from moto.moto_api._internal import mock_random
 
diff --git a/moto/appsync/models.py b/moto/appsync/models.py
index 3177115d5..e2a568b64 100644
--- a/moto/appsync/models.py
+++ b/moto/appsync/models.py
@@ -3,7 +3,8 @@ import json
 from datetime import datetime, timedelta, timezone
 from typing import Any, Dict, Iterable, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 from moto.moto_api._internal import mock_random
 from moto.utilities.tagging_service import TaggingService
diff --git a/moto/athena/models.py b/moto/athena/models.py
index a822c53d0..3c64299ec 100644
--- a/moto/athena/models.py
+++ b/moto/athena/models.py
@@ -2,7 +2,8 @@ import time
 from datetime import datetime
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal import mock_random
 from moto.utilities.paginator import paginate
 
diff --git a/moto/autoscaling/models.py b/moto/autoscaling/models.py
index f81a65916..c65884f89 100644
--- a/moto/autoscaling/models.py
+++ b/moto/autoscaling/models.py
@@ -2,7 +2,8 @@ import itertools
 from collections import OrderedDict
 from typing import Any, Dict, List, Optional, Tuple, Union
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.utils import camelcase_to_underscores
 from moto.ec2 import ec2_backends
 from moto.ec2.exceptions import InvalidInstanceIdError
@@ -805,7 +806,7 @@ class FakeAutoScalingGroup(CloudFormationModel):
             if self.launch_config
             else None
         )
-        reservation = self.autoscaling_backend.ec2_backend.add_instances(
+        reservation = self.autoscaling_backend.ec2_backend.run_instances(
             self.image_id,
             count_needed,
             self.user_data,
diff --git a/moto/awslambda/models.py b/moto/awslambda/models.py
index 10cc9f0e5..fe19adced 100644
--- a/moto/awslambda/models.py
+++ b/moto/awslambda/models.py
@@ -23,7 +23,8 @@ import requests.exceptions
 
 from moto import settings
 from moto.awslambda.policy import Policy
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.exceptions import RESTError
 from moto.core.utils import iso_8601_datetime_with_nanoseconds, unix_time_millis, utcnow
 from moto.dynamodb import dynamodb_backends
@@ -149,7 +150,7 @@ class _DockerDataVolumeContext:
             try:
                 with zip2tar(self._lambda_func.code_bytes) as stream:
                     container.put_archive(settings.LAMBDA_DATA_DIR, stream)
-                if settings.test_proxy_mode():
+                if settings.is_test_proxy_mode():
                     ca_cert = load_resource_as_bytes(__name__, "../moto_proxy/ca.crt")
                     with file2tar(ca_cert, "ca.crt") as cert_stream:
                         container.put_archive(settings.LAMBDA_DATA_DIR, cert_stream)
@@ -968,7 +969,7 @@ class LambdaFunction(CloudFormationModel, DockerModel):
             env_vars["MOTO_PORT"] = moto_port
             env_vars["MOTO_HTTP_ENDPOINT"] = f'{env_vars["MOTO_HOST"]}:{moto_port}'
 
-            if settings.test_proxy_mode():
+            if settings.is_test_proxy_mode():
                 env_vars["HTTPS_PROXY"] = env_vars["MOTO_HTTP_ENDPOINT"]
                 env_vars["AWS_CA_BUNDLE"] = "/var/task/ca.crt"
 
diff --git a/moto/awslambda_simple/models.py b/moto/awslambda_simple/models.py
index 915c9f674..2fa786632 100644
--- a/moto/awslambda_simple/models.py
+++ b/moto/awslambda_simple/models.py
@@ -1,7 +1,7 @@
 from typing import Any, Optional, Union
 
-from ..awslambda.models import LambdaBackend
-from ..core import BackendDict
+from moto.awslambda.models import LambdaBackend
+from moto.core.base_backend import BackendDict
 
 
 class LambdaSimpleBackend(LambdaBackend):
diff --git a/moto/backends.py b/moto/backends.py
index c60b4bbb7..14ba4ad92 100644
--- a/moto/backends.py
+++ b/moto/backends.py
@@ -33,7 +33,7 @@ if TYPE_CHECKING:
     from moto.cognitoidp.models import CognitoIdpBackend
     from moto.comprehend.models import ComprehendBackend
     from moto.config.models import ConfigBackend
-    from moto.core import SERVICE_BACKEND, BackendDict
+    from moto.core.base_backend import SERVICE_BACKEND, BackendDict
     from moto.databrew.models import DataBrewBackend
     from moto.datapipeline.models import DataPipelineBackend
     from moto.datasync.models import DataSyncBackend
diff --git a/moto/batch/models.py b/moto/batch/models.py
index 2499f28f6..6acb78eec 100644
--- a/moto/batch/models.py
+++ b/moto/batch/models.py
@@ -11,7 +11,8 @@ from typing import Any, Dict, List, Optional, Set, Tuple
 import dateutil.parser
 
 from moto import settings
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.utils import unix_time_millis
 from moto.ec2.exceptions import InvalidSubnetIdError
 from moto.ec2.models import EC2Backend, ec2_backends
@@ -1270,7 +1271,7 @@ class BatchBackend(BaseBackend):
             subnet_cycle = cycle(compute_resources["subnets"])
 
             for instance_type in needed_instance_types:
-                reservation = self.ec2_backend.add_instances(
+                reservation = self.ec2_backend.run_instances(
                     image_id="ami-03cf127a",  # Todo import AMIs
                     count=1,
                     user_data=None,
diff --git a/moto/batch_simple/models.py b/moto/batch_simple/models.py
index 508553092..307480f7e 100644
--- a/moto/batch_simple/models.py
+++ b/moto/batch_simple/models.py
@@ -3,13 +3,9 @@ from os import getenv
 from time import sleep
 from typing import Any, Dict, List, Optional, Tuple
 
-from ..batch.models import (
-    BatchBackend,
-    ClientException,
-    Job,
-    batch_backends,
-)
-from ..core import BackendDict
+from moto.batch.exceptions import ClientException
+from moto.batch.models import BatchBackend, Job, batch_backends
+from moto.core.base_backend import BackendDict
 
 
 class BatchSimpleBackend(BatchBackend):
diff --git a/moto/budgets/models.py b/moto/budgets/models.py
index 22269fcac..16104e6c4 100644
--- a/moto/budgets/models.py
+++ b/moto/budgets/models.py
@@ -3,7 +3,8 @@ from copy import deepcopy
 from datetime import datetime
 from typing import Any, Dict, Iterable, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 
 from .exceptions import BudgetMissingLimit, DuplicateRecordException, NotFoundException
diff --git a/moto/ce/models.py b/moto/ce/models.py
index 16ff45db2..7092a74c3 100644
--- a/moto/ce/models.py
+++ b/moto/ce/models.py
@@ -3,7 +3,8 @@
 from datetime import datetime
 from typing import Any, Dict, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import iso_8601_datetime_without_milliseconds
 from moto.moto_api._internal import mock_random
 from moto.utilities.tagging_service import TaggingService
diff --git a/moto/cloudformation/custom_model.py b/moto/cloudformation/custom_model.py
index 0af0f4e39..e03879fba 100644
--- a/moto/cloudformation/custom_model.py
+++ b/moto/cloudformation/custom_model.py
@@ -4,7 +4,7 @@ from typing import Any, Dict
 
 from moto import settings
 from moto.awslambda import lambda_backends
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 from moto.moto_api._internal import mock_random
 
 
diff --git a/moto/cloudformation/models.py b/moto/cloudformation/models.py
index 1d6e18053..beaa6019c 100644
--- a/moto/cloudformation/models.py
+++ b/moto/cloudformation/models.py
@@ -7,7 +7,8 @@ import yaml
 from yaml.parser import ParserError  # pylint:disable=c-extension-no-member
 from yaml.scanner import ScannerError  # pylint:disable=c-extension-no-member
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.utils import (
     iso_8601_datetime_with_milliseconds,
     iso_8601_datetime_without_milliseconds,
diff --git a/moto/cloudformation/parsing.py b/moto/cloudformation/parsing.py
index 0c55ad418..8b0eaa608 100644
--- a/moto/cloudformation/parsing.py
+++ b/moto/cloudformation/parsing.py
@@ -35,7 +35,7 @@ from moto.cloudformation.custom_model import CustomModel
 from moto.cloudwatch import models as cw_models  # noqa  # pylint: disable=all
 
 # End ugly list of imports
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 from moto.datapipeline import models as data_models  # noqa  # pylint: disable=all
 from moto.dynamodb import models as ddb_models  # noqa  # pylint: disable=all
 from moto.ec2 import models as ec2_models
diff --git a/moto/cloudfront/models.py b/moto/cloudfront/models.py
index edbd85c29..4fc6fcdcd 100644
--- a/moto/cloudfront/models.py
+++ b/moto/cloudfront/models.py
@@ -1,7 +1,8 @@
 import string
 from typing import Any, Dict, Iterable, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds
 from moto.moto_api._internal import mock_random as random
 from moto.moto_api._internal.managed_state_model import ManagedState
diff --git a/moto/cloudtrail/models.py b/moto/cloudtrail/models.py
index f1ddfde3a..af8b33141 100644
--- a/moto/cloudtrail/models.py
+++ b/moto/cloudtrail/models.py
@@ -3,7 +3,8 @@ import time
 from datetime import datetime
 from typing import Any, Dict, Iterable, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import iso_8601_datetime_without_milliseconds, utcnow
 from moto.utilities.tagging_service import TaggingService
 
diff --git a/moto/cloudwatch/models.py b/moto/cloudwatch/models.py
index 42a0f8fff..9a8da6fa8 100644
--- a/moto/cloudwatch/models.py
+++ b/moto/cloudwatch/models.py
@@ -5,7 +5,8 @@ from typing import Any, Dict, Iterable, List, Optional, SupportsFloat, Tuple
 from dateutil import parser
 from dateutil.tz import tzutc
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudWatchMetricProvider
+from moto.core.base_backend import BaseBackend
+from moto.core.common_models import BackendDict, BaseModel, CloudWatchMetricProvider
 from moto.core.utils import (
     iso_8601_datetime_with_nanoseconds,
     iso_8601_datetime_without_milliseconds,
diff --git a/moto/codebuild/models.py b/moto/codebuild/models.py
index 8442f554f..4be175617 100644
--- a/moto/codebuild/models.py
+++ b/moto/codebuild/models.py
@@ -4,7 +4,8 @@ from typing import Any, Dict, List, Optional
 
 from dateutil import parser
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds
 from moto.moto_api._internal import mock_random
 
diff --git a/moto/codecommit/models.py b/moto/codecommit/models.py
index bcce77106..7e1e4e44a 100644
--- a/moto/codecommit/models.py
+++ b/moto/codecommit/models.py
@@ -1,6 +1,7 @@
 from typing import Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds
 from moto.moto_api._internal import mock_random
 
diff --git a/moto/codepipeline/models.py b/moto/codepipeline/models.py
index a0deadafa..98552ff20 100644
--- a/moto/codepipeline/models.py
+++ b/moto/codepipeline/models.py
@@ -8,7 +8,8 @@ from moto.codepipeline.exceptions import (
     ResourceNotFoundException,
     TooManyTagsException,
 )
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds, utcnow
 from moto.iam.exceptions import IAMNotFoundException
 from moto.iam.models import IAMBackend, iam_backends
diff --git a/moto/cognitoidentity/models.py b/moto/cognitoidentity/models.py
index c8c8cddb0..a0a714cac 100644
--- a/moto/cognitoidentity/models.py
+++ b/moto/cognitoidentity/models.py
@@ -4,7 +4,8 @@ import re
 from collections import OrderedDict
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import utcnow
 
 from .exceptions import InvalidNameException, ResourceNotFoundError
diff --git a/moto/cognitoidp/models.py b/moto/cognitoidp/models.py
index 48462be09..34ce1dbeb 100644
--- a/moto/cognitoidp/models.py
+++ b/moto/cognitoidp/models.py
@@ -10,7 +10,8 @@ from typing import Any, Dict, List, Optional, Set, Tuple
 
 from jose import jws
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import utcnow
 from moto.moto_api._internal import mock_random as random
 from moto.utilities.paginator import paginate
diff --git a/moto/comprehend/models.py b/moto/comprehend/models.py
index c6543a41c..ff37e0b64 100644
--- a/moto/comprehend/models.py
+++ b/moto/comprehend/models.py
@@ -2,7 +2,8 @@
 
 from typing import Any, Dict, Iterable, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.utilities.tagging_service import TaggingService
 
 from .exceptions import (
diff --git a/moto/config/models.py b/moto/config/models.py
index a8cc82040..2aa96b2fd 100644
--- a/moto/config/models.py
+++ b/moto/config/models.py
@@ -48,8 +48,8 @@ from moto.config.exceptions import (
     TooManyTags,
     ValidationException,
 )
-from moto.core import BackendDict, BaseBackend, BaseModel
-from moto.core.common_models import ConfigQueryModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, ConfigQueryModel
 from moto.core.responses import AWSServiceSpec
 from moto.core.utils import utcnow
 from moto.iam.config import policy_config_query, role_config_query
diff --git a/moto/core/__init__.py b/moto/core/__init__.py
index b202845dc..f21d0fd9e 100644
--- a/moto/core/__init__.py
+++ b/moto/core/__init__.py
@@ -1,7 +1,4 @@
 from .models import DEFAULT_ACCOUNT_ID  # noqa
-from .base_backend import BaseBackend, BackendDict, SERVICE_BACKEND  # noqa
-from .common_models import BaseModel  # noqa
-from .common_models import CloudFormationModel, CloudWatchMetricProvider  # noqa
 from .models import patch_client, patch_resource  # noqa
 from .responses import ActionAuthenticatorMixin
 
diff --git a/moto/core/config.py b/moto/core/config.py
index d4e4ddb67..957025d33 100644
--- a/moto/core/config.py
+++ b/moto/core/config.py
@@ -16,9 +16,18 @@ class _core_config(TypedDict, total=False):
     passthrough: _passthrough_config
 
 
+class _iam_config(TypedDict, total=False):
+    load_aws_managed_policies: bool
+
+
 DefaultConfig = TypedDict(
     "DefaultConfig",
-    {"batch": _docker_config, "core": _core_config, "lambda": _docker_config},
+    {
+        "batch": _docker_config,
+        "core": _core_config,
+        "lambda": _docker_config,
+        "iam": _iam_config,
+    },
     total=False,
 )
 
@@ -26,6 +35,7 @@ default_user_config: DefaultConfig = {
     "batch": {"use_docker": True},
     "lambda": {"use_docker": True},
     "core": {"mock_credentials": True, "passthrough": {"urls": [], "services": []}},
+    "iam": {"load_aws_managed_policies": False},
 }
 
 
diff --git a/moto/core/decorator.py b/moto/core/decorator.py
index 11d6aab75..b74c37c9f 100644
--- a/moto/core/decorator.py
+++ b/moto/core/decorator.py
@@ -29,7 +29,7 @@ def mock_aws(
     clss = (
         ServerModeMockAWS
         if settings.TEST_SERVER_MODE
-        else (ProxyModeMockAWS if settings.test_proxy_mode() else MockAWS)
+        else (ProxyModeMockAWS if settings.is_test_proxy_mode() else MockAWS)
     )
     if func is not None:
         return clss().__call__(func=func)
diff --git a/moto/core/versions.py b/moto/core/versions.py
index 07769fed6..cc2a6dba6 100644
--- a/moto/core/versions.py
+++ b/moto/core/versions.py
@@ -13,5 +13,9 @@ def is_responses_0_17_x() -> bool:
     return LooseVersion(RESPONSES_VERSION) >= LooseVersion("0.17.0")
 
 
+def is_werkzeug_2_0_x_or_older() -> bool:
+    return LooseVersion(WERKZEUG_VERSION) < LooseVersion("2.1.0")
+
+
 def is_werkzeug_2_3_x() -> bool:
     return LooseVersion(WERKZEUG_VERSION) >= LooseVersion("2.3.0")
diff --git a/moto/databrew/models.py b/moto/databrew/models.py
index 6b14676b1..e96c53c88 100644
--- a/moto/databrew/models.py
+++ b/moto/databrew/models.py
@@ -5,7 +5,8 @@ from copy import deepcopy
 from datetime import datetime
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import camelcase_to_pascal, underscores_to_camelcase
 from moto.utilities.paginator import paginate
 
diff --git a/moto/datapipeline/models.py b/moto/datapipeline/models.py
index 535beb4a5..3ea28e3b2 100644
--- a/moto/datapipeline/models.py
+++ b/moto/datapipeline/models.py
@@ -2,7 +2,8 @@ import datetime
 from collections import OrderedDict
 from typing import Any, Dict, Iterable, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.utils import utcnow
 
 from .utils import get_random_pipeline_id, remove_capitalization_of_dict_keys
diff --git a/moto/datasync/models.py b/moto/datasync/models.py
index c66691818..b44f1033e 100644
--- a/moto/datasync/models.py
+++ b/moto/datasync/models.py
@@ -1,7 +1,8 @@
 from collections import OrderedDict
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 
 from .exceptions import InvalidRequestException
 
diff --git a/moto/dax/models.py b/moto/dax/models.py
index ec573008c..cca90b813 100644
--- a/moto/dax/models.py
+++ b/moto/dax/models.py
@@ -1,7 +1,8 @@
 """DAXBackend class with methods for supported APIs."""
 from typing import Any, Dict, Iterable, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 from moto.moto_api._internal import mock_random as random
 from moto.moto_api._internal.managed_state_model import ManagedState
diff --git a/moto/dms/models.py b/moto/dms/models.py
index 51bad6c7a..e246de65d 100644
--- a/moto/dms/models.py
+++ b/moto/dms/models.py
@@ -1,7 +1,8 @@
 from datetime import datetime
 from typing import Any, Dict, Iterable, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import utcnow
 
 from .exceptions import (
diff --git a/moto/ds/models.py b/moto/ds/models.py
index 1842643b7..3ff10dd4c 100644
--- a/moto/ds/models.py
+++ b/moto/ds/models.py
@@ -2,7 +2,8 @@
 from datetime import datetime, timezone
 from typing import Any, Dict, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.ds.exceptions import (
     ClientException,
     DirectoryLimitExceededException,
diff --git a/moto/dynamodb/models/__init__.py b/moto/dynamodb/models/__init__.py
index 0f289060e..1cf919be8 100644
--- a/moto/dynamodb/models/__init__.py
+++ b/moto/dynamodb/models/__init__.py
@@ -3,7 +3,7 @@ import re
 from collections import OrderedDict
 from typing import Any, Dict, List, Optional, Set, Tuple, Union
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 from moto.core.exceptions import JsonRESTError
 from moto.core.utils import unix_time
 from moto.dynamodb.comparisons import get_expected, get_filter_expression
diff --git a/moto/dynamodb/models/dynamo_type.py b/moto/dynamodb/models/dynamo_type.py
index 21b368355..82f737556 100644
--- a/moto/dynamodb/models/dynamo_type.py
+++ b/moto/dynamodb/models/dynamo_type.py
@@ -6,7 +6,7 @@ from typing import Any, Dict, List, Optional, Union
 from boto3.dynamodb.types import TypeDeserializer, TypeSerializer
 from botocore.utils import merge_dicts
 
-from moto.core import BaseModel
+from moto.core.common_models import BaseModel
 from moto.dynamodb.exceptions import (
     EmptyKeyAttributeException,
     IncorrectDataType,
diff --git a/moto/dynamodb/models/table.py b/moto/dynamodb/models/table.py
index 06b8a3d8c..40b42efe5 100644
--- a/moto/dynamodb/models/table.py
+++ b/moto/dynamodb/models/table.py
@@ -2,7 +2,7 @@ import copy
 from collections import defaultdict
 from typing import Any, Dict, Iterator, List, Optional, Sequence, Tuple
 
-from moto.core import BaseModel, CloudFormationModel
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.utils import unix_time, unix_time_millis, utcnow
 from moto.dynamodb.comparisons import get_expected, get_filter_expression
 from moto.dynamodb.exceptions import (
diff --git a/moto/dynamodb_v20111205/models.py b/moto/dynamodb_v20111205/models.py
index e5a3a309d..97eb95379 100644
--- a/moto/dynamodb_v20111205/models.py
+++ b/moto/dynamodb_v20111205/models.py
@@ -2,7 +2,8 @@ import json
 from collections import OrderedDict, defaultdict
 from typing import Any, Dict, Iterable, List, Optional, Tuple, Union
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time, utcnow
 
 from .comparisons import get_comparison_func
diff --git a/moto/dynamodbstreams/models.py b/moto/dynamodbstreams/models.py
index 3e5cc5279..b69ec43d4 100644
--- a/moto/dynamodbstreams/models.py
+++ b/moto/dynamodbstreams/models.py
@@ -3,7 +3,8 @@ import json
 import os
 from typing import Any, Dict, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.dynamodb.models import DynamoDBBackend, dynamodb_backends
 from moto.dynamodb.models.table import StreamShard, Table
 from moto.dynamodb.models.utilities import DynamoJsonEncoder
diff --git a/moto/ebs/models.py b/moto/ebs/models.py
index 3b39c4371..a09438086 100644
--- a/moto/ebs/models.py
+++ b/moto/ebs/models.py
@@ -2,7 +2,8 @@
 
 from typing import Any, Dict, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 from moto.ec2.models import EC2Backend, ec2_backends
 from moto.ec2.models.elastic_block_store import Snapshot
diff --git a/moto/ec2/models/__init__.py b/moto/ec2/models/__init__.py
index bd448918a..4f7d7cbfb 100644
--- a/moto/ec2/models/__init__.py
+++ b/moto/ec2/models/__init__.py
@@ -1,6 +1,6 @@
 from typing import Any, Dict, List
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 
 from ..exceptions import (
     EC2ClientError,
diff --git a/moto/ec2/models/core.py b/moto/ec2/models/core.py
index f850ce75c..0ecc94dcf 100644
--- a/moto/ec2/models/core.py
+++ b/moto/ec2/models/core.py
@@ -1,6 +1,6 @@
 from typing import Any, Dict, List, Optional
 
-from moto.core import BaseModel
+from moto.core.common_models import BaseModel
 
 from ..exceptions import FilterNotImplementedError
 
diff --git a/moto/ec2/models/elastic_block_store.py b/moto/ec2/models/elastic_block_store.py
index ac094d757..2416cad4c 100644
--- a/moto/ec2/models/elastic_block_store.py
+++ b/moto/ec2/models/elastic_block_store.py
@@ -1,6 +1,6 @@
 from typing import Any, Dict, Iterable, List, Optional, Set
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 from moto.packages.boto.ec2.blockdevicemapping import BlockDeviceType
 
 from ..exceptions import (
diff --git a/moto/ec2/models/elastic_ip_addresses.py b/moto/ec2/models/elastic_ip_addresses.py
index 3a3677e91..5252e7eb1 100644
--- a/moto/ec2/models/elastic_ip_addresses.py
+++ b/moto/ec2/models/elastic_ip_addresses.py
@@ -1,6 +1,6 @@
 from typing import Any, Dict, List, Optional
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 
 from ..exceptions import (
     FilterNotImplementedError,
diff --git a/moto/ec2/models/elastic_network_interfaces.py b/moto/ec2/models/elastic_network_interfaces.py
index 74e022041..d1e4ec9b3 100644
--- a/moto/ec2/models/elastic_network_interfaces.py
+++ b/moto/ec2/models/elastic_network_interfaces.py
@@ -1,6 +1,6 @@
 from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 
 from ..exceptions import InvalidNetworkAttachmentIdError, InvalidNetworkInterfaceIdError
 from .core import TaggedEC2Resource
diff --git a/moto/ec2/models/fleets.py b/moto/ec2/models/fleets.py
index 611e964ab..19dd57da5 100644
--- a/moto/ec2/models/fleets.py
+++ b/moto/ec2/models/fleets.py
@@ -158,7 +158,7 @@ class Fleet(TaggedEC2Resource):
     def create_on_demand_requests(self, weight_to_add: float) -> None:
         weight_map, added_weight = self.get_launch_spec_counts(weight_to_add)
         for launch_spec, count in weight_map.items():
-            reservation = self.ec2_backend.add_instances(
+            reservation = self.ec2_backend.run_instances(
                 image_id=launch_spec.image_id,
                 count=count,
                 instance_type=launch_spec.instance_type,
diff --git a/moto/ec2/models/flow_logs.py b/moto/ec2/models/flow_logs.py
index b4db5b103..810a200c7 100644
--- a/moto/ec2/models/flow_logs.py
+++ b/moto/ec2/models/flow_logs.py
@@ -1,7 +1,7 @@
 import itertools
 from typing import Any, Dict, List, Optional, Tuple
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 
 from ..exceptions import (
     FlowLogAlreadyExists,
diff --git a/moto/ec2/models/iam_instance_profile.py b/moto/ec2/models/iam_instance_profile.py
index ef547325e..ad8b75156 100644
--- a/moto/ec2/models/iam_instance_profile.py
+++ b/moto/ec2/models/iam_instance_profile.py
@@ -1,6 +1,6 @@
 from typing import Any, Dict, List, Optional, Tuple
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 from moto.ec2.models.instances import Instance
 from moto.iam.models import InstanceProfile
 
diff --git a/moto/ec2/models/instances.py b/moto/ec2/models/instances.py
index f76ebce45..5dd1961ac 100644
--- a/moto/ec2/models/instances.py
+++ b/moto/ec2/models/instances.py
@@ -1,11 +1,10 @@
 import contextlib
 import copy
-import warnings
 from collections import OrderedDict
 from typing import Any, Dict, ItemsView, List, Optional, Set, Tuple
 
 from moto import settings
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 from moto.core.utils import camelcase_to_underscores, utcnow
 from moto.ec2.models.elastic_network_interfaces import NetworkInterface
 from moto.ec2.models.fleets import Fleet
@@ -139,15 +138,6 @@ class Instance(TaggedEC2Resource, BotoInstance, CloudFormationModel):
 
         amis = self.ec2_backend.describe_images(filters={"image-id": self.image_id})
         ami = amis[0] if amis else None
-        if ami is None:
-            warnings.warn(
-                f"Could not find AMI with image-id:{self.image_id}, "
-                "in the near future this will "
-                "cause an error.\n"
-                "Use ec2_backend.describe_images() to "
-                "find suitable image for your test",
-                PendingDeprecationWarning,
-            )
 
         self.platform = ami.platform if ami else None
         self.virtualization_type = ami.virtualization_type if ami else "paravirtual"
@@ -300,7 +290,7 @@ class Instance(TaggedEC2Resource, BotoInstance, CloudFormationModel):
             for group_id in security_group_ids
         ]
 
-        reservation = ec2_backend.add_instances(
+        reservation = ec2_backend.run_instances(
             image_id=properties["ImageId"],
             user_data=properties.get("UserData"),
             count=1,
@@ -622,7 +612,7 @@ class InstanceBackend:
                 return instance
         raise InvalidInstanceIdError(instance_id)
 
-    def add_instances(
+    def run_instances(
         self,
         image_id: str,
         count: int,
@@ -630,6 +620,18 @@ class InstanceBackend:
         security_group_names: List[str],
         **kwargs: Any,
     ) -> Reservation:
+        """
+        The Placement-parameter is validated to verify the availability-zone exists for the current region.
+
+        The InstanceType-parameter can be validated, to see if it is a known instance-type.
+        Enable this validation by setting the environment variable `MOTO_EC2_ENABLE_INSTANCE_TYPE_VALIDATION=true`
+
+        The ImageId-parameter can be validated, to see if it is a known AMI.
+        Enable this validation by setting the environment variable `MOTO_ENABLE_AMI_VALIDATION=true`
+
+        The KeyPair-parameter can be validated, to see if it is a known key-pair.
+        Enable this validation by setting the environment variable `MOTO_ENABLE_KEYPAIR_VALIDATION=true`
+        """
         location_type = "availability-zone" if kwargs.get("placement") else "region"
         default_region = "us-east-1"
         if settings.ENABLE_KEYPAIR_VALIDATION:
@@ -737,23 +739,6 @@ class InstanceBackend:
 
         return new_reservation
 
-    def run_instances(self) -> None:
-        """
-        The Placement-parameter is validated to verify the availability-zone exists for the current region.
-
-        The InstanceType-parameter can be validated, to see if it is a known instance-type.
-        Enable this validation by setting the environment variable `MOTO_EC2_ENABLE_INSTANCE_TYPE_VALIDATION=true`
-
-        The ImageId-parameter can be validated, to see if it is a known AMI.
-        Enable this validation by setting the environment variable `MOTO_ENABLE_AMI_VALIDATION=true`
-
-        The KeyPair-parameter can be validated, to see if it is a known key-pair.
-        Enable this validation by setting the environment variable `MOTO_ENABLE_KEYPAIR_VALIDATION=true`
-        """
-        # Logic resides in add_instances
-        # Fake method here to make implementation coverage script aware that this method is implemented
-        pass
-
     def start_instances(
         self, instance_ids: List[str]
     ) -> List[Tuple[Instance, InstanceState]]:
diff --git a/moto/ec2/models/internet_gateways.py b/moto/ec2/models/internet_gateways.py
index a12f314d5..79794ede2 100644
--- a/moto/ec2/models/internet_gateways.py
+++ b/moto/ec2/models/internet_gateways.py
@@ -1,6 +1,6 @@
 from typing import Any, Dict, List, Optional
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 
 from ..exceptions import (
     DependencyViolationError,
diff --git a/moto/ec2/models/launch_templates.py b/moto/ec2/models/launch_templates.py
index 47243440a..e76df70d6 100644
--- a/moto/ec2/models/launch_templates.py
+++ b/moto/ec2/models/launch_templates.py
@@ -1,7 +1,7 @@
 from collections import OrderedDict
 from typing import Any, Dict, List, Optional
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 
 from ..exceptions import (
     InvalidLaunchTemplateNameAlreadyExistsError,
diff --git a/moto/ec2/models/nat_gateways.py b/moto/ec2/models/nat_gateways.py
index 7fd552769..33eefac7c 100644
--- a/moto/ec2/models/nat_gateways.py
+++ b/moto/ec2/models/nat_gateways.py
@@ -1,6 +1,6 @@
 from typing import Any, Dict, List, Optional
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds, utcnow
 
 from ..utils import random_nat_gateway_id, random_private_ip
diff --git a/moto/ec2/models/route_tables.py b/moto/ec2/models/route_tables.py
index 83a4c2c15..de4eb383e 100644
--- a/moto/ec2/models/route_tables.py
+++ b/moto/ec2/models/route_tables.py
@@ -1,7 +1,7 @@
 import ipaddress
 from typing import Any, Dict, List, Optional, Set
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 from moto.ec2.models.carrier_gateways import CarrierGateway
 from moto.ec2.models.elastic_network_interfaces import NetworkInterface
 from moto.ec2.models.instances import Instance
diff --git a/moto/ec2/models/security_groups.py b/moto/ec2/models/security_groups.py
index 36dc25564..afda023c0 100644
--- a/moto/ec2/models/security_groups.py
+++ b/moto/ec2/models/security_groups.py
@@ -4,7 +4,7 @@ import json
 from collections import defaultdict
 from typing import Any, Dict, List, Optional, Tuple
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 from moto.core.utils import aws_api_matches
 
 from ..exceptions import (
diff --git a/moto/ec2/models/spot_requests.py b/moto/ec2/models/spot_requests.py
index f1fde656c..1dbb07799 100644
--- a/moto/ec2/models/spot_requests.py
+++ b/moto/ec2/models/spot_requests.py
@@ -125,7 +125,7 @@ class SpotInstanceRequest(TaggedEC2Resource):
             return super().get_filter_value(filter_name, "DescribeSpotInstanceRequests")
 
     def launch_instance(self) -> "Instance":
-        reservation = self.ec2_backend.add_instances(
+        reservation = self.ec2_backend.run_instances(
             image_id=self.launch_specification.image_id,
             count=1,
             user_data=self.user_data,
diff --git a/moto/ec2/models/subnets.py b/moto/ec2/models/subnets.py
index 1d99d484f..8225d7c57 100644
--- a/moto/ec2/models/subnets.py
+++ b/moto/ec2/models/subnets.py
@@ -3,7 +3,7 @@ import itertools
 from collections import defaultdict
 from typing import TYPE_CHECKING, Any, Dict, List, Optional, Set, Tuple
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 
 if TYPE_CHECKING:
     from moto.ec2.models.instances import Instance
diff --git a/moto/ec2/models/transit_gateway.py b/moto/ec2/models/transit_gateway.py
index 417f61802..e247d13ff 100644
--- a/moto/ec2/models/transit_gateway.py
+++ b/moto/ec2/models/transit_gateway.py
@@ -1,6 +1,6 @@
 from typing import Any, Dict, List, Optional
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds, utcnow
 from moto.utilities.utils import filter_resources, merge_multiple_dicts
 
diff --git a/moto/ec2/models/vpc_peering_connections.py b/moto/ec2/models/vpc_peering_connections.py
index 5d430f0f1..ad9423a7c 100644
--- a/moto/ec2/models/vpc_peering_connections.py
+++ b/moto/ec2/models/vpc_peering_connections.py
@@ -2,7 +2,7 @@ import weakref
 from collections import defaultdict
 from typing import Any, Dict, Iterator, List, Optional
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 
 from ..exceptions import (
     InvalidVPCPeeringConnectionIdError,
diff --git a/moto/ec2/models/vpc_service_configuration.py b/moto/ec2/models/vpc_service_configuration.py
index 2cafb16b8..f8157a2c4 100644
--- a/moto/ec2/models/vpc_service_configuration.py
+++ b/moto/ec2/models/vpc_service_configuration.py
@@ -1,6 +1,6 @@
 from typing import Any, Dict, List, Optional
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 from moto.moto_api._internal import mock_random
 
 from ..exceptions import UnknownVpcEndpointService
diff --git a/moto/ec2/models/vpcs.py b/moto/ec2/models/vpcs.py
index 41a9ad72d..4c4b67f5f 100644
--- a/moto/ec2/models/vpcs.py
+++ b/moto/ec2/models/vpcs.py
@@ -5,7 +5,7 @@ from collections import defaultdict
 from operator import itemgetter
 from typing import Any, Dict, List, Optional
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 
 from ..exceptions import (
     CidrLimitExceeded,
diff --git a/moto/ec2/models/vpn_gateway.py b/moto/ec2/models/vpn_gateway.py
index 524ebfa6c..edb65287f 100644
--- a/moto/ec2/models/vpn_gateway.py
+++ b/moto/ec2/models/vpn_gateway.py
@@ -1,6 +1,6 @@
 from typing import Any, Dict, List, Optional
 
-from moto.core import CloudFormationModel
+from moto.core.common_models import CloudFormationModel
 
 from ..exceptions import InvalidVpnGatewayAttachmentError, InvalidVpnGatewayIdError
 from ..utils import generic_filter, random_vpn_gateway_id
diff --git a/moto/ec2/models/windows.py b/moto/ec2/models/windows.py
index 5ea80be62..e8f66c68e 100644
--- a/moto/ec2/models/windows.py
+++ b/moto/ec2/models/windows.py
@@ -1,4 +1,4 @@
-from moto.core import BaseModel
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal import mock_random as random
 
 
diff --git a/moto/ec2/responses/instances.py b/moto/ec2/responses/instances.py
index f1ccff666..479cc3edb 100644
--- a/moto/ec2/responses/instances.py
+++ b/moto/ec2/responses/instances.py
@@ -103,7 +103,7 @@ class InstanceResponse(EC2BaseResponse):
         iam_instance_profile_name = kwargs.get("iam_instance_profile_name")
         iam_instance_profile_arn = kwargs.get("iam_instance_profile_arn")
         if iam_instance_profile_arn or iam_instance_profile_name:
-            # Validate the profile exists, before we error_on_dryrun and add_instances
+            # Validate the profile exists, before we error_on_dryrun and run_instances
             filter_iam_instance_profiles(
                 self.current_account,
                 iam_instance_profile_arn=iam_instance_profile_arn,
@@ -112,7 +112,7 @@ class InstanceResponse(EC2BaseResponse):
 
         self.error_on_dryrun()
 
-        new_reservation = self.ec2_backend.add_instances(
+        new_reservation = self.ec2_backend.run_instances(
             image_id, min_count, user_data, security_group_names, **kwargs
         )
         if iam_instance_profile_name:
diff --git a/moto/ec2instanceconnect/models.py b/moto/ec2instanceconnect/models.py
index 8c5fb8187..62422d92f 100644
--- a/moto/ec2instanceconnect/models.py
+++ b/moto/ec2instanceconnect/models.py
@@ -1,6 +1,6 @@
 import json
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 
 
 class Ec2InstanceConnectBackend(BaseBackend):
diff --git a/moto/ecr/models.py b/moto/ecr/models.py
index bb69637ee..0f4c0df09 100644
--- a/moto/ecr/models.py
+++ b/moto/ecr/models.py
@@ -7,7 +7,8 @@ from typing import Any, Dict, Iterable, List, Optional, Tuple
 
 from botocore.exceptions import ParamValidationError
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.utils import iso_8601_datetime_without_milliseconds, utcnow
 from moto.ecr.exceptions import (
     ImageAlreadyExistsException,
diff --git a/moto/ecs/models.py b/moto/ecs/models.py
index 72363f5bb..d983f8551 100644
--- a/moto/ecs/models.py
+++ b/moto/ecs/models.py
@@ -5,7 +5,8 @@ from os import getenv
 from typing import Any, Dict, Iterator, List, Optional, Tuple
 
 from moto import settings
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.exceptions import JsonRESTError
 from moto.core.utils import pascal_to_camelcase, remap_nested_keys, unix_time
 from moto.ec2 import ec2_backends
diff --git a/moto/efs/models.py b/moto/efs/models.py
index 88a31ebdd..33df67491 100644
--- a/moto/efs/models.py
+++ b/moto/efs/models.py
@@ -9,7 +9,8 @@ import time
 from copy import deepcopy
 from typing import Any, Dict, Iterator, List, Optional, Set, Tuple, Union
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.utils import camelcase_to_underscores, underscores_to_camelcase
 from moto.ec2 import ec2_backends
 from moto.ec2.exceptions import InvalidSubnetIdError
diff --git a/moto/eks/models.py b/moto/eks/models.py
index c85c81b2f..102030742 100644
--- a/moto/eks/models.py
+++ b/moto/eks/models.py
@@ -1,7 +1,7 @@
 from datetime import datetime
 from typing import Any, Dict, Iterator, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 from moto.core.utils import iso_8601_datetime_without_milliseconds
 from moto.moto_api._internal import mock_random as random
 
diff --git a/moto/elasticache/models.py b/moto/elasticache/models.py
index da3978895..b2cd0790f 100644
--- a/moto/elasticache/models.py
+++ b/moto/elasticache/models.py
@@ -1,6 +1,7 @@
 from typing import Any, Dict, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import utcnow
 
 from ..moto_api._internal import mock_random
diff --git a/moto/elasticbeanstalk/models.py b/moto/elasticbeanstalk/models.py
index 8cdb1dfa9..e2a92f105 100644
--- a/moto/elasticbeanstalk/models.py
+++ b/moto/elasticbeanstalk/models.py
@@ -1,7 +1,8 @@
 import weakref
 from typing import Dict, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 
 from .exceptions import (
     ApplicationNotFound,
diff --git a/moto/elastictranscoder/models.py b/moto/elastictranscoder/models.py
index c5d416cd6..8997c3ca8 100644
--- a/moto/elastictranscoder/models.py
+++ b/moto/elastictranscoder/models.py
@@ -1,7 +1,8 @@
 import string
 from typing import Any, Dict, List, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal import mock_random as random
 
 
diff --git a/moto/elb/models.py b/moto/elb/models.py
index 9c1fba044..0d829fd19 100644
--- a/moto/elb/models.py
+++ b/moto/elb/models.py
@@ -2,7 +2,8 @@ import datetime
 from collections import OrderedDict
 from typing import Any, Dict, Iterable, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.ec2.exceptions import InvalidInstanceIdError
 from moto.ec2.models import ec2_backends
 from moto.moto_api._internal import mock_random
diff --git a/moto/elbv2/models.py b/moto/elbv2/models.py
index 4b3cf67ea..029a4dc26 100644
--- a/moto/elbv2/models.py
+++ b/moto/elbv2/models.py
@@ -5,7 +5,8 @@ from typing import Any, Dict, Iterable, List, Optional
 from botocore.exceptions import ParamValidationError
 from jinja2 import Template
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.exceptions import RESTError
 from moto.core.utils import iso_8601_datetime_with_milliseconds
 from moto.ec2.models import ec2_backends
diff --git a/moto/emr/models.py b/moto/emr/models.py
index 863c2b0a7..fa0d7100e 100644
--- a/moto/emr/models.py
+++ b/moto/emr/models.py
@@ -1,10 +1,10 @@
-import warnings
 from datetime import datetime, timedelta, timezone
 from typing import Any, Dict, List, Optional, Tuple
 
 from dateutil.parser import parse as dtparse
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.emr.exceptions import (
     InvalidRequestException,
     ResourceNotFoundException,
@@ -436,7 +436,7 @@ class ElasticMapReduceBackend(BaseBackend):
             result_groups.append(group)
         return result_groups
 
-    def add_instances(
+    def run_instances(
         self,
         cluster_id: str,
         instances: Dict[str, Any],
@@ -444,7 +444,7 @@ class ElasticMapReduceBackend(BaseBackend):
     ) -> None:
         cluster = self.clusters[cluster_id]
         instances["is_instance_type_default"] = not instances.get("instance_type")
-        response = self.ec2_backend.add_instances(
+        response = self.ec2_backend.run_instances(
             EXAMPLE_AMI_ID, instances["instance_count"], "", [], **instances
         )
         for instance in response.instances:
@@ -648,13 +648,6 @@ class ElasticMapReduceBackend(BaseBackend):
         try:
             subnet = self.ec2_backend.get_subnet(ec2_subnet_id)
         except InvalidSubnetIdError:
-            warnings.warn(
-                f"Could not find Subnet with id: {ec2_subnet_id}\n"
-                "In the near future, this will raise an error.\n"
-                "Use ec2.describe_subnets() to find a suitable id "
-                "for your test.",
-                PendingDeprecationWarning,
-            )
             return default_return_value
 
         manager = EmrSecurityGroupManager(self.ec2_backend, subnet.vpc_id)
diff --git a/moto/emr/responses.py b/moto/emr/responses.py
index f047743ec..76df29203 100644
--- a/moto/emr/responses.py
+++ b/moto/emr/responses.py
@@ -402,7 +402,7 @@ class ElasticMapReduceResponse(BaseResponse):
                 cluster.id, instance_groups
             )
             for i in range(0, len(instance_group_result)):
-                self.backend.add_instances(
+                self.backend.run_instances(
                     cluster.id, instance_groups[i], instance_group_result[i]
                 )
 
diff --git a/moto/emrcontainers/models.py b/moto/emrcontainers/models.py
index 0211e432d..653d8de04 100644
--- a/moto/emrcontainers/models.py
+++ b/moto/emrcontainers/models.py
@@ -3,7 +3,8 @@ import re
 from datetime import datetime
 from typing import Any, Dict, Iterator, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import iso_8601_datetime_without_milliseconds
 
 from ..config.exceptions import ValidationException
diff --git a/moto/emrserverless/models.py b/moto/emrserverless/models.py
index fab76443d..ca753564e 100644
--- a/moto/emrserverless/models.py
+++ b/moto/emrserverless/models.py
@@ -4,7 +4,8 @@ import re
 from datetime import datetime
 from typing import Any, Dict, Iterator, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import iso_8601_datetime_without_milliseconds
 from moto.emrcontainers.utils import get_partition, paginated_list
 
diff --git a/moto/es/models.py b/moto/es/models.py
index fe18e1e4b..56b557a55 100644
--- a/moto/es/models.py
+++ b/moto/es/models.py
@@ -1,6 +1,7 @@
 from typing import Any, Dict, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal import mock_random
 
 from .exceptions import DomainNotFound
diff --git a/moto/events/models.py b/moto/events/models.py
index 6722d1b35..11d7c62bd 100644
--- a/moto/events/models.py
+++ b/moto/events/models.py
@@ -13,7 +13,8 @@ from typing import Any, Dict, List, Optional, Tuple
 import requests
 
 from moto import settings
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.exceptions import JsonRESTError
 from moto.core.utils import (
     iso_8601_datetime_without_milliseconds,
diff --git a/moto/firehose/models.py b/moto/firehose/models.py
index f22aeff87..e8c35a85a 100644
--- a/moto/firehose/models.py
+++ b/moto/firehose/models.py
@@ -22,7 +22,8 @@ from typing import Any, Dict, List, Optional, Tuple
 
 import requests
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import utcnow
 from moto.firehose.exceptions import (
     ConcurrentModificationException,
diff --git a/moto/forecast/models.py b/moto/forecast/models.py
index a1fe901f8..ca4a51b45 100644
--- a/moto/forecast/models.py
+++ b/moto/forecast/models.py
@@ -2,7 +2,7 @@ import re
 from datetime import datetime
 from typing import Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 from moto.core.utils import iso_8601_datetime_without_milliseconds
 
 from .exceptions import (
diff --git a/moto/glacier/models.py b/moto/glacier/models.py
index e97d636e9..38608e385 100644
--- a/moto/glacier/models.py
+++ b/moto/glacier/models.py
@@ -2,7 +2,8 @@ import datetime
 import hashlib
 from typing import Any, Dict, List, Optional, Union
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.exceptions import JsonRESTError
 from moto.utilities.utils import md5_hash
 
diff --git a/moto/glue/models.py b/moto/glue/models.py
index 6a9ae31c4..4a8c076c1 100644
--- a/moto/glue/models.py
+++ b/moto/glue/models.py
@@ -5,7 +5,8 @@ from collections import OrderedDict
 from datetime import datetime
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time, utcnow
 from moto.moto_api._internal import mock_random
 from moto.moto_api._internal.managed_state_model import ManagedState
diff --git a/moto/greengrass/models.py b/moto/greengrass/models.py
index 84ac09028..1910c652e 100644
--- a/moto/greengrass/models.py
+++ b/moto/greengrass/models.py
@@ -4,7 +4,8 @@ from collections import OrderedDict
 from datetime import datetime
 from typing import Any, Dict, Iterable, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds, utcnow
 from moto.moto_api._internal import mock_random
 
diff --git a/moto/guardduty/models.py b/moto/guardduty/models.py
index 0bf50d94b..8e02b95fb 100644
--- a/moto/guardduty/models.py
+++ b/moto/guardduty/models.py
@@ -1,7 +1,8 @@
 from datetime import datetime
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal import mock_random
 
 from .exceptions import DetectorNotFoundException, FilterNotFoundException
diff --git a/moto/iam/models.py b/moto/iam/models.py
index 7d2c05430..b9f1ecdc9 100644
--- a/moto/iam/models.py
+++ b/moto/iam/models.py
@@ -1,5 +1,4 @@
 import base64
-import copy
 import json
 import os
 import re
@@ -12,13 +11,9 @@ from cryptography import x509
 from cryptography.hazmat.backends import default_backend
 from jinja2 import Template
 
-from moto.core import (
-    DEFAULT_ACCOUNT_ID,
-    BackendDict,
-    BaseBackend,
-    BaseModel,
-    CloudFormationModel,
-)
+from moto.core import DEFAULT_ACCOUNT_ID
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.exceptions import RESTError
 from moto.core.utils import (
     iso_8601_datetime_with_milliseconds,
@@ -31,6 +26,7 @@ from moto.iam.policy_validation import (
     IAMTrustPolicyDocumentValidator,
 )
 from moto.moto_api._internal import mock_random as random
+from moto.settings import load_iam_aws_managed_policies
 from moto.utilities.utils import md5_hash
 
 from ..utilities.tagging_service import TaggingService
@@ -1795,12 +1791,7 @@ def filter_items_with_path_prefix(
 
 
 class IAMBackend(BaseBackend):
-    def __init__(
-        self,
-        region_name: str,
-        account_id: str,
-        aws_policies: Optional[List[ManagedPolicy]] = None,
-    ):
+    def __init__(self, region_name: str, account_id: str):
         super().__init__(region_name=region_name, account_id=account_id)
         self.instance_profiles: Dict[str, InstanceProfile] = {}
         self.roles: Dict[str, Role] = {}
@@ -1808,7 +1799,7 @@ class IAMBackend(BaseBackend):
         self.groups: Dict[str, Group] = {}
         self.users: Dict[str, User] = {}
         self.credential_report: Optional[bool] = None
-        self.aws_managed_policies = aws_policies or self._init_aws_policies()
+        self.aws_managed_policies = self._init_aws_policies()
         self.managed_policies = self._init_managed_policies()
         self.account_aliases: List[str] = []
         self.saml_providers: Dict[str, SAMLProvider] = {}
@@ -1825,6 +1816,8 @@ class IAMBackend(BaseBackend):
         self.initialize_service_roles()
 
     def _init_aws_policies(self) -> List[ManagedPolicy]:
+        if not load_iam_aws_managed_policies():
+            return []
         # AWS defines some of its own managed policies
         # we periodically import them via `make aws_managed_policies`
         aws_managed_policies_data_parsed = json.loads(aws_managed_policies_data)
@@ -1834,15 +1827,7 @@ class IAMBackend(BaseBackend):
         ]
 
     def _init_managed_policies(self) -> Dict[str, ManagedPolicy]:
-        return dict((p.arn, copy.deepcopy(p)) for p in self.aws_managed_policies)
-
-    def reset(self) -> None:
-        region_name = self.region_name
-        account_id = self.account_id
-        # Do not reset these policies, as they take a long time to load
-        aws_policies = self.aws_managed_policies
-        self.__dict__ = {}
-        IAMBackend.__init__(self, region_name, account_id, aws_policies)
+        return dict((p.arn, p) for p in self.aws_managed_policies)
 
     def initialize_service_roles(self) -> None:
         pass
diff --git a/moto/identitystore/models.py b/moto/identitystore/models.py
index 8ec0d2613..d1991d065 100644
--- a/moto/identitystore/models.py
+++ b/moto/identitystore/models.py
@@ -1,9 +1,9 @@
-import warnings
 from typing import TYPE_CHECKING, Any, Dict, List, NamedTuple, Optional, Tuple
 
 from botocore.exceptions import ParamValidationError
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BaseBackend
+from moto.core.models import BackendDict
 from moto.moto_api._internal import mock_random
 from moto.utilities.paginator import paginate
 
@@ -134,6 +134,9 @@ class IdentityStoreBackend(BaseBackend):
     def get_group_id(
         self, identity_store_id: str, alternate_identifier: Dict[str, Any]
     ) -> Tuple[str, str]:
+        """
+        The ExternalId alternate identifier is not yet implemented
+        """
         identity_store = self.__get_identity_store(identity_store_id)
         if "UniqueAttribute" in alternate_identifier:
             if (
@@ -147,8 +150,6 @@ class IdentityStoreBackend(BaseBackend):
                         == alternate_identifier["UniqueAttribute"]["AttributeValue"]
                     ):
                         return g.GroupId, identity_store_id
-        elif "ExternalId" in alternate_identifier:
-            warnings.warn("ExternalId has not been implemented.")
 
         raise ResourceNotFoundException(
             message="GROUP not found.", resource_type="GROUP"
diff --git a/moto/inspector2/models.py b/moto/inspector2/models.py
index eba170f7d..53de199c8 100644
--- a/moto/inspector2/models.py
+++ b/moto/inspector2/models.py
@@ -1,7 +1,8 @@
 import json
 from typing import Any, Dict, Iterable, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 from moto.moto_api._internal import mock_random
 from moto.utilities.tagging_service import TaggingService
diff --git a/moto/instance_metadata/models.py b/moto/instance_metadata/models.py
index fd3fd7243..5a3d82c17 100644
--- a/moto/instance_metadata/models.py
+++ b/moto/instance_metadata/models.py
@@ -1,4 +1,4 @@
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 
 
 class InstanceMetadataBackend(BaseBackend):
diff --git a/moto/iot/models.py b/moto/iot/models.py
index 359dd5a83..80d8498e4 100644
--- a/moto/iot/models.py
+++ b/moto/iot/models.py
@@ -11,7 +11,8 @@ from cryptography.hazmat.backends import default_backend
 from cryptography.hazmat.primitives import hashes, serialization
 from cryptography.hazmat.primitives.asymmetric import rsa
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import utcnow
 from moto.moto_api._internal import mock_random as random
 from moto.utilities.paginator import paginate
diff --git a/moto/iotdata/models.py b/moto/iotdata/models.py
index f149bfbfa..481da8f65 100644
--- a/moto/iotdata/models.py
+++ b/moto/iotdata/models.py
@@ -4,7 +4,8 @@ from typing import Any, Dict, List, Optional, Tuple
 
 import jsondiff
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import merge_dicts
 from moto.iot.models import IoTBackend, iot_backends
 
diff --git a/moto/ivs/models.py b/moto/ivs/models.py
index e9d71e441..344d1f12d 100644
--- a/moto/ivs/models.py
+++ b/moto/ivs/models.py
@@ -1,7 +1,7 @@
 """IVSBackend class with methods for supported APIs."""
 from typing import Any, Dict, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 from moto.ivs.exceptions import ResourceNotFoundException
 from moto.moto_api._internal import mock_random
 from moto.utilities.paginator import paginate
diff --git a/moto/kinesis/models.py b/moto/kinesis/models.py
index 770dff1ac..2590ca39f 100644
--- a/moto/kinesis/models.py
+++ b/moto/kinesis/models.py
@@ -9,7 +9,8 @@ from gzip import GzipFile
 from operator import attrgetter
 from typing import Any, Dict, Iterable, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.utils import unix_time, utcnow
 from moto.moto_api._internal import mock_random as random
 from moto.utilities.paginator import paginate
diff --git a/moto/kinesisvideo/models.py b/moto/kinesisvideo/models.py
index 12a9b58d7..d93d69b66 100644
--- a/moto/kinesisvideo/models.py
+++ b/moto/kinesisvideo/models.py
@@ -1,6 +1,7 @@
 from typing import Any, Dict, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import utcnow
 from moto.moto_api._internal import mock_random as random
 
diff --git a/moto/kinesisvideoarchivedmedia/models.py b/moto/kinesisvideoarchivedmedia/models.py
index c3e626fc8..a4b6f2733 100644
--- a/moto/kinesisvideoarchivedmedia/models.py
+++ b/moto/kinesisvideoarchivedmedia/models.py
@@ -1,6 +1,6 @@
 from typing import Tuple
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 from moto.kinesisvideo.models import KinesisVideoBackend, kinesisvideo_backends
 from moto.sts.utils import random_session_token
 
diff --git a/moto/kms/models.py b/moto/kms/models.py
index 928a2dc88..f567a9c58 100644
--- a/moto/kms/models.py
+++ b/moto/kms/models.py
@@ -5,7 +5,8 @@ from copy import copy
 from datetime import datetime, timedelta
 from typing import Any, Dict, Iterable, List, Optional, Set, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.exceptions import JsonRESTError
 from moto.core.utils import unix_time
 from moto.moto_api._internal import mock_random
@@ -650,6 +651,7 @@ class KmsBackend(BaseBackend):
         Verify message using public key from generated private key.
 
         - grant_tokens are not implemented
+        - The MessageType-parameter DIGEST is not yet implemented
         """
         key = self.describe_key(key_id)
 
diff --git a/moto/kms/responses.py b/moto/kms/responses.py
index ef02e0f1f..4630fbead 100644
--- a/moto/kms/responses.py
+++ b/moto/kms/responses.py
@@ -2,7 +2,6 @@ import base64
 import json
 import os
 import re
-import warnings
 from typing import Any, Dict
 
 from moto.core.responses import BaseResponse
@@ -621,20 +620,13 @@ class KmsResponse(BaseResponse):
         return json.dumps({"Plaintext": response_entropy})
 
     def sign(self) -> str:
-        """https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html"""
         key_id = self._get_param("KeyId")
         message = self._get_param("Message")
         message_type = self._get_param("MessageType")
-        grant_tokens = self._get_param("GrantTokens")
         signing_algorithm = self._get_param("SigningAlgorithm")
 
         self._validate_key_id(key_id)
 
-        if grant_tokens:
-            warnings.warn(
-                "The GrantTokens-parameter is not yet implemented for client.sign()"
-            )
-
         if isinstance(message, str):
             message = message.encode("utf-8")
 
@@ -669,20 +661,9 @@ class KmsResponse(BaseResponse):
         message_type = self._get_param("MessageType")
         signature = self._get_param("Signature")
         signing_algorithm = self._get_param("SigningAlgorithm")
-        grant_tokens = self._get_param("GrantTokens")
 
         self._validate_key_id(key_id)
 
-        if grant_tokens:
-            warnings.warn(
-                "The GrantTokens-parameter is not yet implemented for client.verify()"
-            )
-
-        if message_type == "DIGEST":
-            warnings.warn(
-                "The MessageType-parameter DIGEST is not yet implemented for client.verify()"
-            )
-
         if not message_type:
             message_type = "RAW"
 
diff --git a/moto/lakeformation/models.py b/moto/lakeformation/models.py
index 1c8c79893..2fcc94e3b 100644
--- a/moto/lakeformation/models.py
+++ b/moto/lakeformation/models.py
@@ -2,7 +2,8 @@ from collections import defaultdict
 from enum import Enum
 from typing import Any, Dict, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.utilities.tagging_service import TaggingService
 
 from .exceptions import AlreadyExists, EntityNotFound, InvalidInput
diff --git a/moto/logs/models.py b/moto/logs/models.py
index ae144aaab..92638925e 100644
--- a/moto/logs/models.py
+++ b/moto/logs/models.py
@@ -2,7 +2,8 @@ from datetime import datetime, timedelta
 from gzip import compress as gzip_compress
 from typing import Any, Dict, Iterable, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.utils import unix_time_millis, utcnow
 from moto.logs.exceptions import (
     InvalidParameterException,
diff --git a/moto/managedblockchain/models.py b/moto/managedblockchain/models.py
index 7cfce11a4..79dc02cde 100644
--- a/moto/managedblockchain/models.py
+++ b/moto/managedblockchain/models.py
@@ -2,7 +2,8 @@ import datetime
 import re
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import utcnow
 
 from .exceptions import (
diff --git a/moto/mediaconnect/models.py b/moto/mediaconnect/models.py
index 1e87fe29a..18b7d3ca3 100644
--- a/moto/mediaconnect/models.py
+++ b/moto/mediaconnect/models.py
@@ -1,7 +1,8 @@
 from collections import OrderedDict
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.mediaconnect.exceptions import NotFoundException
 from moto.moto_api._internal import mock_random as random
 from moto.utilities.tagging_service import TaggingService
diff --git a/moto/medialive/models.py b/moto/medialive/models.py
index b0b720526..434623b29 100644
--- a/moto/medialive/models.py
+++ b/moto/medialive/models.py
@@ -1,7 +1,8 @@
 from collections import OrderedDict
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal import mock_random
 
 
diff --git a/moto/mediapackage/models.py b/moto/mediapackage/models.py
index 380307186..5c228069e 100644
--- a/moto/mediapackage/models.py
+++ b/moto/mediapackage/models.py
@@ -1,7 +1,8 @@
 from collections import OrderedDict
 from typing import Any, Dict, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 
 from .exceptions import ClientError
 
diff --git a/moto/mediastore/models.py b/moto/mediastore/models.py
index 44de5d7e4..4502d2d95 100644
--- a/moto/mediastore/models.py
+++ b/moto/mediastore/models.py
@@ -2,7 +2,8 @@ from collections import OrderedDict
 from datetime import date
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 
 from .exceptions import (
     ContainerNotFoundException,
diff --git a/moto/mediastoredata/models.py b/moto/mediastoredata/models.py
index 3597b3c4c..497903e22 100644
--- a/moto/mediastoredata/models.py
+++ b/moto/mediastoredata/models.py
@@ -2,7 +2,8 @@ import hashlib
 from collections import OrderedDict
 from typing import Any, Dict, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 
 from .exceptions import ClientError
 
diff --git a/moto/meteringmarketplace/models.py b/moto/meteringmarketplace/models.py
index 9c61be9fc..a1fbd6045 100644
--- a/moto/meteringmarketplace/models.py
+++ b/moto/meteringmarketplace/models.py
@@ -1,7 +1,8 @@
 import collections
 from typing import Any, Deque, Dict, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal import mock_random
 
 
diff --git a/moto/moto_api/_internal/models.py b/moto/moto_api/_internal/models.py
index 3a5c596c2..b67e9533f 100644
--- a/moto/moto_api/_internal/models.py
+++ b/moto/moto_api/_internal/models.py
@@ -1,6 +1,7 @@
 from typing import Any, Dict, List, Optional
 
-from moto.core import DEFAULT_ACCOUNT_ID, BackendDict, BaseBackend
+from moto.core import DEFAULT_ACCOUNT_ID
+from moto.core.base_backend import BackendDict, BaseBackend
 from moto.core.model_instances import reset_model_data
 
 
diff --git a/moto/moto_proxy/proxy3.py b/moto/moto_proxy/proxy3.py
index 6cb77bbd6..0b34e7db1 100644
--- a/moto/moto_proxy/proxy3.py
+++ b/moto/moto_proxy/proxy3.py
@@ -11,7 +11,8 @@ from botocore.awsrequest import AWSPreparedRequest
 
 from moto.backend_index import backend_url_patterns
 from moto.backends import get_backend
-from moto.core import DEFAULT_ACCOUNT_ID, BackendDict
+from moto.core import DEFAULT_ACCOUNT_ID
+from moto.core.base_backend import BackendDict
 from moto.core.exceptions import RESTError
 
 from . import debug, error, info, with_color
diff --git a/moto/moto_server/werkzeug_app.py b/moto/moto_server/werkzeug_app.py
index 2b5b3275c..bb7fa35eb 100644
--- a/moto/moto_server/werkzeug_app.py
+++ b/moto/moto_server/werkzeug_app.py
@@ -17,7 +17,8 @@ except ImportError:
 
 import moto.backend_index as backend_index
 import moto.backends as backends
-from moto.core import DEFAULT_ACCOUNT_ID, BackendDict
+from moto.core import DEFAULT_ACCOUNT_ID
+from moto.core.base_backend import BackendDict
 from moto.core.utils import convert_to_flask_response
 
 from .utilities import AWSTestHelper, RegexConverter
@@ -56,15 +57,10 @@ class DomainDispatcherApplication:
     value. We'll match the host header value with the url_bases of each backend.
     """
 
-    def __init__(
-        self,
-        create_app: Callable[[backends.SERVICE_NAMES], Flask],
-        service: Optional[str] = None,
-    ):
+    def __init__(self, create_app: Callable[[backends.SERVICE_NAMES], Flask]):
         self.create_app = create_app
         self.lock = Lock()
         self.app_instances: Dict[str, Flask] = {}
-        self.service = service
         self.backend_url_patterns = backend_index.backend_url_patterns
 
     def get_backend_for_host(self, host: str) -> Any:
@@ -72,9 +68,6 @@ class DomainDispatcherApplication:
         if host == "moto_api":
             return host
 
-        if self.service:
-            return self.service
-
         if host in backends.list_of_moto_modules():
             return host
 
diff --git a/moto/mq/models.py b/moto/mq/models.py
index 1a2623f16..9f3afe195 100644
--- a/moto/mq/models.py
+++ b/moto/mq/models.py
@@ -3,7 +3,8 @@ from typing import Any, Dict, Iterable, List, Optional, Tuple
 
 import xmltodict
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 from moto.moto_api._internal import mock_random
 from moto.utilities.tagging_service import TaggingService
diff --git a/moto/neptune/models.py b/moto/neptune/models.py
index ecb3d8d25..0023cf7bd 100644
--- a/moto/neptune/models.py
+++ b/moto/neptune/models.py
@@ -4,7 +4,8 @@ from typing import Any, Dict, List, Optional
 
 from jinja2 import Template
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds
 from moto.moto_api._internal import mock_random as random
 from moto.utilities.utils import load_resource
diff --git a/moto/opensearch/models.py b/moto/opensearch/models.py
index 60e5a845a..1b58b2183 100644
--- a/moto/opensearch/models.py
+++ b/moto/opensearch/models.py
@@ -1,6 +1,7 @@
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.utilities.tagging_service import TaggingService
 
 from .data import compatible_versions
diff --git a/moto/opsworks/models.py b/moto/opsworks/models.py
index a717ff261..497b91a58 100644
--- a/moto/opsworks/models.py
+++ b/moto/opsworks/models.py
@@ -1,6 +1,7 @@
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import utcnow
 from moto.ec2 import ec2_backends
 from moto.moto_api._internal import mock_random as random
@@ -89,7 +90,7 @@ class OpsworkInstance(BaseModel):
         attributes
         """
         if self.instance is None:
-            reservation = self.ec2_backend.add_instances(
+            reservation = self.ec2_backend.run_instances(
                 image_id=self.ami_id,
                 count=1,
                 user_data="",
diff --git a/moto/organizations/models.py b/moto/organizations/models.py
index 9ca8bb780..639c9a28f 100644
--- a/moto/organizations/models.py
+++ b/moto/organizations/models.py
@@ -2,7 +2,8 @@ import json
 import re
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.exceptions import RESTError
 from moto.core.utils import unix_time, utcnow
 from moto.organizations import utils
diff --git a/moto/panorama/models.py b/moto/panorama/models.py
index db81af483..4090fc241 100644
--- a/moto/panorama/models.py
+++ b/moto/panorama/models.py
@@ -5,7 +5,8 @@ from typing import Any, Dict, List, Optional, Union
 
 from dateutil.tz import tzutc
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal.managed_state_model import ManagedState
 from moto.panorama.utils import deep_convert_datetime_to_isoformat, hash_device_name
 from moto.utilities.paginator import paginate
diff --git a/moto/personalize/models.py b/moto/personalize/models.py
index 46f3de006..8936fb296 100644
--- a/moto/personalize/models.py
+++ b/moto/personalize/models.py
@@ -1,6 +1,7 @@
 from typing import Any, Dict, Iterable
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 
 from .exceptions import ResourceNotFoundException
diff --git a/moto/pinpoint/models.py b/moto/pinpoint/models.py
index c0817b3f8..c83189b60 100644
--- a/moto/pinpoint/models.py
+++ b/moto/pinpoint/models.py
@@ -1,7 +1,8 @@
 from datetime import datetime
 from typing import Any, Dict, Iterable, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 from moto.moto_api._internal import mock_random
 from moto.utilities.tagging_service import TaggingService
diff --git a/moto/polly/models.py b/moto/polly/models.py
index 063099743..35622b7b2 100644
--- a/moto/polly/models.py
+++ b/moto/polly/models.py
@@ -2,7 +2,8 @@ import datetime
 from typing import Any, Dict, List, Optional
 from xml.etree import ElementTree as ET
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 
 from .resources import VOICE_DATA
 from .utils import make_arn_for_lexicon
diff --git a/moto/quicksight/models.py b/moto/quicksight/models.py
index 2d1c15bf0..76fd74e62 100644
--- a/moto/quicksight/models.py
+++ b/moto/quicksight/models.py
@@ -1,6 +1,7 @@
 from typing import Any, Dict, Iterable
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal import mock_random as random
 
 from .exceptions import ResourceNotFoundException
diff --git a/moto/ram/models.py b/moto/ram/models.py
index 150c8225d..7499dd43e 100644
--- a/moto/ram/models.py
+++ b/moto/ram/models.py
@@ -2,7 +2,8 @@ import re
 import string
 from typing import Any, Dict, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time, utcnow
 from moto.moto_api._internal import mock_random as random
 from moto.organizations.models import OrganizationsBackend, organizations_backends
diff --git a/moto/rds/models.py b/moto/rds/models.py
index 250330b5c..8a9100574 100644
--- a/moto/rds/models.py
+++ b/moto/rds/models.py
@@ -8,7 +8,8 @@ from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Tuple, Un
 
 from jinja2 import Template
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds
 from moto.ec2.models import ec2_backends
 from moto.moto_api._internal import mock_random as random
diff --git a/moto/rdsdata/models.py b/moto/rdsdata/models.py
index c7cd01332..17ad7453f 100644
--- a/moto/rdsdata/models.py
+++ b/moto/rdsdata/models.py
@@ -1,6 +1,6 @@
 from typing import Any, Dict, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 
 
 class QueryResults:
diff --git a/moto/redshift/models.py b/moto/redshift/models.py
index 104fb783e..3383342c1 100644
--- a/moto/redshift/models.py
+++ b/moto/redshift/models.py
@@ -5,7 +5,8 @@ from typing import Any, Dict, Iterable, List, Optional
 
 from dateutil.tz import tzutc
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds
 from moto.ec2 import ec2_backends
 from moto.ec2.models.security_groups import SecurityGroup as EC2SecurityGroup
diff --git a/moto/redshiftdata/models.py b/moto/redshiftdata/models.py
index 75673f21f..61e689d0f 100644
--- a/moto/redshiftdata/models.py
+++ b/moto/redshiftdata/models.py
@@ -2,7 +2,7 @@ import re
 from datetime import datetime
 from typing import Any, Dict, Iterable, Iterator, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 from moto.core.utils import iso_8601_datetime_without_milliseconds
 from moto.moto_api._internal import mock_random as random
 from moto.redshiftdata.exceptions import ResourceNotFoundException, ValidationException
diff --git a/moto/rekognition/models.py b/moto/rekognition/models.py
index aff6e3687..d526738f4 100644
--- a/moto/rekognition/models.py
+++ b/moto/rekognition/models.py
@@ -3,7 +3,7 @@
 import string
 from typing import Any, Dict, List, Tuple
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 from moto.moto_api._internal import mock_random as random
 
 
diff --git a/moto/resourcegroups/models.py b/moto/resourcegroups/models.py
index 7760dac00..1e05ce80d 100644
--- a/moto/resourcegroups/models.py
+++ b/moto/resourcegroups/models.py
@@ -2,7 +2,8 @@ import json
 import re
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 
 from .exceptions import BadRequestException
 
diff --git a/moto/resourcegroupstaggingapi/models.py b/moto/resourcegroupstaggingapi/models.py
index 74e6b81bc..d870d320b 100644
--- a/moto/resourcegroupstaggingapi/models.py
+++ b/moto/resourcegroupstaggingapi/models.py
@@ -2,7 +2,7 @@ from typing import Any, Dict, Iterator, List, Optional, Tuple
 
 from moto.acm.models import AWSCertificateManagerBackend, acm_backends
 from moto.awslambda.models import LambdaBackend, lambda_backends
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 from moto.core.exceptions import RESTError
 from moto.ec2 import ec2_backends
 from moto.ecs.models import EC2ContainerServiceBackend, ecs_backends
diff --git a/moto/robomaker/models.py b/moto/robomaker/models.py
index 7ceb1302b..f1feacc94 100644
--- a/moto/robomaker/models.py
+++ b/moto/robomaker/models.py
@@ -1,6 +1,7 @@
 from typing import Any, Dict, Iterable, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 
 
diff --git a/moto/route53/models.py b/moto/route53/models.py
index 409d992ff..408d9cfe2 100644
--- a/moto/route53/models.py
+++ b/moto/route53/models.py
@@ -9,7 +9,8 @@ from typing import Any, Dict, List, Optional, Tuple
 
 from jinja2 import Template
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.moto_api._internal import mock_random as random
 from moto.route53.exceptions import (
     DnsNameInvalidForZone,
diff --git a/moto/route53resolver/models.py b/moto/route53resolver/models.py
index bb78713a2..4513e2512 100644
--- a/moto/route53resolver/models.py
+++ b/moto/route53resolver/models.py
@@ -5,7 +5,8 @@ from datetime import datetime, timezone
 from ipaddress import IPv4Address, ip_address, ip_network
 from typing import Any, Dict, List, Optional, Set
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.ec2 import ec2_backends
 from moto.ec2.exceptions import InvalidSecurityGroupNotFoundError, InvalidSubnetIdError
 from moto.moto_api._internal import mock_random
diff --git a/moto/s3/models.py b/moto/s3/models.py
index 225118c7a..6531d6406 100644
--- a/moto/s3/models.py
+++ b/moto/s3/models.py
@@ -15,9 +15,8 @@ from importlib import reload
 from typing import Any, Dict, Iterator, List, Optional, Set, Tuple, Union
 
 from moto.cloudwatch.models import MetricDatum
-from moto.core import (
-    BackendDict,
-    BaseBackend,
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import (
     BaseModel,
     CloudFormationModel,
     CloudWatchMetricProvider,
diff --git a/moto/s3control/models.py b/moto/s3control/models.py
index 53035f4e2..55954b8f5 100644
--- a/moto/s3control/models.py
+++ b/moto/s3control/models.py
@@ -2,7 +2,8 @@ from collections import defaultdict
 from datetime import datetime
 from typing import Any, Dict, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal import mock_random
 from moto.s3.exceptions import (
     InvalidPublicAccessBlockConfiguration,
diff --git a/moto/sagemaker/models.py b/moto/sagemaker/models.py
index 06f5896cc..108ab5062 100644
--- a/moto/sagemaker/models.py
+++ b/moto/sagemaker/models.py
@@ -7,7 +7,8 @@ from typing import Any, Dict, Iterable, List, Optional, Union, cast
 
 from dateutil.tz import tzutc
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.sagemaker import validators
 from moto.utilities.paginator import paginate
 
diff --git a/moto/sagemakerruntime/models.py b/moto/sagemakerruntime/models.py
index 26928bcf8..33477dddb 100644
--- a/moto/sagemakerruntime/models.py
+++ b/moto/sagemakerruntime/models.py
@@ -1,6 +1,6 @@
 from typing import Dict, List, Tuple
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 
 
 class SageMakerRuntimeBackend(BaseBackend):
diff --git a/moto/scheduler/models.py b/moto/scheduler/models.py
index fbbd57f7c..b1ade5c0f 100644
--- a/moto/scheduler/models.py
+++ b/moto/scheduler/models.py
@@ -1,7 +1,8 @@
 """EventBridgeSchedulerBackend class with methods for supported APIs."""
 from typing import Any, Dict, Iterable, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 from moto.utilities.tagging_service import TaggingService
 
diff --git a/moto/sdb/models.py b/moto/sdb/models.py
index 59e05e2c0..eb9829e29 100644
--- a/moto/sdb/models.py
+++ b/moto/sdb/models.py
@@ -4,7 +4,8 @@ from collections import defaultdict
 from threading import Lock
 from typing import Any, Dict, Iterable, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 
 from .exceptions import InvalidDomainName, UnknownDomainName
 
diff --git a/moto/secretsmanager/models.py b/moto/secretsmanager/models.py
index 9452957f6..e18b3ef99 100644
--- a/moto/secretsmanager/models.py
+++ b/moto/secretsmanager/models.py
@@ -3,7 +3,8 @@ import json
 import time
 from typing import Any, Dict, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import utcfromtimestamp, utcnow
 from moto.moto_api._internal import mock_random
 
diff --git a/moto/server.py b/moto/server.py
index e02f07312..c93ae11c3 100644
--- a/moto/server.py
+++ b/moto/server.py
@@ -2,7 +2,6 @@ import argparse
 import os
 import signal
 import sys
-import warnings
 from typing import Any, List, Optional
 
 from werkzeug.serving import run_simple
@@ -25,13 +24,6 @@ def main(argv: Optional[List[str]] = None) -> None:
     argv = argv or sys.argv[1:]
     parser = argparse.ArgumentParser()
 
-    # Keep this for backwards compat
-    parser.add_argument(
-        "service",
-        type=str,
-        nargs="?",  # http://stackoverflow.com/a/4480202/731592
-        default=os.environ.get("MOTO_SERVICE"),
-    )
     parser.add_argument(
         "-H", "--host", type=str, help="Which host to bind", default="127.0.0.1"
     )
@@ -74,13 +66,8 @@ def main(argv: Optional[List[str]] = None) -> None:
     except Exception:
         pass  # ignore "ValueError: signal only works in main thread"
 
-    if args.service:
-        warnings.warn(
-            f"The service-argument ({args.service}) is considered deprecated, and will be deprecated in a future release. Please let us know if you have any questions: https://github.com/getmoto/moto/issues"
-        )
-
     # Wrap the main application
-    main_app = DomainDispatcherApplication(create_backend_app, service=args.service)
+    main_app = DomainDispatcherApplication(create_backend_app)
     main_app.debug = True  # type: ignore
 
     ssl_context: Any = None
diff --git a/moto/servicediscovery/models.py b/moto/servicediscovery/models.py
index d4bbe603c..825a25bce 100644
--- a/moto/servicediscovery/models.py
+++ b/moto/servicediscovery/models.py
@@ -1,7 +1,8 @@
 import string
 from typing import Any, Dict, Iterable, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 from moto.moto_api._internal import mock_random as random
 from moto.utilities.tagging_service import TaggingService
diff --git a/moto/servicequotas/models.py b/moto/servicequotas/models.py
index 5bb5a7eaf..298334e9b 100644
--- a/moto/servicequotas/models.py
+++ b/moto/servicequotas/models.py
@@ -2,7 +2,7 @@
 
 from typing import Any, Dict, List
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 
 from .exceptions import NoSuchResource
 from .resources.default_quotas.vpc import VPC_DEFAULT_QUOTAS
diff --git a/moto/ses/models.py b/moto/ses/models.py
index f99452551..e8d26a945 100644
--- a/moto/ses/models.py
+++ b/moto/ses/models.py
@@ -7,7 +7,8 @@ from email.mime.multipart import MIMEMultipart
 from email.utils import formataddr, getaddresses, parseaddr
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import utcnow
 from moto.sns.models import sns_backends
 
diff --git a/moto/sesv2/models.py b/moto/sesv2/models.py
index 489f687f6..73c6f326a 100644
--- a/moto/sesv2/models.py
+++ b/moto/sesv2/models.py
@@ -2,7 +2,8 @@
 
 from typing import Any, Dict, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds
 
 from ..ses.models import Message, RawMessage, ses_backends
diff --git a/moto/settings.py b/moto/settings.py
index ed85efcfe..263839c81 100644
--- a/moto/settings.py
+++ b/moto/settings.py
@@ -4,13 +4,15 @@ import pathlib
 from functools import lru_cache
 from typing import List, Optional
 
+from moto.core.config import default_user_config
 
-def test_proxy_mode() -> bool:
+
+def is_test_proxy_mode() -> bool:
     return os.environ.get("TEST_PROXY_MODE", "0").lower() == "true"
 
 
 TEST_SERVER_MODE = os.environ.get("TEST_SERVER_MODE", "0").lower() == "true"
-TEST_DECORATOR_MODE = not TEST_SERVER_MODE and not test_proxy_mode()
+TEST_DECORATOR_MODE = not TEST_SERVER_MODE and not is_test_proxy_mode()
 
 INITIAL_NO_AUTH_ACTION_COUNT = float(
     os.environ.get("INITIAL_NO_AUTH_ACTION_COUNT", float("inf"))
@@ -177,3 +179,11 @@ def get_cognito_idp_user_pool_id_strategy() -> Optional[str]:
 
 def enable_iso_regions() -> bool:
     return os.environ.get("MOTO_ENABLE_ISO_REGIONS", "false").lower() == "true"
+
+
+def load_iam_aws_managed_policies() -> bool:
+    return (
+        default_user_config.get("iam", {}).get("load_aws_managed_policies", False)
+        is True
+        or os.environ.get("MOTO_IAM_LOAD_MANAGED_POLICIES", "").lower() == "true"
+    )
diff --git a/moto/signer/models.py b/moto/signer/models.py
index d426e20ae..4a85d0f53 100644
--- a/moto/signer/models.py
+++ b/moto/signer/models.py
@@ -1,6 +1,7 @@
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal import mock_random
 from moto.utilities.tagging_service import TaggingService
 
diff --git a/moto/sns/models.py b/moto/sns/models.py
index 037ebb620..ce09a3303 100644
--- a/moto/sns/models.py
+++ b/moto/sns/models.py
@@ -6,7 +6,8 @@ from typing import Any, Dict, Iterable, List, Optional, Set, Tuple
 
 import requests
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.utils import (
     camelcase_to_underscores,
     iso_8601_datetime_with_milliseconds,
diff --git a/moto/sqs/models.py b/moto/sqs/models.py
index 481ca0cb2..ee77bc13e 100644
--- a/moto/sqs/models.py
+++ b/moto/sqs/models.py
@@ -10,7 +10,8 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Set, Tuple
 from urllib.parse import ParseResult
 from xml.sax.saxutils import escape
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.exceptions import RESTError
 from moto.core.utils import (
     camelcase_to_underscores,
diff --git a/moto/ssm/models.py b/moto/ssm/models.py
index de2c638b4..3e8cbbad6 100644
--- a/moto/ssm/models.py
+++ b/moto/ssm/models.py
@@ -9,7 +9,8 @@ from typing import Any, DefaultDict, Dict, Iterator, List, Optional, Tuple
 
 import yaml
 
-from moto.core import BackendDict, BaseBackend, BaseModel, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel, CloudFormationModel
 from moto.core.exceptions import RESTError
 from moto.core.utils import utcnow
 from moto.ec2 import ec2_backends
diff --git a/moto/ssoadmin/models.py b/moto/ssoadmin/models.py
index fee98d4c7..820a1bbb4 100644
--- a/moto/ssoadmin/models.py
+++ b/moto/ssoadmin/models.py
@@ -1,7 +1,8 @@
 import json
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 from moto.iam.aws_managed_policies import aws_managed_policies_data
 from moto.moto_api._internal import mock_random as random
diff --git a/moto/stepfunctions/models.py b/moto/stepfunctions/models.py
index 77e6bb154..7cfa03f18 100644
--- a/moto/stepfunctions/models.py
+++ b/moto/stepfunctions/models.py
@@ -6,7 +6,8 @@ from typing import Any, Dict, Iterable, List, Optional, Pattern
 from dateutil.tz import tzlocal
 
 from moto import settings
-from moto.core import BackendDict, BaseBackend, CloudFormationModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import CloudFormationModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds
 from moto.moto_api._internal import mock_random
 from moto.utilities.paginator import paginate
diff --git a/moto/sts/models.py b/moto/sts/models.py
index 5d17cdadc..d6a3351ea 100644
--- a/moto/sts/models.py
+++ b/moto/sts/models.py
@@ -5,7 +5,8 @@ from typing import Any, Dict, List, Optional, Tuple
 
 import xmltodict
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds, utcnow
 from moto.iam.models import AccessKey, iam_backends
 from moto.sts.utils import (
diff --git a/moto/support/models.py b/moto/support/models.py
index a6279fd7e..524f814c4 100644
--- a/moto/support/models.py
+++ b/moto/support/models.py
@@ -1,7 +1,7 @@
 import datetime
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 from moto.moto_api._internal import mock_random as random
 from moto.moto_api._internal.managed_state_model import ManagedState
 from moto.utilities.utils import load_resource
diff --git a/moto/swf/models/__init__.py b/moto/swf/models/__init__.py
index 694310f43..6e13dcc31 100644
--- a/moto/swf/models/__init__.py
+++ b/moto/swf/models/__init__.py
@@ -1,7 +1,7 @@
 from time import sleep
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend
+from moto.core.base_backend import BackendDict, BaseBackend
 
 from ..exceptions import (
     SWFDomainAlreadyExistsFault,
diff --git a/moto/swf/models/activity_task.py b/moto/swf/models/activity_task.py
index c24b92360..744f93bc7 100644
--- a/moto/swf/models/activity_task.py
+++ b/moto/swf/models/activity_task.py
@@ -1,6 +1,6 @@
 from typing import TYPE_CHECKING, Any, Dict, Optional
 
-from moto.core import BaseModel
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time, utcnow
 from moto.moto_api._internal import mock_random
 
diff --git a/moto/swf/models/decision_task.py b/moto/swf/models/decision_task.py
index bb7cb6ed9..f4f75fe3a 100644
--- a/moto/swf/models/decision_task.py
+++ b/moto/swf/models/decision_task.py
@@ -1,6 +1,6 @@
 from typing import TYPE_CHECKING, Any, Dict, Optional
 
-from moto.core import BaseModel
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time, utcnow
 from moto.moto_api._internal import mock_random
 
diff --git a/moto/swf/models/domain.py b/moto/swf/models/domain.py
index ae368069c..c188789ee 100644
--- a/moto/swf/models/domain.py
+++ b/moto/swf/models/domain.py
@@ -1,7 +1,7 @@
 from collections import defaultdict
 from typing import TYPE_CHECKING, Any, Dict, List, Optional
 
-from moto.core import BaseModel
+from moto.core.common_models import BaseModel
 
 from ..exceptions import (
     SWFUnknownResourceFault,
diff --git a/moto/swf/models/generic_type.py b/moto/swf/models/generic_type.py
index 681956b4f..daf7888d9 100644
--- a/moto/swf/models/generic_type.py
+++ b/moto/swf/models/generic_type.py
@@ -1,6 +1,6 @@
 from typing import Any, Dict, List, TypeVar
 
-from moto.core import BaseModel
+from moto.core.common_models import BaseModel
 from moto.core.utils import camelcase_to_underscores
 
 
diff --git a/moto/swf/models/history_event.py b/moto/swf/models/history_event.py
index 12122de7e..f79c0db00 100644
--- a/moto/swf/models/history_event.py
+++ b/moto/swf/models/history_event.py
@@ -1,6 +1,6 @@
 from typing import Any, Dict, Optional
 
-from moto.core import BaseModel
+from moto.core.common_models import BaseModel
 from moto.core.utils import underscores_to_camelcase, unix_time
 
 from ..utils import decapitalize
diff --git a/moto/swf/models/timeout.py b/moto/swf/models/timeout.py
index de86fe38c..6e3645708 100644
--- a/moto/swf/models/timeout.py
+++ b/moto/swf/models/timeout.py
@@ -1,6 +1,6 @@
 from typing import Any
 
-from moto.core import BaseModel
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 
 
diff --git a/moto/swf/models/timer.py b/moto/swf/models/timer.py
index 1634432ce..4d6694cbf 100644
--- a/moto/swf/models/timer.py
+++ b/moto/swf/models/timer.py
@@ -1,6 +1,6 @@
 from threading import Timer as ThreadingTimer
 
-from moto.core import BaseModel
+from moto.core.common_models import BaseModel
 
 
 class Timer(BaseModel):
diff --git a/moto/swf/models/workflow_execution.py b/moto/swf/models/workflow_execution.py
index fb01a48bb..5918fb749 100644
--- a/moto/swf/models/workflow_execution.py
+++ b/moto/swf/models/workflow_execution.py
@@ -2,7 +2,7 @@ from threading import Lock
 from threading import Timer as ThreadingTimer
 from typing import Any, Dict, Iterable, List, Optional
 
-from moto.core import BaseModel
+from moto.core.common_models import BaseModel
 from moto.core.utils import camelcase_to_underscores, unix_time
 from moto.moto_api._internal import mock_random
 
diff --git a/moto/textract/models.py b/moto/textract/models.py
index 1cc2dd9f5..11078421d 100644
--- a/moto/textract/models.py
+++ b/moto/textract/models.py
@@ -1,7 +1,8 @@
 from collections import defaultdict
 from typing import Any, Dict, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal import mock_random
 
 from .exceptions import InvalidJobIdException, InvalidParameterException
diff --git a/moto/timestreamwrite/models.py b/moto/timestreamwrite/models.py
index 6d6a7a665..695bf8c73 100644
--- a/moto/timestreamwrite/models.py
+++ b/moto/timestreamwrite/models.py
@@ -1,6 +1,7 @@
 from typing import Any, Dict, Iterable, List
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 from moto.utilities.tagging_service import TaggingService
 
diff --git a/moto/transcribe/models.py b/moto/transcribe/models.py
index d4c4141c4..6d40ace83 100644
--- a/moto/transcribe/models.py
+++ b/moto/transcribe/models.py
@@ -2,7 +2,8 @@ import re
 from datetime import datetime, timedelta
 from typing import Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.moto_api._internal import mock_random
 from moto.moto_api._internal.managed_state_model import ManagedState
 
diff --git a/moto/wafv2/models.py b/moto/wafv2/models.py
index 6e02e6639..f3b24076e 100644
--- a/moto/wafv2/models.py
+++ b/moto/wafv2/models.py
@@ -2,7 +2,8 @@ import re
 from collections import OrderedDict
 from typing import TYPE_CHECKING, Any, Dict, List, Optional
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.utils import iso_8601_datetime_with_milliseconds
 from moto.moto_api._internal import mock_random
 from moto.utilities.tagging_service import TaggingService
diff --git a/moto/xray/models.py b/moto/xray/models.py
index 8940e6855..194e3b001 100644
--- a/moto/xray/models.py
+++ b/moto/xray/models.py
@@ -4,7 +4,8 @@ import json
 from collections import defaultdict
 from typing import Any, Dict, List, Optional, Tuple
 
-from moto.core import BackendDict, BaseBackend, BaseModel
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
 from moto.core.exceptions import AWSError
 
 from .exceptions import BadSegmentException
diff --git a/scripts/scaffold.py b/scripts/scaffold.py
index ce8df0c3b..eff34751d 100755
--- a/scripts/scaffold.py
+++ b/scripts/scaffold.py
@@ -24,6 +24,7 @@ import random
 import re
 import inspect
 import importlib
+import subprocess
 from lxml import etree
 
 import click
@@ -47,6 +48,7 @@ TEMPLATE_DIR = os.path.join(os.path.dirname(__file__), "./template")
 INPUT_IGNORED_IN_BACKEND = ["Marker", "PageSize"]
 OUTPUT_IGNORED_IN_BACKEND = ["NextMarker"]
 
+root_dir = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).decode().strip()
 
 def print_progress(title, body, color):
     """Prints a color-code message describing current state of progress."""
@@ -143,29 +145,6 @@ def render_template(tmpl_dir, tmpl_filename, context, service, alt_filename=None
             fhandle.write(rendered)
 
 
-def append_mock_to_init_py(service):
-    """Update __init_.py to add line to load the mock service."""
-    path = os.path.join(os.path.dirname(__file__), "..", "moto", "__init__.py")
-    with open(path, encoding="utf-8") as fhandle:
-        lines = [_.replace("\n", "") for _ in fhandle.readlines()]
-
-    escaped_service = get_escaped_service(service)
-    if any(_ for _ in lines if _.startswith(f"^mock_{escaped_service} = lazy_load")):
-        return
-    filtered_lines = [_ for _ in lines if re.match("^mock_.*lazy_load(.*)$", _)]
-    last_import_line_index = lines.index(filtered_lines[-1])
-
-    new_line = (
-        f"mock_{escaped_service} = lazy_load("
-        f'".{escaped_service}", "mock_{escaped_service}", boto3_name="{service}")'
-    )
-    lines.insert(last_import_line_index + 1, new_line)
-
-    body = "\n".join(lines) + "\n"
-    with open(path, "w", encoding="utf-8") as fhandle:
-        fhandle.write(body)
-
-
 def initialize_service(service, api_protocol):
     """Create lib and test dirs if they don't exist."""
     lib_dir = get_lib_dir(service)
@@ -213,8 +192,6 @@ def initialize_service(service, api_protocol):
             else None
         )
         render_template(tmpl_dir, tmpl_filename, tmpl_context, service, alt_filename)
-    # append mock to initi files
-    append_mock_to_init_py(service)
 
 
 def to_upper_camel_case(string):
@@ -340,7 +317,7 @@ def get_func_in_tests(service, operation):
     escaped_service = get_escaped_service(service)
     random_region = random.choice(["us-east-2", "eu-west-1", "ap-southeast-1"])
     body = "\n\n"
-    body += f"@mock_{escaped_service}\n"
+    body += f"@mock_aws\n"
     body += f"def test_{operation}():\n"
     body += f"    client = boto3.client(\"{service}\", region_name=\"{random_region}\")\n"
     body += f"    resp = client.{operation}()\n"
@@ -593,7 +570,7 @@ def insert_url(service, operation, api_protocol):  # pylint: disable=too-many-lo
 
     # generate url pattern
     if api_protocol == "rest-json":
-        new_line = '    "{0}/.*$": response.dispatch,'
+        new_line = f'    "{0}/.*$": {service_class}Response.dispatch,'
     elif api_protocol == "rest-xml":
         new_line = f'    "{{0}}{uri}$": {service_class}Response.{operation},'
     else:
@@ -674,13 +651,15 @@ def main():
                 "yellow",
             )
 
+        click.echo("Updating backend index...")
+        subprocess.check_output([f"{root_dir}/scripts/update_backend_index.py"]).decode().strip()
+
         click.echo(
             "\n"
             "Please select another operation, or Ctrl-X/Ctrl-C to cancel."
             "\n\n"
             "Remaining steps after development is complete:\n"
             '- Run scripts/implementation_coverage.py,\n'
-            "- Run scripts/update_backend_index.py."
             "\n"
         )
 
diff --git a/scripts/template/lib/__init__.py.j2 b/scripts/template/lib/__init__.py.j2
index c182490a4..f31e376cb 100644
--- a/scripts/template/lib/__init__.py.j2
+++ b/scripts/template/lib/__init__.py.j2
@@ -1,5 +1,1 @@
-"""{{ escaped_service }} module initialization; sets value for base decorator."""
-from .models import {{ escaped_service }}_backends
-from ..core.models import base_decorator
-
-mock_{{ escaped_service }} = base_decorator({{ escaped_service }}_backends)
+from .models import {{ escaped_service }}_backends  #noqa: F401
diff --git a/scripts/template/lib/urls.py.j2 b/scripts/template/lib/urls.py.j2
index 1a189bfe7..9bfb7b80a 100644
--- a/scripts/template/lib/urls.py.j2
+++ b/scripts/template/lib/urls.py.j2
@@ -5,9 +5,5 @@ url_bases = [
     r"https?://{{ endpoint_prefix }}\.(.+)\.amazonaws\.com",
 ]
 
-{% if api_protocol == 'rest-json' %}
-response = {{ service_class }}Response()
-{% endif %}
-
 url_paths = {
 }
diff --git a/scripts/update_backend_index.py b/scripts/update_backend_index.py
index 40050bdd6..e46ea9dc6 100755
--- a/scripts/update_backend_index.py
+++ b/scripts/update_backend_index.py
@@ -9,8 +9,6 @@ from pathlib import Path
 import black
 import pprint
 
-import moto
-
 output_file = "moto/backend_index.py"
 
 script_dir = os.path.dirname(os.path.abspath(__file__))
@@ -25,7 +23,6 @@ IGNORE_BACKENDS = ["moto_server", "moto_proxy", "apigatewayv2", "awslambda_simpl
 
 
 def iter_backend_url_patterns():
-    path = os.path.dirname(moto.__file__)
     for backend in list_of_moto_modules():
         # Special case
         if backend == "moto_api":
@@ -55,7 +52,7 @@ def build_backend_url_pattern_index():
 
 def main():
     with open(output_path, "w") as fd:
-        fd.write("# autogenerated by %s\n" % __file__)
+        fd.write("# autogenerated by moto/scripts/update_backend_index.py\n")
         fd.write("import re\n")
 
     print("build backend_url_patterns")
diff --git a/setup.cfg b/setup.cfg
index 6ffef474b..97ddf15fd 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -27,13 +27,13 @@ project_urls =
 python_requires = >=3.8
 install_requires =
     boto3>=1.9.201
-    botocore>=1.13.46
+    botocore>=1.14.0
     cryptography>=3.3.1
     requests>=2.5
     xmltodict
     werkzeug>=0.5,!=2.2.0,!=2.2.1
     python-dateutil<3.0.0,>=2.1
-    responses>=0.13.0
+    responses>=0.15.0
     Jinja2>=2.10.1
 package_dir =
     moto = moto


Test patch:
diff --git a/.github/workflows/test_outdated_versions.yml b/.github/workflows/test_outdated_versions.yml
index f6cf99322..155b275f9 100644
--- a/.github/workflows/test_outdated_versions.yml
+++ b/.github/workflows/test_outdated_versions.yml
@@ -13,8 +13,9 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
+        botocore: ["--upgrade boto3 botocore", "boto3==1.11.0 botocore==1.14.0"]
         python-version: [ "3.11" ]
-        responses-version: ["0.13.0", "0.15.0", "0.17.0", "0.19.0", "0.20.0" ]
+        responses-version: ["0.15.0", "0.17.0", "0.19.0", "0.20.0" ]
         werkzeug-version: ["2.0.1", "2.1.1", "2.2.2"]
         openapi-spec-validator-version: ["0.5.0"]
 
@@ -38,6 +39,7 @@ jobs:
         pip install flask==${{ matrix.werkzeug-version }}
         pip install werkzeug==${{ matrix.werkzeug-version }}
         pip install openapi-spec-validator==${{ matrix.openapi-spec-validator-version }}
+        pip install ${{ matrix.botocore }}
 
     - name: Run tests
       run: |
@@ -65,6 +67,6 @@ jobs:
       if: always()
       uses: actions/upload-artifact@v4
       with:
-        name: test-${{ matrix.responses-version }}-${{ matrix.werkzeug-version }}-${{ matrix.werkzeug-version }}-${{ matrix.openapi-spec-validator-version }}
+        name: test-${{ matrix.responses-version }}-${{ matrix.werkzeug-version }}-${{ matrix.werkzeug-version }}-${{ matrix.openapi-spec-validator-version }}-${{ matrix.botocore }}
         path: |
           serverlogs/*
diff --git a/scripts/template/test/test_service.py.j2 b/scripts/template/test/test_service.py.j2
index b5c4a87d4..bb958a84d 100644
--- a/scripts/template/test/test_service.py.j2
+++ b/scripts/template/test/test_service.py.j2
@@ -1,7 +1,7 @@
 """Unit tests for {{ escaped_service }}-supported APIs."""
 import boto3
 
-from moto import mock_{{ escaped_service }}
+from moto import mock_aws
 
 # See our Development Tips on writing tests for hints on how to write good tests:
 # http://docs.getmoto.org/en/latest/docs/contributing/development_tips/tests.html
diff --git a/tests/test_awslambda/test_lambda.py b/tests/test_awslambda/test_lambda.py
index 5476728fd..3bcffa387 100644
--- a/tests/test_awslambda/test_lambda.py
+++ b/tests/test_awslambda/test_lambda.py
@@ -2,6 +2,7 @@ import base64
 import hashlib
 import json
 import os
+import sys
 from unittest import SkipTest, mock
 from uuid import uuid4
 
@@ -12,6 +13,7 @@ from freezegun import freeze_time
 
 from moto import mock_aws, settings
 from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
+from moto.utilities.distutils_version import LooseVersion
 from tests.test_ecr.test_ecr_helpers import _create_image_manifest
 
 from . import lambda_aws_verified
@@ -28,6 +30,8 @@ PYTHON_VERSION = "python3.11"
 LAMBDA_FUNC_NAME = "test"
 _lambda_region = "us-west-2"
 
+boto3_version = sys.modules["botocore"].__version__
+
 
 @mock.patch.dict("os.environ", {"MOTO_ENABLE_ISO_REGIONS": "true"})
 @pytest.mark.parametrize("region", ["us-west-2", "cn-northwest-1", "us-isob-east-1"])
@@ -35,6 +39,8 @@ _lambda_region = "us-west-2"
 def test_lambda_regions(region):
     if not settings.TEST_DECORATOR_MODE:
         raise SkipTest("Can only set EnvironVars in DecoratorMode")
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("ISO-region not available in older versions")
     client = boto3.client("lambda", region_name=region)
     resp = client.list_functions()
     assert resp["ResponseMetadata"]["HTTPStatusCode"] == 200
@@ -43,6 +49,8 @@ def test_lambda_regions(region):
 @pytest.mark.aws_verified
 @lambda_aws_verified
 def test_list_functions(iam_role_arn=None):
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     sts = boto3.client("sts", "eu-west-2")
     account_id = sts.get_caller_identity()["Account"]
 
@@ -70,7 +78,9 @@ def test_list_functions(iam_role_arn=None):
     func_list = conn.list_functions()["Functions"]
     our_functions = [f for f in func_list if f["FunctionName"] == function_name]
     assert len(our_functions) == 1
-    assert our_functions[0]["PackageType"] == "Zip"
+    if LooseVersion(boto3_version) > LooseVersion("1.29.0"):
+        # PackageType only available in new versions
+        assert our_functions[0]["PackageType"] == "Zip"
 
     # FunctionVersion=ALL means we should get a list of all versions
     full_list = conn.list_functions(FunctionVersion="ALL")["Functions"]
@@ -127,6 +137,8 @@ def test_create_based_on_s3_with_missing_bucket():
 @mock_aws
 @freeze_time("2015-01-01 00:00:00")
 def test_create_function_from_aws_bucket():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     bucket_name = str(uuid4())
     s3_conn = boto3.client("s3", _lambda_region)
     s3_conn.create_bucket(
@@ -169,6 +181,8 @@ def test_create_function_from_aws_bucket():
 @mock_aws
 @freeze_time("2015-01-01 00:00:00")
 def test_create_function_from_zipfile():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     conn = boto3.client("lambda", _lambda_region)
     zip_content = get_test_zip_file1()
     function_name = str(uuid4())[0:6]
@@ -218,6 +232,8 @@ def test_create_function_from_zipfile():
 
 @mock_aws
 def test_create_function_from_image():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     conn = boto3.client("lambda", _lambda_region)
     function_name = str(uuid4())[0:6]
     image_uri = f"{ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/testlambdaecr:prod"
@@ -237,9 +253,6 @@ def test_create_function_from_image():
         Description="test lambda function",
         ImageConfig=image_config,
         PackageType="Image",
-        Timeout=3,
-        MemorySize=128,
-        Publish=True,
     )
 
     result = conn.get_function(FunctionName=function_name)
@@ -250,6 +263,8 @@ def test_create_function_from_image():
 
 @mock_aws
 def test_create_function_from_image_default_working_directory():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     conn = boto3.client("lambda", _lambda_region)
     function_name = str(uuid4())[0:6]
     image_uri = f"{ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/testlambdaecr:prod"
@@ -268,9 +283,6 @@ def test_create_function_from_image_default_working_directory():
         Description="test lambda function",
         ImageConfig=image_config,
         PackageType="Image",
-        Timeout=3,
-        MemorySize=128,
-        Publish=True,
     )
 
     result = conn.get_function(FunctionName=function_name)
@@ -281,6 +293,8 @@ def test_create_function_from_image_default_working_directory():
 
 @mock_aws
 def test_create_function_error_bad_architecture():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     conn = boto3.client("lambda", _lambda_region)
     function_name = str(uuid4())[0:6]
     image_uri = f"{ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/testlambdaecr:prod"
@@ -291,10 +305,6 @@ def test_create_function_error_bad_architecture():
             FunctionName=function_name,
             Role=get_role_name(),
             Code={"ImageUri": image_uri},
-            Description="test lambda function",
-            Timeout=3,
-            MemorySize=128,
-            Publish=True,
         )
 
     err = exc.value.response
@@ -310,6 +320,8 @@ def test_create_function_error_bad_architecture():
 
 @mock_aws
 def test_create_function_error_ephemeral_too_big():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     conn = boto3.client("lambda", _lambda_region)
     function_name = str(uuid4())[0:6]
     image_uri = f"{ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/testlambdaecr:prod"
@@ -405,6 +417,8 @@ def ecr_repo_fixture():
 
 @mock_aws
 def test_create_function_from_stubbed_ecr():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     lambda_client = boto3.client("lambda", "us-east-1")
     fn_name = str(uuid4())[0:6]
     image_uri = "111122223333.dkr.ecr.us-east-1.amazonaws.com/testlambda:latest"
@@ -440,6 +454,8 @@ def test_create_function_from_stubbed_ecr():
 def test_create_function_from_mocked_ecr_image_tag(
     with_ecr_mock,
 ):  # pylint: disable=unused-argument
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     if not settings.TEST_DECORATOR_MODE:
         raise SkipTest(
             "Envars not easily set in server mode, feature off by default, skipping..."
@@ -482,6 +498,8 @@ def test_create_function_from_mocked_ecr_image_tag(
 def test_create_function_from_mocked_ecr_image_digest(
     with_ecr_mock,
 ):  # pylint: disable=unused-argument
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     if not settings.TEST_DECORATOR_MODE:
         raise SkipTest(
             "Envars not easily set in server mode, feature off by default, skipping..."
@@ -509,6 +527,8 @@ def test_create_function_from_mocked_ecr_image_digest(
 def test_create_function_from_mocked_ecr_missing_image(
     with_ecr_mock,
 ):  # pylint: disable=unused-argument
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     if not settings.TEST_DECORATOR_MODE:
         raise SkipTest(
             "Envars not easily set in server mode, feature off by default, skipping..."
@@ -696,6 +716,8 @@ def test_get_function_configuration(key):
 @pytest.mark.parametrize("key", ["FunctionName", "FunctionArn"])
 @mock_aws
 def test_get_function_code_signing_config(key):
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     bucket_name = str(uuid4())
     s3_conn = boto3.client("s3", _lambda_region)
     s3_conn.create_bucket(
@@ -929,6 +951,8 @@ def test_list_create_list_get_delete_list():
     test `list -> create -> list -> get -> delete -> list` integration
 
     """
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     bucket_name = str(uuid4())
     s3_conn = boto3.client("s3", _lambda_region)
     s3_conn.create_bucket(
@@ -1055,9 +1079,6 @@ def test_get_function_created_with_zipfile():
         Handler="lambda_function.handler",
         Code={"ZipFile": zip_content},
         Description="test lambda function",
-        Timeout=3,
-        MemorySize=128,
-        Publish=True,
     )
 
     response = conn.get_function(FunctionName=function_name)
@@ -1503,6 +1524,8 @@ def test_update_function_s3():
 
 @mock_aws
 def test_update_function_ecr():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     conn = boto3.client("lambda", _lambda_region)
     function_name = str(uuid4())[0:6]
     image_uri = f"{ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/testlambdaecr:prod"
diff --git a/tests/test_awslambda/test_lambda_function_urls.py b/tests/test_awslambda/test_lambda_function_urls.py
index f583332e4..37e875c17 100644
--- a/tests/test_awslambda/test_lambda_function_urls.py
+++ b/tests/test_awslambda/test_lambda_function_urls.py
@@ -1,3 +1,5 @@
+import sys
+from unittest import SkipTest
 from uuid import uuid4
 
 import boto3
@@ -5,15 +7,20 @@ import pytest
 from botocore.exceptions import ClientError
 
 from moto import mock_aws
+from moto.utilities.distutils_version import LooseVersion
 
 from .utilities import get_role_name, get_test_zip_file1
 
 PYTHON_VERSION = "python3.11"
 
+boto3_version = sys.modules["botocore"].__version__
+
 
 @mock_aws
 @pytest.mark.parametrize("key", ["FunctionName", "FunctionArn"])
 def test_create_function_url_config(key):
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     client = boto3.client("lambda", "us-east-2")
     function_name = str(uuid4())[0:6]
     fxn = client.create_function(
@@ -40,6 +47,8 @@ def test_create_function_url_config(key):
 
 @mock_aws
 def test_create_function_url_config_with_cors():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     client = boto3.client("lambda", "us-east-2")
     function_name = str(uuid4())[0:6]
     fxn = client.create_function(
@@ -75,6 +84,8 @@ def test_create_function_url_config_with_cors():
 
 @mock_aws
 def test_update_function_url_config_with_cors():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     client = boto3.client("lambda", "us-east-2")
     function_name = str(uuid4())[0:6]
     fxn = client.create_function(
@@ -108,6 +119,8 @@ def test_update_function_url_config_with_cors():
 @mock_aws
 @pytest.mark.parametrize("key", ["FunctionName", "FunctionArn"])
 def test_delete_function_url_config(key):
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     client = boto3.client("lambda", "us-east-2")
     function_name = str(uuid4())[0:6]
     fxn = client.create_function(
diff --git a/tests/test_awslambda/test_lambda_invoke.py b/tests/test_awslambda/test_lambda_invoke.py
index c1e2aadd4..0d6ed9a01 100644
--- a/tests/test_awslambda/test_lambda_invoke.py
+++ b/tests/test_awslambda/test_lambda_invoke.py
@@ -345,7 +345,7 @@ def test_invoke_function_large_response():
 
 @mock_aws
 def test_invoke_lambda_with_proxy():
-    if not settings.test_proxy_mode():
+    if not settings.is_test_proxy_mode():
         raise SkipTest("We only want to test this in ProxyMode")
 
     conn = boto3.resource("ec2", _lambda_region)
diff --git a/tests/test_awslambda/test_lambda_layers.py b/tests/test_awslambda/test_lambda_layers.py
index 701adb915..5e751997c 100644
--- a/tests/test_awslambda/test_lambda_layers.py
+++ b/tests/test_awslambda/test_lambda_layers.py
@@ -1,4 +1,5 @@
 import os
+import sys
 from unittest import SkipTest, mock
 from uuid import uuid4
 
@@ -9,12 +10,15 @@ from freezegun import freeze_time
 
 from moto import mock_aws, settings
 from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
+from moto.utilities.distutils_version import LooseVersion
 
 from .utilities import get_role_name, get_test_zip_file1
 
 PYTHON_VERSION = "python3.11"
 _lambda_region = "us-west-2"
 
+boto3_version = sys.modules["botocore"].__version__
+
 
 @mock_aws
 def test_publish_lambda_layers__without_content():
@@ -50,6 +54,8 @@ def test_publish_layer_with_unknown_s3_file():
 @mock_aws
 @freeze_time("2015-01-01 00:00:00")
 def test_get_lambda_layers():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     bucket_name = str(uuid4())
     s3_conn = boto3.client("s3", _lambda_region)
     s3_conn.create_bucket(
@@ -152,6 +158,8 @@ def test_get_lambda_layers():
 
 @mock_aws
 def test_get_layer_version():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     bucket_name = str(uuid4())
     s3_conn = boto3.client("s3", _lambda_region)
     s3_conn.create_bucket(
diff --git a/tests/test_awslambda/test_lambda_policy.py b/tests/test_awslambda/test_lambda_policy.py
index df038282d..524f28254 100644
--- a/tests/test_awslambda/test_lambda_policy.py
+++ b/tests/test_awslambda/test_lambda_policy.py
@@ -1,4 +1,6 @@
 import json
+import sys
+from unittest import SkipTest
 from uuid import uuid4
 
 import boto3
@@ -7,12 +9,15 @@ from botocore.exceptions import ClientError
 
 from moto import mock_aws
 from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
+from moto.utilities.distutils_version import LooseVersion
 
 from .utilities import get_role_name, get_test_zip_file1, get_test_zip_file2
 
 PYTHON_VERSION = "python3.11"
 _lambda_region = "us-west-2"
 
+boto3_version = sys.modules["botocore"].__version__
+
 
 @pytest.mark.parametrize("key", ["FunctionName", "FunctionArn"])
 @mock_aws
@@ -51,6 +56,8 @@ def test_add_function_permission(key):
 
 @mock_aws
 def test_add_permission_with_principalorgid():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     conn = boto3.client("lambda", _lambda_region)
     zip_content = get_test_zip_file1()
     function_name = str(uuid4())[0:6]
diff --git a/tests/test_cloudformation/test_cloudformation_stack_crud_boto3.py b/tests/test_cloudformation/test_cloudformation_stack_crud_boto3.py
index d6c37aa67..7706a0286 100644
--- a/tests/test_cloudformation/test_cloudformation_stack_crud_boto3.py
+++ b/tests/test_cloudformation/test_cloudformation_stack_crud_boto3.py
@@ -1,6 +1,7 @@
 import copy
 import json
 import os
+import sys
 from collections import OrderedDict
 from datetime import datetime, timedelta, timezone
 from unittest import SkipTest
@@ -12,11 +13,14 @@ from botocore.exceptions import ClientError
 from moto import mock_aws, settings
 from moto.cloudformation import cloudformation_backends
 from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
+from moto.utilities.distutils_version import LooseVersion
 from tests import EXAMPLE_AMI_ID
 
 TEST_STACK_NAME = "test_stack"
 REGION_NAME = "us-east-1"
 
+boto3_version = sys.modules["botocore"].__version__
+
 dummy_template = {
     "AWSTemplateFormatVersion": "2010-09-09",
     "Description": "Stack 1",
@@ -367,7 +371,9 @@ def test_describe_stack_instances():
     for instance in [use1_instance, usw2_instance]:
         assert instance["Account"] == ACCOUNT_ID
         assert instance["Status"] == "CURRENT"
-        assert instance["StackInstanceStatus"] == {"DetailedStatus": "SUCCEEDED"}
+        if LooseVersion(boto3_version) > LooseVersion("1.29.0"):
+            # "Parameters only available in newer versions"
+            assert instance["StackInstanceStatus"] == {"DetailedStatus": "SUCCEEDED"}
 
 
 @mock_aws
@@ -1615,6 +1621,8 @@ def test_delete_change_set():
 
 @mock_aws
 def test_create_change_set_twice__no_changes():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     cf_client = boto3.client("cloudformation", region_name=REGION_NAME)
 
     # Execute once
@@ -1646,6 +1654,8 @@ def test_create_change_set_twice__no_changes():
 
 @mock_aws
 def test_create_change_set_twice__using_s3__no_changes():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameters only available in newer versions")
     cf_client = boto3.client("cloudformation", region_name=REGION_NAME)
     s3 = boto3.client("s3", region_name=REGION_NAME)
     s3_conn = boto3.resource("s3", region_name=REGION_NAME)
diff --git a/tests/test_cloudformation/test_cloudformation_stack_integration.py b/tests/test_cloudformation/test_cloudformation_stack_integration.py
index 534ec31f7..3be5d3083 100644
--- a/tests/test_cloudformation/test_cloudformation_stack_integration.py
+++ b/tests/test_cloudformation/test_cloudformation_stack_integration.py
@@ -1,5 +1,6 @@
 import io
 import json
+import sys
 import zipfile
 from decimal import Decimal
 from string import Template
@@ -10,10 +11,13 @@ from botocore.exceptions import ClientError
 
 from moto import mock_aws
 from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
+from moto.utilities.distutils_version import LooseVersion
 from tests import EXAMPLE_AMI_ID, EXAMPLE_AMI_ID2
 from tests.markers import requires_docker
 from tests.test_cloudformation.fixtures import fn_join, single_instance_with_ebs_volume
 
+boto3_version = sys.modules["botocore"].__version__
+
 
 @mock_aws
 def test_create_template_without_required_param_boto3():
@@ -274,18 +278,19 @@ def lambda_handler(event, context):
     lambda_conn = boto3.client("lambda", region)
     result = lambda_conn.list_layers()
     layer_name = result["Layers"][0]["LayerName"]
-    result = lambda_conn.list_layer_versions(LayerName=layer_name)
-    result["LayerVersions"][0].pop("CreatedDate")
-    assert result["LayerVersions"] == [
-        {
-            "Version": 1,
-            "LayerVersionArn": f"arn:aws:lambda:{region}:{ACCOUNT_ID}:layer:{layer_name}:1",
-            "CompatibleRuntimes": ["python2.7", "python3.6"],
-            "Description": "Test Layer",
-            "LicenseInfo": "MIT",
-            "CompatibleArchitectures": [],
-        }
-    ]
+    lv = lambda_conn.list_layer_versions(LayerName=layer_name)["LayerVersions"][0]
+
+    assert lv["Version"] == 1
+    assert (
+        lv["LayerVersionArn"]
+        == f"arn:aws:lambda:{region}:{ACCOUNT_ID}:layer:{layer_name}:1"
+    )
+    assert lv["CompatibleRuntimes"] == ["python2.7", "python3.6"]
+    assert lv["Description"] == "Test Layer"
+    assert lv["LicenseInfo"] == "MIT"
+    if LooseVersion(boto3_version) > LooseVersion("1.29.0"):
+        # "Parameters only available in newer versions"
+        assert lv["CompatibleArchitectures"] == []
 
 
 @mock_aws
diff --git a/tests/test_core/test_auth.py b/tests/test_core/test_auth.py
index 4813fb420..9dedf9040 100644
--- a/tests/test_core/test_auth.py
+++ b/tests/test_core/test_auth.py
@@ -1,5 +1,7 @@
 import json
+import sys
 from typing import Any, Dict, Optional
+from unittest import SkipTest
 from uuid import uuid4
 
 import boto3
@@ -9,6 +11,9 @@ from botocore.exceptions import ClientError
 from moto import mock_aws
 from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
 from moto.core import set_initial_no_auth_action_count
+from moto.utilities.distutils_version import LooseVersion
+
+boto3_version = sys.modules["botocore"].__version__
 
 
 @mock_aws
@@ -191,6 +196,8 @@ def test_invalid_client_token_id() -> None:
 @set_initial_no_auth_action_count(0)
 @mock_aws
 def test_auth_failure() -> None:
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Error handling is different in newer versions")
     client = boto3.client(
         "ec2",
         region_name="us-east-1",
@@ -230,6 +237,8 @@ def test_signature_does_not_match() -> None:
 @set_initial_no_auth_action_count(2)
 @mock_aws
 def test_auth_failure_with_valid_access_key_id() -> None:
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Error handling is different in newer versions")
     access_key = create_user_with_access_key()
     client = boto3.client(
         "ec2",
@@ -250,6 +259,8 @@ def test_auth_failure_with_valid_access_key_id() -> None:
 @set_initial_no_auth_action_count(2)
 @mock_aws
 def test_access_denied_with_no_policy() -> None:
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Error handling is different in newer versions")
     user_name = "test-user"
     access_key = create_user_with_access_key(user_name)
     client = boto3.client(
@@ -271,6 +282,8 @@ def test_access_denied_with_no_policy() -> None:
 @set_initial_no_auth_action_count(3)
 @mock_aws
 def test_access_denied_with_not_allowing_policy() -> None:
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Error handling is different in newer versions")
     user_name = "test-user"
     inline_policy_document = {
         "Version": "2012-10-17",
@@ -339,6 +352,8 @@ def test_access_denied_explicitly_on_specific_resource() -> None:
 @set_initial_no_auth_action_count(3)
 @mock_aws
 def test_access_denied_for_run_instances() -> None:
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Error handling is different in newer versions")
     # https://github.com/getmoto/moto/issues/2774
     # The run-instances method was broken between botocore versions 1.15.8 and 1.15.12
     # This was due to the inclusion of '"idempotencyToken":true' in the response, somehow altering the signature and breaking the authentication
@@ -372,6 +387,8 @@ def test_access_denied_for_run_instances() -> None:
 @set_initial_no_auth_action_count(3)
 @mock_aws
 def test_access_denied_with_denying_policy() -> None:
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Error handling is different in newer versions")
     user_name = "test-user"
     inline_policy_document = {
         "Version": "2012-10-17",
@@ -533,6 +550,8 @@ def test_s3_access_denied_with_denying_inline_group_policy() -> None:
 @set_initial_no_auth_action_count(10)
 @mock_aws
 def test_access_denied_with_many_irrelevant_policies() -> None:
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Error handling is different in newer versions")
     user_name = "test-user"
     inline_policy_document = {
         "Version": "2012-10-17",
diff --git a/tests/test_core/test_backenddict.py b/tests/test_core/test_backenddict.py
index 0d1ed0984..1dffd15ac 100644
--- a/tests/test_core/test_backenddict.py
+++ b/tests/test_core/test_backenddict.py
@@ -6,8 +6,8 @@ from typing import Any, List, Optional
 import pytest
 
 from moto.autoscaling.models import AutoScalingBackend
-from moto.core import DEFAULT_ACCOUNT_ID, BackendDict, BaseBackend
-from moto.core.base_backend import AccountSpecificBackend
+from moto.core import DEFAULT_ACCOUNT_ID
+from moto.core.base_backend import AccountSpecificBackend, BackendDict, BaseBackend
 from moto.ec2.models import EC2Backend
 from moto.elbv2.models import ELBv2Backend
 
diff --git a/tests/test_core/test_ec2_vpc_endpoint_services.py b/tests/test_core/test_ec2_vpc_endpoint_services.py
index b804da1f1..9b0ce6515 100644
--- a/tests/test_core/test_ec2_vpc_endpoint_services.py
+++ b/tests/test_core/test_ec2_vpc_endpoint_services.py
@@ -3,11 +3,16 @@
 #
 # There are some issues with running these tests in parallel
 # Running them as part of 'moto/core' avoids that problem
+import sys
+
 import boto3
 import pytest
 from botocore.exceptions import ClientError
 
 from moto import mock_aws
+from moto.utilities.distutils_version import LooseVersion
+
+boto3_version = sys.modules["botocore"].__version__
 
 
 @mock_aws
@@ -103,9 +108,11 @@ def test_describe_vpc_default_endpoint_services() -> None:
     assert details["ManagesVpcEndpoints"] is False
     assert details["Owner"] == "amazon"
     assert details["PrivateDnsName"] == "config.us-west-1.amazonaws.com"
-    assert details["PrivateDnsNames"] == [
-        {"PrivateDnsName": "config.us-west-1.amazonaws.com"}
-    ]
+    if LooseVersion(boto3_version) > LooseVersion("1.29.0"):
+        # Attribute wasn't available in older botocore versions
+        assert details["PrivateDnsNames"] == [
+            {"PrivateDnsName": "config.us-west-1.amazonaws.com"}
+        ]
     assert details["PrivateDnsNameVerificationState"] == "verified"
     assert details["ServiceName"] == "com.amazonaws.us-west-1.config"
     assert details["ServiceType"] == [{"ServiceType": "Interface"}]
diff --git a/tests/test_core/test_importorder.py b/tests/test_core/test_importorder.py
index e235f553a..7c4569c1e 100644
--- a/tests/test_core/test_importorder.py
+++ b/tests/test_core/test_importorder.py
@@ -1,3 +1,4 @@
+import sys
 from typing import Any, List
 from unittest import SkipTest
 
@@ -5,6 +6,9 @@ import boto3
 import pytest
 
 from moto import mock_aws, settings
+from moto.utilities.distutils_version import LooseVersion
+
+boto3_version = sys.modules["botocore"].__version__
 
 
 @pytest.fixture(scope="function", name="aws_credentials")
@@ -70,6 +74,8 @@ def test_mock_works_with_resource_created_outside(
 
 
 def test_patch_can_be_called_on_a_mocked_client() -> None:
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Error handling is different in newer versions")
     # start S3 after the mock, ensuring that the client contains our event-handler
     m = mock_aws()
     m.start()
@@ -118,6 +124,8 @@ class ImportantBusinessLogic:
 def test_mock_works_when_replacing_client(
     aws_credentials: Any,  # pylint: disable=unused-argument
 ) -> None:
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Error handling is different in newer versions")
     logic = ImportantBusinessLogic()
 
     m = mock_aws()
diff --git a/tests/test_core/test_request_passthrough.py b/tests/test_core/test_request_passthrough.py
index 16867d8cc..a563a9856 100644
--- a/tests/test_core/test_request_passthrough.py
+++ b/tests/test_core/test_request_passthrough.py
@@ -8,11 +8,16 @@ import requests
 from botocore.exceptions import ClientError
 
 from moto import mock_aws, settings
+from moto.core.versions import is_werkzeug_2_0_x_or_older
 
 
 def test_passthrough_calls_for_entire_service() -> None:
     if not settings.TEST_DECORATOR_MODE:
         raise SkipTest("Can only test config when using decorators")
+    if is_werkzeug_2_0_x_or_older():
+        raise SkipTest(
+            "Bug in old werkzeug versions where headers with byte-values throw errors"
+        )
     # Still mock the credentials ourselves, we don't want to reach out to AWS for real
     with patch.dict(
         os.environ, {"AWS_ACCESS_KEY_ID": "a", "AWS_SECRET_ACCESS_KEY": "b"}
@@ -50,6 +55,10 @@ def test_passthrough_calls_for_entire_service() -> None:
 def test_passthrough_calls_for_specific_url() -> None:
     if not settings.TEST_DECORATOR_MODE:
         raise SkipTest("Can only test config when using decorators")
+    if is_werkzeug_2_0_x_or_older():
+        raise SkipTest(
+            "Bug in old werkzeug versions where headers with byte-values throw errors"
+        )
     # Still mock the credentials ourselves, we don't want to reach out to AWS for real
     with patch.dict(
         os.environ, {"AWS_ACCESS_KEY_ID": "a", "AWS_SECRET_ACCESS_KEY": "b"}
@@ -135,9 +144,9 @@ def test_passthrough__using_unsupported_service() -> None:
                 }
             }
         ):
-            b2bi = boto3.client("b2bi", "us-east-1")
+            workdocs = boto3.client("workdocs", "us-east-1")
             with pytest.raises(ClientError) as exc:
-                b2bi.list_transformers()
+                workdocs.describe_users()
             assert "Not yet implemented" in str(exc.value)
 
 
diff --git a/tests/test_core/test_server.py b/tests/test_core/test_server.py
index eadc0f576..2388e8f6d 100644
--- a/tests/test_core/test_server.py
+++ b/tests/test_core/test_server.py
@@ -1,11 +1,11 @@
 from unittest.mock import Mock, patch
 
-from moto.server import DomainDispatcherApplication, create_backend_app, main
+from moto.server import main
 
 
 def test_wrong_arguments() -> None:
     try:
-        main(["name", "test1", "test2", "test3"])
+        main(["test1", "test2", "test3"])
         assert False, (
             "main() when called with the incorrect number of args"
             " should raise a system exit"
@@ -16,7 +16,7 @@ def test_wrong_arguments() -> None:
 
 @patch("moto.server.run_simple")
 def test_right_arguments(run_simple: Mock) -> None:  # type: ignore[misc]
-    main(["s3"])
+    main(["-r"])
     func_call = run_simple.call_args[0]
     assert func_call[0] == "127.0.0.1"
     assert func_call[1] == 5000
@@ -24,24 +24,7 @@ def test_right_arguments(run_simple: Mock) -> None:  # type: ignore[misc]
 
 @patch("moto.server.run_simple")
 def test_port_argument(run_simple: Mock) -> None:  # type: ignore[misc]
-    main(["s3", "--port", "8080"])
+    main(["--port", "8080"])
     func_call = run_simple.call_args[0]
     assert func_call[0] == "127.0.0.1"
     assert func_call[1] == 8080
-
-
-def test_domain_dispatched() -> None:
-    dispatcher = DomainDispatcherApplication(create_backend_app)
-    backend_app = dispatcher.get_application(
-        {"HTTP_HOST": "email.us-east1.amazonaws.com"}
-    )
-    keys = list(backend_app.view_functions.keys())
-    assert keys[0] == "EmailResponse.dispatch"
-
-
-def test_domain_dispatched_with_service() -> None:
-    # If we pass a particular service, always return that.
-    dispatcher = DomainDispatcherApplication(create_backend_app, service="s3")
-    backend_app = dispatcher.get_application({"HTTP_HOST": "s3.us-east1.amazonaws.com"})
-    keys = set(backend_app.view_functions.keys())
-    assert "moto.s3.responses.key_response" in keys
diff --git a/tests/test_ec2/test_instances.py b/tests/test_ec2/test_instances.py
index 6dbc12b69..161938d7b 100644
--- a/tests/test_ec2/test_instances.py
+++ b/tests/test_ec2/test_instances.py
@@ -2188,18 +2188,6 @@ def test_describe_instance_attribute():
         assert ex.value.response["Error"]["Message"] == message
 
 
-@mock_aws
-def test_warn_on_invalid_ami():
-    if settings.TEST_SERVER_MODE:
-        raise SkipTest("Can't capture warnings in server mode.")
-    ec2 = boto3.resource("ec2", "us-east-1")
-    with pytest.warns(
-        PendingDeprecationWarning,
-        match=r"Could not find AMI with image-id:invalid-ami.+",
-    ):
-        ec2.create_instances(ImageId="invalid-ami", MinCount=1, MaxCount=1)
-
-
 @mock_aws
 @mock.patch(
     "moto.ec2.models.instances.settings.ENABLE_AMI_VALIDATION",
diff --git a/tests/test_iam/test_iam.py b/tests/test_iam/test_iam.py
index e2eccced1..558441dc8 100644
--- a/tests/test_iam/test_iam.py
+++ b/tests/test_iam/test_iam.py
@@ -706,8 +706,10 @@ def test_get_policy():
     assert policy["Policy"]["Arn"] == f"arn:aws:iam::{ACCOUNT_ID}:policy/TestGetPolicy"
 
 
-@mock_aws
+@mock_aws(config={"iam": {"load_aws_managed_policies": True}})
 def test_get_aws_managed_policy():
+    if settings.TEST_SERVER_MODE:
+        raise SkipTest("Policies not loaded in ServerMode")
     conn = boto3.client("iam", region_name="us-east-1")
     managed_policy_arn = "arn:aws:iam::aws:policy/IAMUserChangePassword"
     managed_policy_create_date = datetime.strptime(
@@ -742,8 +744,10 @@ def test_get_policy_version():
     assert retrieved.get("PolicyVersion")["IsDefaultVersion"] is False
 
 
-@mock_aws
+@mock_aws(config={"iam": {"load_aws_managed_policies": True}})
 def test_get_aws_managed_policy_version():
+    if settings.TEST_SERVER_MODE:
+        raise SkipTest("Policies not loaded in ServerMode")
     conn = boto3.client("iam", region_name="us-east-1")
     managed_policy_arn = (
         "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
@@ -763,8 +767,10 @@ def test_get_aws_managed_policy_version():
     assert isinstance(retrieved["PolicyVersion"]["Document"], dict)
 
 
-@mock_aws
+@mock_aws(config={"iam": {"load_aws_managed_policies": True}})
 def test_get_aws_managed_policy_v6_version():
+    if settings.TEST_SERVER_MODE:
+        raise SkipTest("Policies not loaded in ServerMode")
     conn = boto3.client("iam", region_name="us-east-1")
     managed_policy_arn = "arn:aws:iam::aws:policy/job-function/SystemAdministrator"
     with pytest.raises(ClientError):
@@ -1953,8 +1959,10 @@ def test_get_access_key_last_used_when_used():
     assert resp["AccessKeyLastUsed"]["Region"] == "us-east-1"
 
 
-@mock_aws
+@mock_aws(config={"iam": {"load_aws_managed_policies": True}})
 def test_managed_policy():
+    if settings.TEST_SERVER_MODE:
+        raise SkipTest("Policies not loaded in ServerMode")
     conn = boto3.client("iam", region_name="us-west-1")
 
     conn.create_policy(
@@ -2364,8 +2372,10 @@ def test_delete_ssh_public_key():
     assert len(resp["SSHPublicKeys"]) == 0
 
 
-@mock_aws
+@mock_aws(config={"iam": {"load_aws_managed_policies": True}})
 def test_get_account_authorization_details():
+    if settings.TEST_SERVER_MODE:
+        raise SkipTest("Policies not loaded in ServerMode")
     test_policy = json.dumps(
         {
             "Version": "2012-10-17",
diff --git a/tests/test_iam/test_iam_groups.py b/tests/test_iam/test_iam_groups.py
index eedc4cccf..5510b9d7c 100644
--- a/tests/test_iam/test_iam_groups.py
+++ b/tests/test_iam/test_iam_groups.py
@@ -1,5 +1,6 @@
 import json
 from datetime import datetime
+from unittest import SkipTest
 
 import boto3
 import pytest
@@ -213,8 +214,10 @@ def test_put_group_policy():
     )
 
 
-@mock_aws
+@mock_aws(config={"iam": {"load_aws_managed_policies": True}})
 def test_attach_group_policies():
+    if settings.TEST_SERVER_MODE:
+        raise SkipTest("Policies not loaded in ServerMode")
     conn = boto3.client("iam", region_name="us-east-1")
     conn.create_group(GroupName="my-group")
     assert (
diff --git a/tests/test_iam/test_iam_resets.py b/tests/test_iam/test_iam_resets.py
index 91508f778..1280a09b7 100644
--- a/tests/test_iam/test_iam_resets.py
+++ b/tests/test_iam/test_iam_resets.py
@@ -1,13 +1,17 @@
 import json
+import os
+from unittest import SkipTest, mock
 
 import boto3
 
-from moto import mock_aws
+from moto import mock_aws, settings
 
 
 # Test IAM User Inline Policy
 def test_policies_are_not_kept_after_mock_ends():
-    with mock_aws():
+    if settings.TEST_SERVER_MODE:
+        raise SkipTest("Policies not loaded in ServerMode")
+    with mock_aws(config={"iam": {"load_aws_managed_policies": True}}):
         iam_client = boto3.client("iam", "us-east-1")
         role_name = "test"
         assume_role_policy_document = {
@@ -34,6 +38,17 @@ def test_policies_are_not_kept_after_mock_ends():
         assert iam_policies[0]["Arn"] == "arn:aws:iam::aws:policy/ReadOnlyAccess"
         assert iam_client.list_roles()["Roles"][0]["RoleName"] == "test"
 
-    with mock_aws():
+    with mock_aws(config={"iam": {"load_aws_managed_policies": True}}):
         resp = iam_client.list_policies(Scope="AWS", OnlyAttached=True)
         assert len(resp["Policies"]) == 0
+
+
+def test_policies_are_loaded_when_using_env_variable():
+    if settings.TEST_SERVER_MODE:
+        raise SkipTest("EnvVar not loaded in ServerMode")
+    with mock.patch.dict(os.environ, {"MOTO_IAM_LOAD_MANAGED_POLICIES": "true"}):
+        with mock_aws():
+            iam_client = boto3.client("iam", "us-east-1")
+
+            iam_policies = iam_client.list_policies(Scope="AWS")["Policies"]
+            assert len(iam_policies) > 10
diff --git a/tests/test_iotdata/test_iotdata.py b/tests/test_iotdata/test_iotdata.py
index 73a5e4d1b..60e58c081 100644
--- a/tests/test_iotdata/test_iotdata.py
+++ b/tests/test_iotdata/test_iotdata.py
@@ -1,4 +1,6 @@
 import json
+import sys
+from unittest import SkipTest
 
 import boto3
 import pytest
@@ -7,6 +9,9 @@ from botocore.exceptions import ClientError
 import moto.iotdata.models
 from moto import mock_aws, settings
 from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
+from moto.utilities.distutils_version import LooseVersion
+
+boto3_version = sys.modules["botocore"].__version__
 
 
 @mock_aws
@@ -94,6 +99,8 @@ def test_update():
 
 @mock_aws
 def test_create_named_shadows():
+    if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
+        raise SkipTest("Parameter only available in newer versions")
     iot_client = boto3.client("iot", region_name="ap-northeast-1")
     client = boto3.client("iot-data", region_name="ap-northeast-1")
     thing_name = "my-thing"
diff --git a/tests/test_kinesisvideoarchivedmedia/test_kinesisvideoarchivedmedia.py b/tests/test_kinesisvideoarchivedmedia/test_kinesisvideoarchivedmedia.py
index ce8ba9e1a..01cc0ffe5 100644
--- a/tests/test_kinesisvideoarchivedmedia/test_kinesisvideoarchivedmedia.py
+++ b/tests/test_kinesisvideoarchivedmedia/test_kinesisvideoarchivedmedia.py
@@ -1,13 +1,16 @@
 from datetime import timedelta
+from unittest import SkipTest
 
 import boto3
 
-from moto import mock_aws
+from moto import mock_aws, settings
 from moto.core.utils import utcnow
 
 
 @mock_aws
 def test_get_hls_streaming_session_url():
+    if settings.TEST_SERVER_MODE:
+        raise SkipTest("Can't mock KinesisVideo, as DataEndpoint is set to real URL")
     region_name = "ap-northeast-1"
     kvs_client = boto3.client("kinesisvideo", region_name=region_name)
     stream_name = "my-stream"
@@ -30,6 +33,8 @@ def test_get_hls_streaming_session_url():
 
 @mock_aws
 def test_get_dash_streaming_session_url():
+    if settings.TEST_SERVER_MODE:
+        raise SkipTest("Can't mock KinesisVideo, as DataEndpoint is set to real URL")
     region_name = "ap-northeast-1"
     kvs_client = boto3.client("kinesisvideo", region_name=region_name)
     stream_name = "my-stream"
@@ -52,6 +57,8 @@ def test_get_dash_streaming_session_url():
 
 @mock_aws
 def test_get_clip():
+    if settings.TEST_SERVER_MODE:
+        raise SkipTest("Can't mock KinesisVideo, as DataEndpoint is set to real URL")
     region_name = "ap-northeast-1"
     kvs_client = boto3.client("kinesisvideo", region_name=region_name)
     stream_name = "my-stream"
diff --git a/tests/test_moto_api/seeder/test_seeder.py b/tests/test_moto_api/seeder/test_seeder.py
index 3638cc451..970c30524 100644
--- a/tests/test_moto_api/seeder/test_seeder.py
+++ b/tests/test_moto_api/seeder/test_seeder.py
@@ -41,7 +41,7 @@ class TestDifferentAccountsDoesNotBreakSeeding:
         instances = self.ec2_client.run_instances(MaxCount=1, MinCount=1)["Instances"]
 
         instance_ids = [instance["InstanceId"] for instance in instances]
-        assert instance_ids == ["i-954ed79c032a70bf6"]
+        assert instance_ids == ["i-73bd4755d05ad7853"]
 
     def test_1(self) -> None:
         # Create some data in a different account (111111111111)
diff --git a/tests/test_s3/test_s3.py b/tests/test_s3/test_s3.py
index 49f2dadb0..edc2b26f2 100644
--- a/tests/test_s3/test_s3.py
+++ b/tests/test_s3/test_s3.py
@@ -461,7 +461,7 @@ def test_bucket_name_with_special_chars(name):
 )
 @mock_aws
 def test_key_with_special_characters(key):
-    if settings.test_proxy_mode():
+    if settings.is_test_proxy_mode():
         raise SkipTest("Keys starting with a / don't work well in ProxyMode")
     s3_resource = boto3.resource("s3", region_name=DEFAULT_REGION_NAME)
     client = boto3.client("s3", region_name=DEFAULT_REGION_NAME)
@@ -778,7 +778,7 @@ def test_streaming_upload_from_file_to_presigned_url():
     )
     with open(__file__, "rb") as fhandle:
         get_kwargs = {"data": fhandle}
-        if settings.test_proxy_mode():
+        if settings.is_test_proxy_mode():
             add_proxy_details(get_kwargs)
         response = requests.get(presigned_url, **get_kwargs)
     assert response.status_code == 200
@@ -800,7 +800,7 @@ def test_upload_from_file_to_presigned_url():
     files = {"upload_file": open("text.txt", "rb")}
 
     put_kwargs = {"files": files}
-    if settings.test_proxy_mode():
+    if settings.is_test_proxy_mode():
         add_proxy_details(put_kwargs)
     requests.put(presigned_url, **put_kwargs)
     resp = s3_client.get_object(Bucket="mybucket", Key="file_upload")
@@ -2638,7 +2638,7 @@ def test_root_dir_with_empty_name_works():
 @mock_aws
 def test_leading_slashes_not_removed(bucket_name):
     """Make sure that leading slashes are not removed internally."""
-    if settings.test_proxy_mode():
+    if settings.is_test_proxy_mode():
         raise SkipTest("Doesn't quite work right with the Proxy")
     s3_client = boto3.client("s3", region_name=DEFAULT_REGION_NAME)
     s3_client.create_bucket(Bucket=bucket_name)
@@ -2827,7 +2827,7 @@ def test_creating_presigned_post():
         "files": {"file": fdata},
         "allow_redirects": False,
     }
-    if settings.test_proxy_mode():
+    if settings.is_test_proxy_mode():
         add_proxy_details(kwargs)
     resp = requests.post(data["url"], **kwargs)
     assert resp.status_code == 303
@@ -2859,7 +2859,7 @@ def test_presigned_put_url_with_approved_headers():
 
     # Verify S3 throws an error when the header is not provided
     kwargs = {"data": content}
-    if settings.test_proxy_mode():
+    if settings.is_test_proxy_mode():
         add_proxy_details(kwargs)
     response = requests.put(url, **kwargs)
     assert response.status_code == 403
@@ -2871,7 +2871,7 @@ def test_presigned_put_url_with_approved_headers():
 
     # Verify S3 throws an error when the header has the wrong value
     kwargs = {"data": content, "headers": {"Content-Type": "application/unknown"}}
-    if settings.test_proxy_mode():
+    if settings.is_test_proxy_mode():
         add_proxy_details(kwargs)
     response = requests.put(url, **kwargs)
     assert response.status_code == 403
@@ -2883,7 +2883,7 @@ def test_presigned_put_url_with_approved_headers():
 
     # Verify S3 uploads correctly when providing the meta data
     kwargs = {"data": content, "headers": {"Content-Type": expected_contenttype}}
-    if settings.test_proxy_mode():
+    if settings.is_test_proxy_mode():
         add_proxy_details(kwargs)
     response = requests.put(url, **kwargs)
     assert response.status_code == 200
@@ -2916,7 +2916,7 @@ def test_presigned_put_url_with_custom_headers():
 
     # Verify S3 uploads correctly when providing the meta data
     kwargs = {"data": content}
-    if settings.test_proxy_mode():
+    if settings.is_test_proxy_mode():
         add_proxy_details(kwargs)
     response = requests.put(url, **kwargs)
     assert response.status_code == 200
diff --git a/tests/test_s3/test_s3_acl.py b/tests/test_s3/test_s3_acl.py
index 1f6ecb180..9dd998c12 100644
--- a/tests/test_s3/test_s3_acl.py
+++ b/tests/test_s3/test_s3_acl.py
@@ -119,7 +119,7 @@ def test_s3_object_in_public_bucket_using_multiple_presigned_urls():
         "get_object", params, ExpiresIn=900
     )
     kwargs = {}
-    if settings.test_proxy_mode():
+    if settings.is_test_proxy_mode():
         add_proxy_details(kwargs)
     for i in range(1, 10):
         response = requests.get(presigned_url, **kwargs)
@@ -269,7 +269,7 @@ def test_object_acl_with_presigned_post():
 
     with open(object_name, "rb") as fhandle:
         kwargs = {"files": {"file": (object_name, fhandle)}}
-        if settings.test_proxy_mode():
+        if settings.is_test_proxy_mode():
             add_proxy_details(kwargs)
         requests.post(response["url"], data=response["fields"], **kwargs)
 
diff --git a/tests/test_s3/test_s3_multipart.py b/tests/test_s3/test_s3_multipart.py
index 99025a41f..6c01506f0 100644
--- a/tests/test_s3/test_s3_multipart.py
+++ b/tests/test_s3/test_s3_multipart.py
@@ -15,7 +15,7 @@ from moto.s3.responses import DEFAULT_REGION_NAME
 from moto.settings import (
     S3_UPLOAD_PART_MIN_SIZE,
     get_s3_default_key_buffer_size,
-    test_proxy_mode,
+    is_test_proxy_mode,
 )
 from tests import DEFAULT_ACCOUNT_ID
 
@@ -986,7 +986,7 @@ def test_generate_presigned_url_on_multipart_upload_without_acl():
         "head_object", Params={"Bucket": bucket_name, "Key": object_key}
     )
     kwargs = {}
-    if test_proxy_mode():
+    if is_test_proxy_mode():
         add_proxy_details(kwargs)
     res = requests.get(url, **kwargs)
     assert res.status_code == 200
diff --git a/tests/test_s3/test_s3_tagging.py b/tests/test_s3/test_s3_tagging.py
index a94fe6c5d..b4eb5f82f 100644
--- a/tests/test_s3/test_s3_tagging.py
+++ b/tests/test_s3/test_s3_tagging.py
@@ -476,7 +476,7 @@ def test_generate_url_for_tagged_object():
         "get_object", Params={"Bucket": "my-bucket", "Key": "test.txt"}
     )
     kwargs = {}
-    if settings.test_proxy_mode():
+    if settings.is_test_proxy_mode():
         add_proxy_details(kwargs)
     response = requests.get(url, **kwargs)
     assert response.content == b"abc"