localstack-core 4.7.1.dev120__py3-none-any.whl → 4.7.1.dev122__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- localstack/services/cloudformation/engine/v2/change_set_model.py +4 -0
- localstack/services/cloudformation/engine/v2/change_set_model_describer.py +14 -3
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +22 -68
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +58 -23
- localstack/services/cloudformation/engine/v2/change_set_model_transform.py +15 -1
- localstack/services/cloudformation/engine/v2/change_set_model_validator.py +16 -0
- localstack/services/cloudformation/engine/v2/resolving.py +1 -1
- localstack/services/cloudformation/resource_provider.py +2 -0
- localstack/services/cloudformation/v2/provider.py +4 -9
- localstack/services/cloudformation/v2/utils.py +4 -1
- localstack/services/stores.py +1 -1
- localstack/version.py +2 -2
- {localstack_core-4.7.1.dev120.dist-info → localstack_core-4.7.1.dev122.dist-info}/METADATA +1 -1
- {localstack_core-4.7.1.dev120.dist-info → localstack_core-4.7.1.dev122.dist-info}/RECORD +22 -22
- localstack_core-4.7.1.dev122.dist-info/plux.json +1 -0
- localstack_core-4.7.1.dev120.dist-info/plux.json +0 -1
- {localstack_core-4.7.1.dev120.data → localstack_core-4.7.1.dev122.data}/scripts/localstack +0 -0
- {localstack_core-4.7.1.dev120.data → localstack_core-4.7.1.dev122.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.7.1.dev120.data → localstack_core-4.7.1.dev122.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.7.1.dev120.dist-info → localstack_core-4.7.1.dev122.dist-info}/WHEEL +0 -0
- {localstack_core-4.7.1.dev120.dist-info → localstack_core-4.7.1.dev122.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.7.1.dev120.dist-info → localstack_core-4.7.1.dev122.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.7.1.dev120.dist-info → localstack_core-4.7.1.dev122.dist-info}/top_level.txt +0 -0
@@ -785,6 +785,9 @@ class ChangeSetModel:
|
|
785
785
|
|
786
786
|
logical_id = arguments.value
|
787
787
|
|
788
|
+
if isinstance(logical_id, str) and logical_id.startswith("AWS::"):
|
789
|
+
return arguments.change_type
|
790
|
+
|
788
791
|
node_condition = self._retrieve_condition_if_exists(condition_name=logical_id)
|
789
792
|
if isinstance(node_condition, NodeCondition):
|
790
793
|
return node_condition.change_type
|
@@ -863,6 +866,7 @@ class ChangeSetModel:
|
|
863
866
|
) -> bool:
|
864
867
|
# a bit hacky but we have to load the resource provider executor _and_ resource provider to get the schema
|
865
868
|
# Note: we don't log the attempt to load the resource provider, we need to make sure this is only done once and we already do this in the executor
|
869
|
+
|
866
870
|
resource_provider = ResourceProviderExecutor.try_load_resource_provider(resource_type.value)
|
867
871
|
if not resource_provider:
|
868
872
|
# if we don't support a resource, assume an in-place update for simplicity
|
@@ -99,8 +99,11 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
99
99
|
def visit_node_intrinsic_function_fn_join(
|
100
100
|
self, node_intrinsic_function: NodeIntrinsicFunction
|
101
101
|
) -> PreprocEntityDelta:
|
102
|
-
|
103
|
-
|
102
|
+
delta_args = super().visit(node_intrinsic_function.arguments)
|
103
|
+
if isinstance(delta_args.after, list) and CHANGESET_KNOWN_AFTER_APPLY in delta_args.after:
|
104
|
+
delta_args.after = CHANGESET_KNOWN_AFTER_APPLY
|
105
|
+
return delta_args
|
106
|
+
|
104
107
|
delta = super().visit_node_intrinsic_function_fn_join(
|
105
108
|
node_intrinsic_function=node_intrinsic_function
|
106
109
|
)
|
@@ -264,6 +267,14 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
264
267
|
export_name = node_intrinsic_function.arguments.value
|
265
268
|
|
266
269
|
self._change_set.status_reason = f"[WARN] --include-property-values option can return incomplete ChangeSet data because: ChangeSet creation failed for resource [{resource_name}] because: No export named {export_name}"
|
267
|
-
delta.after =
|
270
|
+
delta.after = CHANGESET_KNOWN_AFTER_APPLY
|
271
|
+
|
272
|
+
return delta
|
268
273
|
|
274
|
+
def visit_node_intrinsic_function_fn_split(
|
275
|
+
self, node_intrinsic_function: NodeIntrinsicFunction
|
276
|
+
) -> PreprocEntityDelta:
|
277
|
+
delta = super().visit_node_intrinsic_function_fn_split(node_intrinsic_function)
|
278
|
+
if isinstance(delta.after, list) and ":".join(delta.after) == CHANGESET_KNOWN_AFTER_APPLY:
|
279
|
+
delta.after = [CHANGESET_KNOWN_AFTER_APPLY]
|
269
280
|
return delta
|
@@ -1,9 +1,11 @@
|
|
1
1
|
import copy
|
2
2
|
import logging
|
3
|
+
import re
|
3
4
|
import uuid
|
5
|
+
from collections.abc import Callable
|
4
6
|
from dataclasses import dataclass
|
5
7
|
from datetime import UTC, datetime
|
6
|
-
from typing import Final, Protocol
|
8
|
+
from typing import Final, Protocol, TypeVar
|
7
9
|
|
8
10
|
from localstack import config
|
9
11
|
from localstack.aws.api.cloudformation import (
|
@@ -15,18 +17,14 @@ from localstack.aws.api.cloudformation import (
|
|
15
17
|
from localstack.constants import INTERNAL_AWS_SECRET_ACCESS_KEY
|
16
18
|
from localstack.services.cloudformation.analytics import track_resource_operation
|
17
19
|
from localstack.services.cloudformation.deployment_utils import log_not_available_message
|
18
|
-
from localstack.services.cloudformation.engine.template_deployer import REGEX_OUTPUT_APIGATEWAY
|
19
20
|
from localstack.services.cloudformation.engine.v2.change_set_model import (
|
20
21
|
NodeDependsOn,
|
21
|
-
NodeIntrinsicFunction,
|
22
22
|
NodeOutput,
|
23
23
|
NodeResource,
|
24
|
-
TerminalValueCreated,
|
25
|
-
TerminalValueModified,
|
26
|
-
TerminalValueUnchanged,
|
27
24
|
is_nothing,
|
28
25
|
)
|
29
26
|
from localstack.services.cloudformation.engine.v2.change_set_model_preproc import (
|
27
|
+
_AWS_URL_SUFFIX,
|
30
28
|
MOCKED_REFERENCE,
|
31
29
|
ChangeSetModelPreproc,
|
32
30
|
PreprocEntityDelta,
|
@@ -42,12 +40,17 @@ from localstack.services.cloudformation.resource_provider import (
|
|
42
40
|
ResourceProviderPayload,
|
43
41
|
)
|
44
42
|
from localstack.services.cloudformation.v2.entities import ChangeSet, ResolvedResource
|
45
|
-
from localstack.utils.urls import localstack_host
|
46
43
|
|
47
44
|
LOG = logging.getLogger(__name__)
|
48
45
|
|
49
46
|
EventOperationFromAction = {"Add": "CREATE", "Modify": "UPDATE", "Remove": "DELETE"}
|
50
47
|
|
48
|
+
REGEX_OUTPUT_APIGATEWAY = re.compile(
|
49
|
+
rf"^(https?://.+\.execute-api\.)(?:[^-]+-){{2,3}}\d\.(amazonaws\.com|{_AWS_URL_SUFFIX})/?(.*)$"
|
50
|
+
)
|
51
|
+
|
52
|
+
_T = TypeVar("_T")
|
53
|
+
|
51
54
|
|
52
55
|
@dataclass
|
53
56
|
class ChangeSetModelExecutorResult:
|
@@ -220,6 +223,12 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
220
223
|
try:
|
221
224
|
delta = super().visit_node_resource(node_resource=node_resource)
|
222
225
|
except Exception as e:
|
226
|
+
LOG.debug(
|
227
|
+
"preprocessing resource '%s' failed: %s",
|
228
|
+
node_resource.name,
|
229
|
+
e,
|
230
|
+
exc_info=LOG.isEnabledFor(logging.DEBUG) and config.CFN_VERBOSE_ERRORS,
|
231
|
+
)
|
223
232
|
self._process_event(
|
224
233
|
action=node_resource.change_type.to_change_action(),
|
225
234
|
logical_resource_id=node_resource.name,
|
@@ -507,7 +516,8 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
507
516
|
f'No resource provider found for "{resource_type}"',
|
508
517
|
)
|
509
518
|
LOG.warning(
|
510
|
-
"Deployment of resource type %s successful due to config CFN_IGNORE_UNSUPPORTED_RESOURCE_TYPES"
|
519
|
+
"Deployment of resource type %s successful due to config CFN_IGNORE_UNSUPPORTED_RESOURCE_TYPES",
|
520
|
+
resource_type,
|
511
521
|
)
|
512
522
|
LOG.warning(
|
513
523
|
"Deployment of resource type %s will fail in upcoming LocalStack releases unless CFN_IGNORE_UNSUPPORTED_RESOURCE_TYPES is explicitly enabled.",
|
@@ -638,66 +648,10 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
638
648
|
}
|
639
649
|
return resource_provider_payload
|
640
650
|
|
641
|
-
|
642
|
-
|
643
|
-
api_match = REGEX_OUTPUT_APIGATEWAY.match(value)
|
644
|
-
if api_match and value not in config.CFN_STRING_REPLACEMENT_DENY_LIST:
|
645
|
-
prefix = api_match[1]
|
646
|
-
host = api_match[2]
|
647
|
-
path = api_match[3]
|
648
|
-
port = localstack_host().port
|
649
|
-
value = f"{prefix}{host}:{port}/{path}"
|
650
|
-
return value
|
651
|
-
|
652
|
-
return value
|
653
|
-
|
654
|
-
def _replace_url_outputs_in_delta_if_required(
|
655
|
-
self, delta: PreprocEntityDelta
|
651
|
+
def _maybe_perform_on_delta(
|
652
|
+
self, delta: PreprocEntityDelta, f: Callable[[_T], _T]
|
656
653
|
) -> PreprocEntityDelta:
|
657
|
-
|
658
|
-
delta.before = self._replace_url_outputs_if_required(delta.before)
|
654
|
+
# we only care about the after state
|
659
655
|
if isinstance(delta.after, str):
|
660
|
-
delta.after =
|
656
|
+
delta.after = f(delta.after)
|
661
657
|
return delta
|
662
|
-
|
663
|
-
def visit_terminal_value_created(
|
664
|
-
self, value: TerminalValueCreated
|
665
|
-
) -> PreprocEntityDelta[str, str]:
|
666
|
-
if isinstance(value.value, str):
|
667
|
-
after = self._replace_url_outputs_if_required(value.value)
|
668
|
-
else:
|
669
|
-
after = value.value
|
670
|
-
return PreprocEntityDelta(after=after)
|
671
|
-
|
672
|
-
def visit_terminal_value_modified(
|
673
|
-
self, value: TerminalValueModified
|
674
|
-
) -> PreprocEntityDelta[str, str]:
|
675
|
-
# we only need to transform the after
|
676
|
-
if isinstance(value.modified_value, str):
|
677
|
-
after = self._replace_url_outputs_if_required(value.modified_value)
|
678
|
-
else:
|
679
|
-
after = value.modified_value
|
680
|
-
return PreprocEntityDelta(before=value.value, after=after)
|
681
|
-
|
682
|
-
def visit_terminal_value_unchanged(
|
683
|
-
self, terminal_value_unchanged: TerminalValueUnchanged
|
684
|
-
) -> PreprocEntityDelta:
|
685
|
-
if isinstance(terminal_value_unchanged.value, str):
|
686
|
-
value = self._replace_url_outputs_if_required(terminal_value_unchanged.value)
|
687
|
-
else:
|
688
|
-
value = terminal_value_unchanged.value
|
689
|
-
return PreprocEntityDelta(before=value, after=value)
|
690
|
-
|
691
|
-
def visit_node_intrinsic_function_fn_join(
|
692
|
-
self, node_intrinsic_function: NodeIntrinsicFunction
|
693
|
-
) -> PreprocEntityDelta:
|
694
|
-
delta = super().visit_node_intrinsic_function_fn_join(node_intrinsic_function)
|
695
|
-
return self._replace_url_outputs_in_delta_if_required(delta)
|
696
|
-
|
697
|
-
def visit_node_intrinsic_function_fn_sub(
|
698
|
-
self, node_intrinsic_function: NodeIntrinsicFunction
|
699
|
-
) -> PreprocEntityDelta:
|
700
|
-
delta = super().visit_node_intrinsic_function_fn_sub(node_intrinsic_function)
|
701
|
-
return self._replace_url_outputs_in_delta_if_required(delta)
|
702
|
-
|
703
|
-
# TODO: other intrinsic functions
|
@@ -60,7 +60,7 @@ from localstack.utils.run import to_str
|
|
60
60
|
from localstack.utils.strings import to_bytes
|
61
61
|
from localstack.utils.urls import localstack_host
|
62
62
|
|
63
|
-
_AWS_URL_SUFFIX = localstack_host().
|
63
|
+
_AWS_URL_SUFFIX = localstack_host().host_and_port() # The value in AWS is "amazonaws.com"
|
64
64
|
|
65
65
|
_PSEUDO_PARAMETERS: Final[set[str]] = {
|
66
66
|
"AWS::Partition",
|
@@ -75,7 +75,11 @@ _PSEUDO_PARAMETERS: Final[set[str]] = {
|
|
75
75
|
|
76
76
|
TBefore = TypeVar("TBefore")
|
77
77
|
TAfter = TypeVar("TAfter")
|
78
|
+
_T = TypeVar("_T")
|
78
79
|
|
80
|
+
REGEX_OUTPUT_APIGATEWAY = re.compile(
|
81
|
+
rf"^(https?://.+\.execute-api\.)(?:[^-]+-){{2,3}}\d\.(amazonaws\.com|{_AWS_URL_SUFFIX})/?(.*)$"
|
82
|
+
)
|
79
83
|
MOCKED_REFERENCE = "unknown"
|
80
84
|
|
81
85
|
VALID_LOGICAL_RESOURCE_ID_RE = re.compile(r"^[A-Za-z0-9]+$")
|
@@ -265,16 +269,16 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
265
269
|
f"No deployed instances of resource '{resource_logical_id}' were found"
|
266
270
|
)
|
267
271
|
properties = resolved_resource.get("Properties", {})
|
268
|
-
# support structured properties, e.g. NestedStack.Outputs.OutputName
|
272
|
+
# TODO support structured properties, e.g. NestedStack.Outputs.OutputName
|
269
273
|
property_value: Any | None = get_value_from_path(properties, property_name)
|
270
274
|
|
271
275
|
if property_value:
|
272
|
-
if not isinstance(property_value, str):
|
276
|
+
if not isinstance(property_value, (str, list)):
|
273
277
|
# TODO: is this correct? If there is a bug in the logic here, it's probably
|
274
278
|
# better to know about it with a clear error message than to receive some form
|
275
279
|
# of message about trying to use a dictionary in place of a string
|
276
280
|
raise RuntimeError(
|
277
|
-
f"Accessing property '{property_name}' from '{resource_logical_id}' resulted in a non-string value"
|
281
|
+
f"Accessing property '{property_name}' from '{resource_logical_id}' resulted in a non-string value nor list"
|
278
282
|
)
|
279
283
|
return property_value
|
280
284
|
elif config.CFN_IGNORE_UNSUPPORTED_RESOURCE_TYPES:
|
@@ -400,10 +404,57 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
400
404
|
return PreprocEntityDelta(before=before, after=after)
|
401
405
|
delta = super().visit(change_set_entity=change_set_entity)
|
402
406
|
if isinstance(delta, PreprocEntityDelta):
|
407
|
+
delta = self._maybe_perform_replacements(delta)
|
403
408
|
self._before_cache[entity_scope] = delta.before
|
404
409
|
self._after_cache[entity_scope] = delta.after
|
405
410
|
return delta
|
406
411
|
|
412
|
+
def _maybe_perform_replacements(self, delta: PreprocEntityDelta) -> PreprocEntityDelta:
|
413
|
+
delta = self._maybe_perform_static_replacements(delta)
|
414
|
+
delta = self._maybe_perform_dynamic_replacements(delta)
|
415
|
+
return delta
|
416
|
+
|
417
|
+
def _maybe_perform_static_replacements(self, delta: PreprocEntityDelta) -> PreprocEntityDelta:
|
418
|
+
return self._maybe_perform_on_delta(delta, self._perform_static_replacements)
|
419
|
+
|
420
|
+
def _maybe_perform_dynamic_replacements(self, delta: PreprocEntityDelta) -> PreprocEntityDelta:
|
421
|
+
return self._maybe_perform_on_delta(delta, self._perform_dynamic_replacements)
|
422
|
+
|
423
|
+
def _maybe_perform_on_delta(
|
424
|
+
self, delta: PreprocEntityDelta | None, f: Callable[[_T], _T]
|
425
|
+
) -> PreprocEntityDelta | None:
|
426
|
+
if isinstance(delta.before, str):
|
427
|
+
delta.before = f(delta.before)
|
428
|
+
if isinstance(delta.after, str):
|
429
|
+
delta.after = f(delta.after)
|
430
|
+
return delta
|
431
|
+
|
432
|
+
def _perform_dynamic_replacements(self, value: _T) -> _T:
|
433
|
+
if not isinstance(value, str):
|
434
|
+
return value
|
435
|
+
if dynamic_ref := extract_dynamic_reference(value):
|
436
|
+
new_value = perform_dynamic_reference_lookup(
|
437
|
+
reference=dynamic_ref,
|
438
|
+
account_id=self._change_set.account_id,
|
439
|
+
region_name=self._change_set.region_name,
|
440
|
+
)
|
441
|
+
if new_value:
|
442
|
+
return new_value
|
443
|
+
|
444
|
+
return value
|
445
|
+
|
446
|
+
@staticmethod
|
447
|
+
def _perform_static_replacements(value: str) -> str:
|
448
|
+
api_match = REGEX_OUTPUT_APIGATEWAY.match(value)
|
449
|
+
if api_match and value not in config.CFN_STRING_REPLACEMENT_DENY_LIST:
|
450
|
+
prefix = api_match[1]
|
451
|
+
host = api_match[2]
|
452
|
+
path = api_match[3]
|
453
|
+
value = f"{prefix}{host}/{path}"
|
454
|
+
return value
|
455
|
+
|
456
|
+
return value
|
457
|
+
|
407
458
|
def _cached_apply(
|
408
459
|
self, scope: Scope, arguments_delta: PreprocEntityDelta, resolver: Callable[[Any], Any]
|
409
460
|
) -> PreprocEntityDelta:
|
@@ -452,6 +503,9 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
452
503
|
|
453
504
|
return PreprocEntityDelta(before=before, after=after)
|
454
505
|
|
506
|
+
def visit_node_property(self, node_property: NodeProperty) -> PreprocEntityDelta:
|
507
|
+
return self.visit(node_property.value)
|
508
|
+
|
455
509
|
def visit_terminal_value_modified(
|
456
510
|
self, terminal_value_modified: TerminalValueModified
|
457
511
|
) -> PreprocEntityDelta:
|
@@ -1031,25 +1085,6 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
1031
1085
|
after.append(delta_after)
|
1032
1086
|
return PreprocEntityDelta(before=before, after=after)
|
1033
1087
|
|
1034
|
-
def visit_node_property(self, node_property: NodeProperty) -> PreprocEntityDelta:
|
1035
|
-
# TODO: what about other positions?
|
1036
|
-
value = self.visit(node_property.value)
|
1037
|
-
if not is_nothing(value.before):
|
1038
|
-
if dynamic_ref := extract_dynamic_reference(value.before):
|
1039
|
-
value.before = perform_dynamic_reference_lookup(
|
1040
|
-
reference=dynamic_ref,
|
1041
|
-
account_id=self._change_set.account_id,
|
1042
|
-
region_name=self._change_set.region_name,
|
1043
|
-
)
|
1044
|
-
if not is_nothing(value.after):
|
1045
|
-
if dynamic_ref := extract_dynamic_reference(value.after):
|
1046
|
-
value.after = perform_dynamic_reference_lookup(
|
1047
|
-
reference=dynamic_ref,
|
1048
|
-
account_id=self._change_set.account_id,
|
1049
|
-
region_name=self._change_set.region_name,
|
1050
|
-
)
|
1051
|
-
return value
|
1052
|
-
|
1053
1088
|
def visit_node_properties(
|
1054
1089
|
self, node_properties: NodeProperties
|
1055
1090
|
) -> PreprocEntityDelta[PreprocProperties, PreprocProperties]:
|
@@ -7,7 +7,7 @@ from typing import Any, Final, TypedDict
|
|
7
7
|
|
8
8
|
import boto3
|
9
9
|
import jsonpath_ng
|
10
|
-
from botocore.exceptions import ClientError
|
10
|
+
from botocore.exceptions import ClientError, ParamValidationError
|
11
11
|
from samtranslator.translator.transform import transform as transform_sam
|
12
12
|
|
13
13
|
from localstack.aws.connect import connect_to
|
@@ -28,6 +28,7 @@ from localstack.services.cloudformation.engine.v2.change_set_model import (
|
|
28
28
|
NodeIntrinsicFunction,
|
29
29
|
NodeIntrinsicFunctionFnTransform,
|
30
30
|
NodeProperties,
|
31
|
+
NodeProperty,
|
31
32
|
NodeResource,
|
32
33
|
NodeResources,
|
33
34
|
NodeTransform,
|
@@ -528,3 +529,16 @@ class ChangeSetModelTransform(ChangeSetModelPreproc):
|
|
528
529
|
return super().visit_node_intrinsic_function_fn_select(node_intrinsic_function)
|
529
530
|
except RuntimeError:
|
530
531
|
return self.visit(node_intrinsic_function.arguments)
|
532
|
+
|
533
|
+
def visit_node_property(self, node_property: NodeProperty) -> PreprocEntityDelta:
|
534
|
+
try:
|
535
|
+
return super().visit_node_property(node_property)
|
536
|
+
except ParamValidationError:
|
537
|
+
return self.visit(node_property.value)
|
538
|
+
|
539
|
+
# ignore errors from dynamic replacements
|
540
|
+
def _maybe_perform_dynamic_replacements(self, delta: PreprocEntityDelta) -> PreprocEntityDelta:
|
541
|
+
try:
|
542
|
+
return super()._maybe_perform_dynamic_replacements(delta)
|
543
|
+
except Exception:
|
544
|
+
return delta
|
@@ -1,9 +1,12 @@
|
|
1
1
|
import re
|
2
2
|
from typing import Any
|
3
3
|
|
4
|
+
from botocore.exceptions import ParamValidationError
|
5
|
+
|
4
6
|
from localstack.services.cloudformation.engine.v2.change_set_model import (
|
5
7
|
Maybe,
|
6
8
|
NodeIntrinsicFunction,
|
9
|
+
NodeProperty,
|
7
10
|
NodeResource,
|
8
11
|
NodeTemplate,
|
9
12
|
Nothing,
|
@@ -174,3 +177,16 @@ class ChangeSetModelValidator(ChangeSetModelPreproc):
|
|
174
177
|
return super().visit_node_properties(node_resource.properties)
|
175
178
|
except RuntimeError:
|
176
179
|
return super().visit_node_properties(node_resource.properties)
|
180
|
+
|
181
|
+
def visit_node_property(self, node_property: NodeProperty) -> PreprocEntityDelta:
|
182
|
+
try:
|
183
|
+
return super().visit_node_property(node_property)
|
184
|
+
except ParamValidationError:
|
185
|
+
return self.visit(node_property.value)
|
186
|
+
|
187
|
+
# ignore errors from dynamic replacements
|
188
|
+
def _maybe_perform_dynamic_replacements(self, delta: PreprocEntityDelta) -> PreprocEntityDelta:
|
189
|
+
try:
|
190
|
+
return super()._maybe_perform_dynamic_replacements(delta)
|
191
|
+
except Exception:
|
192
|
+
return delta
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import json
|
1
2
|
import logging
|
2
3
|
import re
|
3
4
|
from dataclasses import dataclass
|
@@ -6,7 +7,6 @@ from typing import Any
|
|
6
7
|
from botocore.exceptions import ClientError
|
7
8
|
|
8
9
|
from localstack.aws.connect import connect_to
|
9
|
-
from localstack.utils import json
|
10
10
|
|
11
11
|
LOG = logging.getLogger(__name__)
|
12
12
|
|
@@ -563,6 +563,8 @@ class ResourceProviderExecutor:
|
|
563
563
|
@staticmethod
|
564
564
|
def try_load_resource_provider(resource_type: str) -> ResourceProvider | None:
|
565
565
|
# TODO: unify namespace of plugins
|
566
|
+
if resource_type.startswith("Custom"):
|
567
|
+
resource_type = "AWS::CloudFormation::CustomResource"
|
566
568
|
|
567
569
|
# 1. try to load pro resource provider
|
568
570
|
# prioritise pro resource providers
|
@@ -286,7 +286,7 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
286
286
|
after_template: dict | None,
|
287
287
|
before_parameters: dict | None,
|
288
288
|
after_parameters: dict | None,
|
289
|
-
previous_update_model: UpdateModel | None,
|
289
|
+
previous_update_model: UpdateModel | None = None,
|
290
290
|
):
|
291
291
|
resolved_parameters = None
|
292
292
|
if after_parameters is not None:
|
@@ -400,7 +400,7 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
400
400
|
template_body = api_utils.extract_template_body(request)
|
401
401
|
structured_template = template_preparer.parse_template(template_body)
|
402
402
|
|
403
|
-
if len(template_body) > 51200:
|
403
|
+
if len(template_body) > 51200 and not template_url:
|
404
404
|
raise ValidationError(
|
405
405
|
f"1 validation error detected: Value '{template_body}' at 'templateBody' "
|
406
406
|
"failed to satisfy constraint: Member must have length less than or equal to 51200"
|
@@ -734,7 +734,7 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
734
734
|
template_body = api_utils.extract_template_body(request)
|
735
735
|
structured_template = template_preparer.parse_template(template_body)
|
736
736
|
|
737
|
-
if len(template_body) > 51200:
|
737
|
+
if len(template_body) > 51200 and not template_url:
|
738
738
|
raise ValidationError(
|
739
739
|
f"1 validation error detected: Value '{template_body}' at 'templateBody' "
|
740
740
|
"failed to satisfy constraint: Member must have length less than or equal to 51200"
|
@@ -978,6 +978,7 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
978
978
|
ResourceType=resource["Type"],
|
979
979
|
LastUpdatedTimestamp=resource["LastUpdatedTimestamp"],
|
980
980
|
ResourceStatus=resource["ResourceStatus"],
|
981
|
+
DriftInformation={"StackResourceDriftStatus": "NOT_CHECKED"},
|
981
982
|
)
|
982
983
|
return DescribeStackResourceOutput(StackResourceDetail=resource_detail)
|
983
984
|
|
@@ -1495,11 +1496,6 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
1495
1496
|
|
1496
1497
|
stack.set_stack_status(StackStatus.DELETE_IN_PROGRESS)
|
1497
1498
|
|
1498
|
-
previous_update_model = None
|
1499
|
-
if stack.change_set_id:
|
1500
|
-
if previous_change_set := find_change_set_v2(state, stack.change_set_id):
|
1501
|
-
previous_update_model = previous_change_set.update_model
|
1502
|
-
|
1503
1499
|
# create a dummy change set
|
1504
1500
|
change_set = ChangeSet(
|
1505
1501
|
stack, {"ChangeSetName": f"delete-stack_{stack.stack_name}"}, template_body=""
|
@@ -1510,7 +1506,6 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
1510
1506
|
after_template=None,
|
1511
1507
|
before_parameters=stack.resolved_parameters,
|
1512
1508
|
after_parameters=None,
|
1513
|
-
previous_update_model=previous_update_model,
|
1514
1509
|
)
|
1515
1510
|
|
1516
1511
|
change_set_executor = ChangeSetModelExecutor(change_set)
|
localstack/services/stores.py
CHANGED
@@ -238,7 +238,7 @@ class RegionBundle(dict, Generic[BaseStoreType]):
|
|
238
238
|
|
239
239
|
store_obj._global = self._global
|
240
240
|
store_obj._universal = self._universal
|
241
|
-
store_obj.
|
241
|
+
store_obj._service_name = self.service_name
|
242
242
|
store_obj._account_id = self.account_id
|
243
243
|
store_obj._region_name = region_name
|
244
244
|
|
localstack/version.py
CHANGED
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
28
28
|
commit_id: COMMIT_ID
|
29
29
|
__commit_id__: COMMIT_ID
|
30
30
|
|
31
|
-
__version__ = version = '4.7.1.
|
32
|
-
__version_tuple__ = version_tuple = (4, 7, 1, '
|
31
|
+
__version__ = version = '4.7.1.dev122'
|
32
|
+
__version_tuple__ = version_tuple = (4, 7, 1, 'dev122')
|
33
33
|
|
34
34
|
__commit_id__ = commit_id = None
|
@@ -4,7 +4,7 @@ localstack/deprecations.py,sha256=78Sf99fgH3ckJ20a9SMqsu01r1cm5GgcomkuY4yDMDo,15
|
|
4
4
|
localstack/openapi.yaml,sha256=B803NmpwsxG8PHpHrdZYBrUYjnrRh7B_JX0XuNynuFs,30237
|
5
5
|
localstack/plugins.py,sha256=BIJC9dlo0WbP7lLKkCiGtd_2q5oeqiHZohvoRTcejXM,2457
|
6
6
|
localstack/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
-
localstack/version.py,sha256=
|
7
|
+
localstack/version.py,sha256=nxiywcAkHZx-Uo7Ck1AkkpiYwmwVn1okigQt1_3Isog,721
|
8
8
|
localstack/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
9
|
localstack/aws/accounts.py,sha256=102zpGowOxo0S6UGMpfjw14QW7WCLVAGsnFK5xFMLoo,3043
|
10
10
|
localstack/aws/app.py,sha256=n9bJCfJRuMz_gLGAH430c3bIQXgUXeWO5NPfcdL2MV8,5145
|
@@ -179,7 +179,7 @@ localstack/services/internal.py,sha256=V5c_VnRjUmRptCyaRpLxs43zEzH3KxOAnuIvbLH1n
|
|
179
179
|
localstack/services/moto.py,sha256=r3mqlgtx8RTwAODYUqxfExIr3UzlZUj4l4o81cmIbII,8477
|
180
180
|
localstack/services/plugins.py,sha256=yC8ImTk-SHtadctEXsvGMpOfQ2Hc7dQqrN41peCtry8,25053
|
181
181
|
localstack/services/providers.py,sha256=MiqENJQlGnGNvaxS-Nl_442ZPR50u2osRM_j0xmq27A,13185
|
182
|
-
localstack/services/stores.py,sha256=
|
182
|
+
localstack/services/stores.py,sha256=11eON1arTKsLAcs4Z6aPKJL3jUxMpJrZBHEy-HcNfMw,11653
|
183
183
|
localstack/services/acm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
184
184
|
localstack/services/acm/provider.py,sha256=Wflar6XwvglR3rsYQs2rk0F5yZNktCbxfRN_wYHVSBA,5317
|
185
185
|
localstack/services/apigateway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -291,7 +291,7 @@ localstack/services/cloudformation/deployment_utils.py,sha256=YCWYGAKjZlmjKC7Vgt
|
|
291
291
|
localstack/services/cloudformation/plugins.py,sha256=8E1i9U65RnjZJoXz214ceV8OXcnpHNU44unK3raXkWs,336
|
292
292
|
localstack/services/cloudformation/provider.py,sha256=eQCfInXmlRrUw0Eqgp3WwyKH5nfoVd2QW_ei4Lq8iw0,53142
|
293
293
|
localstack/services/cloudformation/provider_utils.py,sha256=QVIJPnaoY8BaQPQvfZUOgf-AYNAwVVH9hf9ZCtpCPLM,10054
|
294
|
-
localstack/services/cloudformation/resource_provider.py,sha256=
|
294
|
+
localstack/services/cloudformation/resource_provider.py,sha256=dfGfb3FitGJ5z95fvCphc8PFPrbUaAwybD0KWn_7t1E,23274
|
295
295
|
localstack/services/cloudformation/service_models.py,sha256=FIk_n2TCWtpYZaUvORfvoKG4HlZZux3JD01npfB-Ejw,5153
|
296
296
|
localstack/services/cloudformation/stores.py,sha256=vnv6ljC4g35RCKP3SnnhMG63Ig4W3uAlzTYu1Bw7Axc,5491
|
297
297
|
localstack/services/cloudformation/engine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -311,14 +311,14 @@ localstack/services/cloudformation/engine/types.py,sha256=JQF2aM5DUtnJhvQ30RTaKv
|
|
311
311
|
localstack/services/cloudformation/engine/validations.py,sha256=brq7s8O8exA5kvnfzR9ulOtQ7i4konrWQs07-0h_ByE,2847
|
312
312
|
localstack/services/cloudformation/engine/yaml_parser.py,sha256=LQpAVq9Syze9jXUGen9Mz8SjosBuodpV5XvsCSn9bDg,2164
|
313
313
|
localstack/services/cloudformation/engine/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
314
|
-
localstack/services/cloudformation/engine/v2/change_set_model.py,sha256=
|
315
|
-
localstack/services/cloudformation/engine/v2/change_set_model_describer.py,sha256=
|
316
|
-
localstack/services/cloudformation/engine/v2/change_set_model_executor.py,sha256=
|
317
|
-
localstack/services/cloudformation/engine/v2/change_set_model_preproc.py,sha256=
|
318
|
-
localstack/services/cloudformation/engine/v2/change_set_model_transform.py,sha256=
|
319
|
-
localstack/services/cloudformation/engine/v2/change_set_model_validator.py,sha256=
|
314
|
+
localstack/services/cloudformation/engine/v2/change_set_model.py,sha256=AEJ5Hrot11dbMdKkAbaxdoYMrGR6Iu6rjN-H3MQpAfQ,67404
|
315
|
+
localstack/services/cloudformation/engine/v2/change_set_model_describer.py,sha256=V2I46erxD3JIZ61xHPO0wJ174ee-hZBTeLgmFiNKR3A,11773
|
316
|
+
localstack/services/cloudformation/engine/v2/change_set_model_executor.py,sha256=SuNFqeYRRN3wCvK_WsxxaqXMDjPXy_m0PWykGc-3Cig,27471
|
317
|
+
localstack/services/cloudformation/engine/v2/change_set_model_preproc.py,sha256=R19GEsvDMkJeoNhy55Rv5paruzj6AKm48qXBgjFA8_Q,54673
|
318
|
+
localstack/services/cloudformation/engine/v2/change_set_model_transform.py,sha256=p5kw4C0MvgBt3uBGymvFPhLbo2zcHrnCVYPBZ0ksZKc,23332
|
319
|
+
localstack/services/cloudformation/engine/v2/change_set_model_validator.py,sha256=EUqL6y2Rx4lYURoXvEH4Pyk3p-xYlVHCDF3oM6xeu0g,8555
|
320
320
|
localstack/services/cloudformation/engine/v2/change_set_model_visitor.py,sha256=ygUVPgM3b8SAXLLhLeGSD2k_Oo81ukFkug6bcmvRSJg,7843
|
321
|
-
localstack/services/cloudformation/engine/v2/resolving.py,sha256=
|
321
|
+
localstack/services/cloudformation/engine/v2/resolving.py,sha256=CMQmaajmm19b3sA_9RiZuBe5wdAS6js5ESDLjeH81LY,3980
|
322
322
|
localstack/services/cloudformation/models/__init__.py,sha256=da1PTClDMl-IBkrSvq6JC1lnS-K_BASzCvxVhNxN5Ls,13
|
323
323
|
localstack/services/cloudformation/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
324
324
|
localstack/services/cloudformation/resource_providers/aws_cloudformation_macro.py,sha256=yl92icivOV9o4vVcIh0SnB34hEoFjUOVRIAGMjrVPjU,2784
|
@@ -337,9 +337,9 @@ localstack/services/cloudformation/scaffolding/__main__.py,sha256=W4qA6eMNejKWLE
|
|
337
337
|
localstack/services/cloudformation/scaffolding/propgen.py,sha256=id7l43zsJsTgUyQ8F3jpfbpEoicc8GC6cB2ESEktDxc,7936
|
338
338
|
localstack/services/cloudformation/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
339
339
|
localstack/services/cloudformation/v2/entities.py,sha256=JLL9oX15cxzY_U23sa0zySyzx20rEXpIUl9CuQMnCGw,9023
|
340
|
-
localstack/services/cloudformation/v2/provider.py,sha256=
|
340
|
+
localstack/services/cloudformation/v2/provider.py,sha256=nuWIPAdpur2WUQJ1KB96LGBmAkO_xDAmNgY1sm10DiU,63651
|
341
341
|
localstack/services/cloudformation/v2/types.py,sha256=x_oDGQwxkViQ1fpcaSbBWiCODHZJAQgCej45EN-YZDs,957
|
342
|
-
localstack/services/cloudformation/v2/utils.py,sha256=
|
342
|
+
localstack/services/cloudformation/v2/utils.py,sha256=BWEgPy2FT6peowyVfZ5WhkzfBYYtrNRHgZrRNZ3LeP4,190
|
343
343
|
localstack/services/cloudwatch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
344
344
|
localstack/services/cloudwatch/alarm_scheduler.py,sha256=HPzQgZvDVXIXaEkjJ39L-jBwlOi_-ZlAyJ3D_suWngk,15761
|
345
345
|
localstack/services/cloudwatch/cloudwatch_database_helper.py,sha256=IK_MgxG3xTkpKbBe-Buv_6wUuHEc3MGQOqMAqHoEOzk,17270
|
@@ -1291,13 +1291,13 @@ localstack/utils/server/tcp_proxy.py,sha256=rR6d5jR0ozDvIlpHiqW0cfyY9a2fRGdOzyA8
|
|
1291
1291
|
localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1292
1292
|
localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
|
1293
1293
|
localstack/utils/xray/traceid.py,sha256=GKO-R2sMMjlrH2UaLPXlQlZ6flbE7ZKb6IZMtMu_M5U,1110
|
1294
|
-
localstack_core-4.7.1.
|
1295
|
-
localstack_core-4.7.1.
|
1296
|
-
localstack_core-4.7.1.
|
1297
|
-
localstack_core-4.7.1.
|
1298
|
-
localstack_core-4.7.1.
|
1299
|
-
localstack_core-4.7.1.
|
1300
|
-
localstack_core-4.7.1.
|
1301
|
-
localstack_core-4.7.1.
|
1302
|
-
localstack_core-4.7.1.
|
1303
|
-
localstack_core-4.7.1.
|
1294
|
+
localstack_core-4.7.1.dev122.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
|
1295
|
+
localstack_core-4.7.1.dev122.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
|
1296
|
+
localstack_core-4.7.1.dev122.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
|
1297
|
+
localstack_core-4.7.1.dev122.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
|
1298
|
+
localstack_core-4.7.1.dev122.dist-info/METADATA,sha256=AnquNMMdAlLByd0wQEfvqyW0HS2mTdK2kJ_X3sIww60,5538
|
1299
|
+
localstack_core-4.7.1.dev122.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
1300
|
+
localstack_core-4.7.1.dev122.dist-info/entry_points.txt,sha256=BALZ7ZgTqj1hVImoXiSWJu7rTGsMnx3dAjIp6fDDAg8,20817
|
1301
|
+
localstack_core-4.7.1.dev122.dist-info/plux.json,sha256=RNTRWmRoYjH0Ii9tHhwJ0HXvrdBuWS1SUWxXyQiRib8,21042
|
1302
|
+
localstack_core-4.7.1.dev122.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
|
1303
|
+
localstack_core-4.7.1.dev122.dist-info/RECORD,,
|
@@ -0,0 +1 @@
|
|
1
|
+
{"localstack.cloudformation.resource_providers": ["AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin"], "localstack.hooks.on_infra_start": ["register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "_patch_botocore_endpoint_in_memory=localstack.aws.client:_patch_botocore_endpoint_in_memory", "_patch_botocore_json_parser=localstack.aws.client:_patch_botocore_json_parser", "_patch_cbor2=localstack.aws.client:_patch_cbor2", "init_response_mutation_handler=localstack.aws.handlers.response:init_response_mutation_handler", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "eager_load_services=localstack.services.plugins:eager_load_services", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server"], "localstack.aws.provider": ["acm:default=localstack.services.providers:acm", "apigateway:default=localstack.services.providers:apigateway", "apigateway:legacy=localstack.services.providers:apigateway_legacy", "apigateway:next_gen=localstack.services.providers:apigateway_next_gen", "config:default=localstack.services.providers:awsconfig", "cloudformation:default=localstack.services.providers:cloudformation", "cloudformation:engine-v2=localstack.services.providers:cloudformation_v2", "cloudwatch:default=localstack.services.providers:cloudwatch", "cloudwatch:v1=localstack.services.providers:cloudwatch_v1", "cloudwatch:v2=localstack.services.providers:cloudwatch_v2", "dynamodb:default=localstack.services.providers:dynamodb", "dynamodb:v2=localstack.services.providers:dynamodb_v2", "dynamodbstreams:default=localstack.services.providers:dynamodbstreams", "dynamodbstreams:v2=localstack.services.providers:dynamodbstreams_v2", "ec2:default=localstack.services.providers:ec2", "es:default=localstack.services.providers:es", "events:default=localstack.services.providers:events", "events:legacy=localstack.services.providers:events_legacy", "events:v1=localstack.services.providers:events_v1", "events:v2=localstack.services.providers:events_v2", "firehose:default=localstack.services.providers:firehose", "iam:default=localstack.services.providers:iam", "kinesis:default=localstack.services.providers:kinesis", "kms:default=localstack.services.providers:kms", "lambda:default=localstack.services.providers:lambda_", "lambda:asf=localstack.services.providers:lambda_asf", "lambda:v2=localstack.services.providers:lambda_v2", "logs:default=localstack.services.providers:logs", "opensearch:default=localstack.services.providers:opensearch", "redshift:default=localstack.services.providers:redshift", "resource-groups:default=localstack.services.providers:resource_groups", "resourcegroupstaggingapi:default=localstack.services.providers:resourcegroupstaggingapi", "route53:default=localstack.services.providers:route53", "route53resolver:default=localstack.services.providers:route53resolver", "s3:default=localstack.services.providers:s3", "s3control:default=localstack.services.providers:s3control", "scheduler:default=localstack.services.providers:scheduler", "secretsmanager:default=localstack.services.providers:secretsmanager", "ses:default=localstack.services.providers:ses", "sns:default=localstack.services.providers:sns", "sns:v2=localstack.services.providers:sns_v2", "sqs:default=localstack.services.providers:sqs", "ssm:default=localstack.services.providers:ssm", "stepfunctions:default=localstack.services.providers:stepfunctions", "stepfunctions:v2=localstack.services.providers:stepfunctions_v2", "sts:default=localstack.services.providers:sts", "support:default=localstack.services.providers:support", "swf:default=localstack.services.providers:swf", "transcribe:default=localstack.services.providers:transcribe"], "localstack.packages": ["lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package"], "localstack.hooks.on_infra_shutdown": ["remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "run_on_after_service_shutdown_handlers=localstack.runtime.shutdown:run_on_after_service_shutdown_handlers", "run_shutdown_handlers=localstack.runtime.shutdown:run_shutdown_handlers", "shutdown_services=localstack.runtime.shutdown:shutdown_services", "publish_metrics=localstack.utils.analytics.metrics.publisher:publish_metrics", "stop_server=localstack.dns.plugins:stop_server"], "localstack.hooks.on_infra_ready": ["publish_provider_assignment=localstack.utils.analytics.service_providers:publish_provider_assignment", "_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.hooks.configure_localstack_container": ["_mount_machine_file=localstack.utils.analytics.metadata:_mount_machine_file"], "localstack.hooks.prepare_host": ["prepare_host_machine_id=localstack.utils.analytics.metadata:prepare_host_machine_id"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"localstack.cloudformation.resource_providers": ["AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin"], "localstack.packages": ["lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package"], "localstack.hooks.on_infra_start": ["register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "_patch_botocore_endpoint_in_memory=localstack.aws.client:_patch_botocore_endpoint_in_memory", "_patch_botocore_json_parser=localstack.aws.client:_patch_botocore_json_parser", "_patch_cbor2=localstack.aws.client:_patch_cbor2", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "init_response_mutation_handler=localstack.aws.handlers.response:init_response_mutation_handler", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "eager_load_services=localstack.services.plugins:eager_load_services", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info"], "localstack.hooks.on_infra_shutdown": ["remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "publish_metrics=localstack.utils.analytics.metrics.publisher:publish_metrics", "stop_server=localstack.dns.plugins:stop_server", "run_on_after_service_shutdown_handlers=localstack.runtime.shutdown:run_on_after_service_shutdown_handlers", "run_shutdown_handlers=localstack.runtime.shutdown:run_shutdown_handlers", "shutdown_services=localstack.runtime.shutdown:shutdown_services", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.hooks.configure_localstack_container": ["_mount_machine_file=localstack.utils.analytics.metadata:_mount_machine_file"], "localstack.hooks.prepare_host": ["prepare_host_machine_id=localstack.utils.analytics.metadata:prepare_host_machine_id"], "localstack.aws.provider": ["acm:default=localstack.services.providers:acm", "apigateway:default=localstack.services.providers:apigateway", "apigateway:legacy=localstack.services.providers:apigateway_legacy", "apigateway:next_gen=localstack.services.providers:apigateway_next_gen", "config:default=localstack.services.providers:awsconfig", "cloudformation:default=localstack.services.providers:cloudformation", "cloudformation:engine-v2=localstack.services.providers:cloudformation_v2", "cloudwatch:default=localstack.services.providers:cloudwatch", "cloudwatch:v1=localstack.services.providers:cloudwatch_v1", "cloudwatch:v2=localstack.services.providers:cloudwatch_v2", "dynamodb:default=localstack.services.providers:dynamodb", "dynamodb:v2=localstack.services.providers:dynamodb_v2", "dynamodbstreams:default=localstack.services.providers:dynamodbstreams", "dynamodbstreams:v2=localstack.services.providers:dynamodbstreams_v2", "ec2:default=localstack.services.providers:ec2", "es:default=localstack.services.providers:es", "events:default=localstack.services.providers:events", "events:legacy=localstack.services.providers:events_legacy", "events:v1=localstack.services.providers:events_v1", "events:v2=localstack.services.providers:events_v2", "firehose:default=localstack.services.providers:firehose", "iam:default=localstack.services.providers:iam", "kinesis:default=localstack.services.providers:kinesis", "kms:default=localstack.services.providers:kms", "lambda:default=localstack.services.providers:lambda_", "lambda:asf=localstack.services.providers:lambda_asf", "lambda:v2=localstack.services.providers:lambda_v2", "logs:default=localstack.services.providers:logs", "opensearch:default=localstack.services.providers:opensearch", "redshift:default=localstack.services.providers:redshift", "resource-groups:default=localstack.services.providers:resource_groups", "resourcegroupstaggingapi:default=localstack.services.providers:resourcegroupstaggingapi", "route53:default=localstack.services.providers:route53", "route53resolver:default=localstack.services.providers:route53resolver", "s3:default=localstack.services.providers:s3", "s3control:default=localstack.services.providers:s3control", "scheduler:default=localstack.services.providers:scheduler", "secretsmanager:default=localstack.services.providers:secretsmanager", "ses:default=localstack.services.providers:ses", "sns:default=localstack.services.providers:sns", "sns:v2=localstack.services.providers:sns_v2", "sqs:default=localstack.services.providers:sqs", "ssm:default=localstack.services.providers:ssm", "stepfunctions:default=localstack.services.providers:stepfunctions", "stepfunctions:v2=localstack.services.providers:stepfunctions_v2", "sts:default=localstack.services.providers:sts", "support:default=localstack.services.providers:support", "swf:default=localstack.services.providers:swf", "transcribe:default=localstack.services.providers:transcribe"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.hooks.on_infra_ready": ["publish_provider_assignment=localstack.utils.analytics.service_providers:publish_provider_assignment", "_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"]}
|
File without changes
|
File without changes
|
{localstack_core-4.7.1.dev120.data → localstack_core-4.7.1.dev122.data}/scripts/localstack.bat
RENAMED
File without changes
|
File without changes
|
{localstack_core-4.7.1.dev120.dist-info → localstack_core-4.7.1.dev122.dist-info}/entry_points.txt
RENAMED
File without changes
|
File without changes
|
{localstack_core-4.7.1.dev120.dist-info → localstack_core-4.7.1.dev122.dist-info}/top_level.txt
RENAMED
File without changes
|