localstack-core 4.7.1.dev68__py3-none-any.whl → 4.7.1.dev72__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.

Potentially problematic release.


This version of localstack-core might be problematic. Click here for more details.

Files changed (20) hide show
  1. localstack/services/cloudformation/engine/v2/change_set_model.py +40 -3
  2. localstack/services/cloudformation/engine/v2/change_set_model_describer.py +24 -0
  3. localstack/services/cloudformation/engine/v2/change_set_model_executor.py +39 -8
  4. localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +6 -2
  5. localstack/services/cloudformation/engine/v2/change_set_model_transform.py +18 -0
  6. localstack/services/cloudformation/engine/v2/change_set_model_validator.py +18 -0
  7. localstack/services/cloudformation/v2/provider.py +47 -44
  8. localstack/services/cloudformation/v2/types.py +1 -0
  9. localstack/version.py +2 -2
  10. {localstack_core-4.7.1.dev68.dist-info → localstack_core-4.7.1.dev72.dist-info}/METADATA +1 -1
  11. {localstack_core-4.7.1.dev68.dist-info → localstack_core-4.7.1.dev72.dist-info}/RECORD +19 -19
  12. localstack_core-4.7.1.dev72.dist-info/plux.json +1 -0
  13. localstack_core-4.7.1.dev68.dist-info/plux.json +0 -1
  14. {localstack_core-4.7.1.dev68.data → localstack_core-4.7.1.dev72.data}/scripts/localstack +0 -0
  15. {localstack_core-4.7.1.dev68.data → localstack_core-4.7.1.dev72.data}/scripts/localstack-supervisor +0 -0
  16. {localstack_core-4.7.1.dev68.data → localstack_core-4.7.1.dev72.data}/scripts/localstack.bat +0 -0
  17. {localstack_core-4.7.1.dev68.dist-info → localstack_core-4.7.1.dev72.dist-info}/WHEEL +0 -0
  18. {localstack_core-4.7.1.dev68.dist-info → localstack_core-4.7.1.dev72.dist-info}/entry_points.txt +0 -0
  19. {localstack_core-4.7.1.dev68.dist-info → localstack_core-4.7.1.dev72.dist-info}/licenses/LICENSE.txt +0 -0
  20. {localstack_core-4.7.1.dev68.dist-info → localstack_core-4.7.1.dev72.dist-info}/top_level.txt +0 -0
@@ -70,6 +70,9 @@ def parent_change_type_of(children: list[Maybe[ChangeSetEntity]]):
70
70
  change_types = [c.change_type for c in children if not is_nothing(c)]
71
71
  if not change_types:
72
72
  return ChangeType.UNCHANGED
73
+ # TODO: rework this logic. Currently if any values are different then we consider it
74
+ # modified, but e.g. if everything is unchanged or created, the result should probably be
75
+ # "created"
73
76
  first_type = change_types[0]
74
77
  if all(ct == first_type for ct in change_types):
75
78
  return first_type
@@ -152,7 +155,7 @@ class ChangeType(enum.Enum):
152
155
 
153
156
  class ChangeSetEntity(abc.ABC):
154
157
  scope: Final[Scope]
155
- change_type: Final[ChangeType]
158
+ change_type: ChangeType
156
159
 
157
160
  def __init__(self, scope: Scope, change_type: ChangeType):
158
161
  self.scope = scope
@@ -1097,10 +1100,44 @@ class ChangeSetModel:
1097
1100
  after_update_replace_policy,
1098
1101
  )
1099
1102
 
1103
+ fn_transform = Nothing
1104
+ scope_fn_transform, (before_fn_transform_args, after_fn_transform_args) = (
1105
+ self._safe_access_in(scope, FnTransform, before_resource, after_resource)
1106
+ )
1107
+ if not is_nothing(before_fn_transform_args) or not is_nothing(after_fn_transform_args):
1108
+ if scope_fn_transform.count(FnTransform) > 1:
1109
+ raise RuntimeError(
1110
+ "Invalid: Fn::Transforms cannot be nested inside another Fn::Transform"
1111
+ )
1112
+ path = "$" + ".".join(scope_fn_transform.split("/")[:-1])
1113
+ before_siblings = extract_jsonpath(self._before_template, path)
1114
+ after_siblings = extract_jsonpath(self._after_template, path)
1115
+ arguments_scope = scope.open_scope("args")
1116
+ arguments = self._visit_value(
1117
+ scope=arguments_scope,
1118
+ before_value=before_fn_transform_args,
1119
+ after_value=after_fn_transform_args,
1120
+ )
1121
+ fn_transform = NodeIntrinsicFunctionFnTransform(
1122
+ scope=scope_fn_transform,
1123
+ change_type=ChangeType.MODIFIED, # TODO
1124
+ arguments=arguments, # TODO
1125
+ intrinsic_function=FnTransform,
1126
+ before_siblings=before_siblings,
1127
+ after_siblings=after_siblings,
1128
+ )
1129
+
1100
1130
  change_type = change_type_of(
1101
1131
  before_resource,
1102
1132
  after_resource,
1103
- [properties, condition_reference, depends_on, deletion_policy, update_replace_policy],
1133
+ [
1134
+ properties,
1135
+ condition_reference,
1136
+ depends_on,
1137
+ deletion_policy,
1138
+ update_replace_policy,
1139
+ fn_transform,
1140
+ ],
1104
1141
  )
1105
1142
  requires_replacement = self._resolve_requires_replacement(
1106
1143
  node_properties=properties, resource_type=terminal_value_type
@@ -1116,7 +1153,7 @@ class ChangeSetModel:
1116
1153
  requires_replacement=requires_replacement,
1117
1154
  deletion_policy=deletion_policy,
1118
1155
  update_replace_policy=update_replace_policy,
1119
- fn_transform=Nothing, # TODO
1156
+ fn_transform=fn_transform,
1120
1157
  )
1121
1158
  self._visited_scopes[scope] = node_resource
1122
1159
  return node_resource
@@ -112,6 +112,30 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
112
112
  delta.after = CHANGESET_KNOWN_AFTER_APPLY
113
113
  return delta
114
114
 
115
+ def visit_node_intrinsic_function_fn_select(
116
+ self, node_intrinsic_function: NodeIntrinsicFunction
117
+ ):
118
+ # TODO: should this not _ALWAYS_ return CHANGESET_KNOWN_AFTER_APPLY?
119
+ arguments_delta = self.visit(node_intrinsic_function.arguments)
120
+ delta = PreprocEntityDelta()
121
+ if not is_nothing(arguments_delta.before):
122
+ idx = arguments_delta.before[0]
123
+ arr = arguments_delta.before[1]
124
+ try:
125
+ delta.before = arr[int(idx)]
126
+ except Exception:
127
+ delta.before = CHANGESET_KNOWN_AFTER_APPLY
128
+
129
+ if not is_nothing(arguments_delta.after):
130
+ idx = arguments_delta.after[0]
131
+ arr = arguments_delta.after[1]
132
+ try:
133
+ delta.after = arr[int(idx)]
134
+ except Exception:
135
+ delta.after = CHANGESET_KNOWN_AFTER_APPLY
136
+
137
+ return delta
138
+
115
139
  def _register_resource_change(
116
140
  self,
117
141
  logical_id: str,
@@ -18,6 +18,7 @@ from localstack.services.cloudformation.deployment_utils import log_not_availabl
18
18
  from localstack.services.cloudformation.engine.template_deployer import REGEX_OUTPUT_APIGATEWAY
19
19
  from localstack.services.cloudformation.engine.v2.change_set_model import (
20
20
  NodeDependsOn,
21
+ NodeIntrinsicFunction,
21
22
  NodeOutput,
22
23
  NodeResource,
23
24
  TerminalValueCreated,
@@ -58,11 +59,17 @@ class DeferredAction(Protocol):
58
59
  def __call__(self) -> None: ...
59
60
 
60
61
 
62
+ @dataclass
63
+ class Deferred:
64
+ name: str
65
+ action: DeferredAction
66
+
67
+
61
68
  class ChangeSetModelExecutor(ChangeSetModelPreproc):
62
69
  # TODO: add typing for resolved resources and parameters.
63
70
  resources: Final[dict[str, ResolvedResource]]
64
71
  outputs: Final[list[Output]]
65
- _deferred_actions: list[DeferredAction]
72
+ _deferred_actions: list[Deferred]
66
73
 
67
74
  def __init__(self, change_set: ChangeSet):
68
75
  super().__init__(change_set=change_set)
@@ -84,16 +91,17 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
84
91
  # perform all deferred actions such as deletions. These must happen in reverse from their
85
92
  # defined order so that resource dependencies are honoured
86
93
  # TODO: errors will stop all rollbacks; get parity on this behaviour
87
- for action in self._deferred_actions[::-1]:
88
- action()
94
+ for deferred in self._deferred_actions[::-1]:
95
+ LOG.debug("executing deferred action: '%s'", deferred.name)
96
+ deferred.action()
89
97
 
90
98
  return ChangeSetModelExecutorResult(
91
99
  resources=self.resources,
92
100
  outputs=self.outputs,
93
101
  )
94
102
 
95
- def _defer_action(self, action: DeferredAction):
96
- self._deferred_actions.append(action)
103
+ def _defer_action(self, name: str, action: DeferredAction):
104
+ self._deferred_actions.append(Deferred(name=name, action=action))
97
105
 
98
106
  def _get_physical_id(self, logical_resource_id, strict: bool = True) -> str | None:
99
107
  physical_resource_id = None
@@ -292,7 +300,7 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
292
300
  reason=event.message,
293
301
  )
294
302
 
295
- self._defer_action(cleanup)
303
+ self._defer_action(f"cleanup-from-replacement-{name}", cleanup)
296
304
  else:
297
305
  event = self._execute_resource_action(
298
306
  action=ChangeAction.Modify,
@@ -331,7 +339,7 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
331
339
  reason=event.message,
332
340
  )
333
341
 
334
- self._defer_action(perform_deletion)
342
+ self._defer_action(f"type-migration-{name}", perform_deletion)
335
343
 
336
344
  event = self._execute_resource_action(
337
345
  action=ChangeAction.Add,
@@ -375,7 +383,7 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
375
383
  reason=event.message,
376
384
  )
377
385
 
378
- self._defer_action(perform_deletion)
386
+ self._defer_action(f"remove-{name}", perform_deletion)
379
387
  elif not is_nothing(after):
380
388
  # Case: addition
381
389
  self._process_event(
@@ -585,6 +593,15 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
585
593
 
586
594
  return value
587
595
 
596
+ def _replace_url_outputs_in_delta_if_required(
597
+ self, delta: PreprocEntityDelta
598
+ ) -> PreprocEntityDelta:
599
+ if isinstance(delta.before, str):
600
+ delta.before = self._replace_url_outputs_if_required(delta.before)
601
+ if isinstance(delta.after, str):
602
+ delta.after = self._replace_url_outputs_if_required(delta.after)
603
+ return delta
604
+
588
605
  def visit_terminal_value_created(
589
606
  self, value: TerminalValueCreated
590
607
  ) -> PreprocEntityDelta[str, str]:
@@ -612,3 +629,17 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
612
629
  else:
613
630
  value = terminal_value_unchanged.value
614
631
  return PreprocEntityDelta(before=value, after=value)
632
+
633
+ def visit_node_intrinsic_function_fn_join(
634
+ self, node_intrinsic_function: NodeIntrinsicFunction
635
+ ) -> PreprocEntityDelta:
636
+ delta = super().visit_node_intrinsic_function_fn_join(node_intrinsic_function)
637
+ return self._replace_url_outputs_in_delta_if_required(delta)
638
+
639
+ def visit_node_intrinsic_function_fn_sub(
640
+ self, node_intrinsic_function: NodeIntrinsicFunction
641
+ ) -> PreprocEntityDelta:
642
+ delta = super().visit_node_intrinsic_function_fn_sub(node_intrinsic_function)
643
+ return self._replace_url_outputs_in_delta_if_required(delta)
644
+
645
+ # TODO: other intrinsic functions
@@ -630,8 +630,12 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
630
630
  def visit_node_intrinsic_function_fn_not(
631
631
  self, node_intrinsic_function: NodeIntrinsicFunction
632
632
  ) -> PreprocEntityDelta:
633
- def _compute_fn_not(arg: bool) -> bool:
634
- return not arg
633
+ def _compute_fn_not(arg: list[bool] | bool) -> bool:
634
+ # Is the argument ever a lone boolean?
635
+ if isinstance(arg, list):
636
+ return not arg[0]
637
+ else:
638
+ return not arg
635
639
 
636
640
  arguments_delta = self.visit(node_intrinsic_function.arguments)
637
641
  delta = self._cached_apply(
@@ -24,6 +24,7 @@ from localstack.services.cloudformation.engine.v2.change_set_model import (
24
24
  NodeIntrinsicFunction,
25
25
  NodeIntrinsicFunctionFnTransform,
26
26
  NodeProperties,
27
+ NodeResource,
27
28
  NodeResources,
28
29
  NodeTransform,
29
30
  Nothing,
@@ -364,6 +365,14 @@ class ChangeSetModelTransform(ChangeSetModelPreproc):
364
365
 
365
366
  return super().visit_node_properties(node_properties=node_properties)
366
367
 
368
+ def visit_node_resource(self, node_resource: NodeResource) -> PreprocEntityDelta:
369
+ if not is_nothing(node_resource.fn_transform):
370
+ self.visit_node_intrinsic_function_fn_transform(
371
+ node_intrinsic_function=node_resource.fn_transform
372
+ )
373
+
374
+ return super().visit_node_resource(node_resource)
375
+
367
376
  def visit_node_resources(self, node_resources: NodeResources) -> PreprocEntityDelta:
368
377
  if not is_nothing(node_resources.fn_transform):
369
378
  self.visit_node_intrinsic_function_fn_transform(
@@ -461,3 +470,12 @@ class ChangeSetModelTransform(ChangeSetModelPreproc):
461
470
  return super().visit_node_intrinsic_function_fn_split(node_intrinsic_function)
462
471
  except RuntimeError:
463
472
  return self.visit(node_intrinsic_function.arguments)
473
+
474
+ def visit_node_intrinsic_function_fn_select(
475
+ self, node_intrinsic_function: NodeIntrinsicFunction
476
+ ) -> PreprocEntityDelta:
477
+ try:
478
+ # If an argument is a Parameter it should be resolved, any other case, ignore it
479
+ return super().visit_node_intrinsic_function_fn_select(node_intrinsic_function)
480
+ except RuntimeError:
481
+ return self.visit(node_intrinsic_function.arguments)
@@ -147,3 +147,21 @@ class ChangeSetModelValidator(ChangeSetModelPreproc):
147
147
  # Function is already resolved in the template reaching this point
148
148
  # But transformation is still present in update model
149
149
  return self.visit(node_intrinsic_function.arguments)
150
+
151
+ def visit_node_intrinsic_function_fn_split(
152
+ self, node_intrinsic_function: NodeIntrinsicFunction
153
+ ) -> PreprocEntityDelta:
154
+ try:
155
+ # If an argument is a Parameter it should be resolved, any other case, ignore it
156
+ return super().visit_node_intrinsic_function_fn_split(node_intrinsic_function)
157
+ except RuntimeError:
158
+ return self.visit(node_intrinsic_function.arguments)
159
+
160
+ def visit_node_intrinsic_function_fn_select(
161
+ self, node_intrinsic_function: NodeIntrinsicFunction
162
+ ) -> PreprocEntityDelta:
163
+ try:
164
+ # If an argument is a Parameter it should be resolved, any other case, ignore it
165
+ return super().visit_node_intrinsic_function_fn_select(node_intrinsic_function)
166
+ except RuntimeError:
167
+ return self.visit(node_intrinsic_function.arguments)
@@ -226,7 +226,10 @@ class CloudformationProviderV2(CloudformationProvider):
226
226
  given_value = parameters.get(name)
227
227
  default_value = parameter.get("Default")
228
228
  resolved_parameter = EngineParameter(
229
- type_=parameter["Type"], given_value=given_value, default_value=default_value
229
+ type_=parameter["Type"],
230
+ given_value=given_value,
231
+ default_value=default_value,
232
+ no_echo=parameter.get("NoEcho"),
230
233
  )
231
234
 
232
235
  # TODO: support other parameter types
@@ -353,6 +356,11 @@ class CloudformationProviderV2(CloudformationProvider):
353
356
  )
354
357
  validator.validate()
355
358
 
359
+ # hacky
360
+ if transform := raw_update_model.node_template.transform:
361
+ if transform.global_transforms:
362
+ # global transforms should always be considered "MODIFIED"
363
+ update_model.node_template.change_type = ChangeType.MODIFIED
356
364
  change_set.set_update_model(update_model)
357
365
  change_set.processed_template = transformed_after_template
358
366
 
@@ -496,9 +504,7 @@ class CloudformationProviderV2(CloudformationProvider):
496
504
  change_set.set_execution_status(ExecutionStatus.UNAVAILABLE)
497
505
  change_set.status_reason = "The submitted information didn't contain changes. Submit different information to create a change set."
498
506
  else:
499
- if stack.status in [StackStatus.CREATE_COMPLETE, StackStatus.UPDATE_COMPLETE]:
500
- stack.set_stack_status(StackStatus.UPDATE_IN_PROGRESS)
501
- else:
507
+ if stack.status not in [StackStatus.CREATE_COMPLETE, StackStatus.UPDATE_COMPLETE]:
502
508
  stack.set_stack_status(StackStatus.REVIEW_IN_PROGRESS)
503
509
 
504
510
  change_set.set_change_set_status(ChangeSetStatus.CREATE_COMPLETE)
@@ -595,42 +601,6 @@ class CloudformationProviderV2(CloudformationProvider):
595
601
 
596
602
  return ExecuteChangeSetOutput()
597
603
 
598
- def _describe_change_set(
599
- self, change_set: ChangeSet, include_property_values: bool
600
- ) -> DescribeChangeSetOutput:
601
- # TODO: The ChangeSetModelDescriber currently matches AWS behavior by listing
602
- # resource changes in the order they appear in the template. However, when
603
- # a resource change is triggered indirectly (e.g., via Ref or GetAtt), the
604
- # dependency's change appears first in the list.
605
- # Snapshot tests using the `capture_update_process` fixture rely on a
606
- # normalizer to account for this ordering. This should be removed in the
607
- # future by enforcing a consistently correct change ordering at the source.
608
- change_set_describer = ChangeSetModelDescriber(
609
- change_set=change_set, include_property_values=include_property_values
610
- )
611
- changes: Changes = change_set_describer.get_changes()
612
-
613
- result = DescribeChangeSetOutput(
614
- Status=change_set.status,
615
- ChangeSetId=change_set.change_set_id,
616
- ChangeSetName=change_set.change_set_name,
617
- ExecutionStatus=change_set.execution_status,
618
- RollbackConfiguration=RollbackConfiguration(),
619
- StackId=change_set.stack.stack_id,
620
- StackName=change_set.stack.stack_name,
621
- CreationTime=change_set.creation_time,
622
- Changes=changes,
623
- Capabilities=change_set.stack.capabilities,
624
- StatusReason=change_set.status_reason,
625
- Description=change_set.description,
626
- # TODO: static information
627
- IncludeNestedStacks=False,
628
- NotificationARNs=[],
629
- )
630
- if change_set.resolved_parameters:
631
- result["Parameters"] = self._render_resolved_parameters(change_set.resolved_parameters)
632
- return result
633
-
634
604
  @staticmethod
635
605
  def _render_resolved_parameters(
636
606
  resolved_parameters: dict[str, EngineParameter],
@@ -644,6 +614,10 @@ class CloudformationProviderV2(CloudformationProvider):
644
614
  )
645
615
  if resolved_value := resolved_parameter.get("resolved_value"):
646
616
  parameter["ResolvedValue"] = resolved_value
617
+
618
+ # TODO :what happens to the resolved value?
619
+ if resolved_parameter.get("no_echo", False):
620
+ parameter["ParameterValue"] = "****"
647
621
  result.append(parameter)
648
622
 
649
623
  return result
@@ -665,9 +639,38 @@ class CloudformationProviderV2(CloudformationProvider):
665
639
 
666
640
  if not change_set:
667
641
  raise ChangeSetNotFoundException(f"ChangeSet [{change_set_name}] does not exist")
668
- result = self._describe_change_set(
669
- change_set=change_set, include_property_values=include_property_values or False
642
+
643
+ # TODO: The ChangeSetModelDescriber currently matches AWS behavior by listing
644
+ # resource changes in the order they appear in the template. However, when
645
+ # a resource change is triggered indirectly (e.g., via Ref or GetAtt), the
646
+ # dependency's change appears first in the list.
647
+ # Snapshot tests using the `capture_update_process` fixture rely on a
648
+ # normalizer to account for this ordering. This should be removed in the
649
+ # future by enforcing a consistently correct change ordering at the source.
650
+ change_set_describer = ChangeSetModelDescriber(
651
+ change_set=change_set, include_property_values=include_property_values
652
+ )
653
+ changes: Changes = change_set_describer.get_changes()
654
+
655
+ result = DescribeChangeSetOutput(
656
+ Status=change_set.status,
657
+ ChangeSetId=change_set.change_set_id,
658
+ ChangeSetName=change_set.change_set_name,
659
+ ExecutionStatus=change_set.execution_status,
660
+ RollbackConfiguration=RollbackConfiguration(),
661
+ StackId=change_set.stack.stack_id,
662
+ StackName=change_set.stack.stack_name,
663
+ CreationTime=change_set.creation_time,
664
+ Changes=changes,
665
+ Capabilities=change_set.stack.capabilities,
666
+ StatusReason=change_set.status_reason,
667
+ Description=change_set.description,
668
+ # TODO: static information
669
+ IncludeNestedStacks=False,
670
+ NotificationARNs=[],
670
671
  )
672
+ if change_set.resolved_parameters:
673
+ result["Parameters"] = self._render_resolved_parameters(change_set.resolved_parameters)
671
674
  return result
672
675
 
673
676
  @handler("DeleteChangeSet")
@@ -1406,7 +1409,7 @@ class CloudformationProviderV2(CloudformationProvider):
1406
1409
  # TODO: some changes are only detectable at runtime; consider using
1407
1410
  # the ChangeSetModelDescriber, or a new custom visitors, to
1408
1411
  # pick-up on runtime changes.
1409
- if change_set.update_model.node_template.change_type == ChangeType.UNCHANGED:
1412
+ if not change_set.has_changes():
1410
1413
  raise ValidationError("No updates are to be performed.")
1411
1414
 
1412
1415
  stack.set_stack_status(StackStatus.UPDATE_IN_PROGRESS)
@@ -1497,7 +1500,7 @@ class CloudformationProviderV2(CloudformationProvider):
1497
1500
  ) # noqa
1498
1501
  self._setup_change_set_model(
1499
1502
  change_set=change_set,
1500
- before_template=stack.template,
1503
+ before_template=stack.processed_template,
1501
1504
  after_template=None,
1502
1505
  before_parameters=stack.resolved_parameters,
1503
1506
  after_parameters=None,
@@ -13,6 +13,7 @@ class EngineParameter(TypedDict):
13
13
  given_value: NotRequired[str | None]
14
14
  resolved_value: NotRequired[str | None]
15
15
  default_value: NotRequired[str | None]
16
+ no_echo: NotRequired[bool | None]
16
17
 
17
18
 
18
19
  def engine_parameter_value(parameter: EngineParameter) -> str:
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.dev68'
32
- __version_tuple__ = version_tuple = (4, 7, 1, 'dev68')
31
+ __version__ = version = '4.7.1.dev72'
32
+ __version_tuple__ = version_tuple = (4, 7, 1, 'dev72')
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: localstack-core
3
- Version: 4.7.1.dev68
3
+ Version: 4.7.1.dev72
4
4
  Summary: The core library and runtime of LocalStack
5
5
  Author-email: LocalStack Contributors <info@localstack.cloud>
6
6
  License-Expression: Apache-2.0
@@ -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=9O3LTaAoofhyn3HrTL9_Rzfy2Pd1V7eHvOjzBFZrJd8,719
7
+ localstack/version.py,sha256=3LsVlcYyyOhlB0cNyCaldKDi_u5HELjZSsZoRDPjAFM,719
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
@@ -311,12 +311,12 @@ 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=XdtAGyhnndi8dCr3GkXrsYjF9Lb2zi-wKMPwzrA_nVU,64129
315
- localstack/services/cloudformation/engine/v2/change_set_model_describer.py,sha256=ROQwv8a2geaA0HVqCJWftAO0TKCnWPK-z82-wWU_vbE,10397
316
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py,sha256=NPe43w7c4wRyHzW762zrpstDQ6iq5jL-ZMpU68CKUXA,25799
317
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py,sha256=wQjLi4P9mE8Ab3FjtwcbUKePbgEeJPQHQi6KlgYnzfA,52820
318
- localstack/services/cloudformation/engine/v2/change_set_model_transform.py,sha256=yBcLjMnSh0O3DZq6uKjlSU4JEMpRqTB0yvIuCtMv73I,19828
319
- localstack/services/cloudformation/engine/v2/change_set_model_validator.py,sha256=KkqMrApsWRzRSZ8VogljPg4_9S1FU_Leitx7ZnlvInA,6696
314
+ localstack/services/cloudformation/engine/v2/change_set_model.py,sha256=SvYRG45MwSMluMrv7bAijXH2-g5ZMkHLVBf8cavvMUw,65799
315
+ localstack/services/cloudformation/engine/v2/change_set_model_describer.py,sha256=caQJ9reGmJ2EsJ2-bDVC30hLQQilXyBAsI7bJd2TYgI,11299
316
+ localstack/services/cloudformation/engine/v2/change_set_model_executor.py,sha256=LMHqYuNlE0BFt1qYHFEPscyZDhyoqOe7USniqbQ-drk,27102
317
+ localstack/services/cloudformation/engine/v2/change_set_model_preproc.py,sha256=IrzhFicS0KBqBnWj2E76wVHqJTeXL-sDznCHoE1EYZ0,52978
318
+ localstack/services/cloudformation/engine/v2/change_set_model_transform.py,sha256=T-21y42-FvkOkodTOc87VZYvDlmvtvzKnpyXMIBP7n4,20621
319
+ localstack/services/cloudformation/engine/v2/change_set_model_validator.py,sha256=Zj7r42OxwtF_uct56aFgVCUgieWbiiHua-MhXhrGiqA,7558
320
320
  localstack/services/cloudformation/engine/v2/change_set_model_visitor.py,sha256=ygUVPgM3b8SAXLLhLeGSD2k_Oo81ukFkug6bcmvRSJg,7843
321
321
  localstack/services/cloudformation/engine/v2/resolving.py,sha256=ot76GycQsw6Y9SvxB8sAlK7tRntJb5CTrKYqyEnfiHc,4002
322
322
  localstack/services/cloudformation/models/__init__.py,sha256=da1PTClDMl-IBkrSvq6JC1lnS-K_BASzCvxVhNxN5Ls,13
@@ -337,8 +337,8 @@ 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=SqSmdcw3toeRdxuIHyel5DCKlhRIeNHCRASBTpMGnbc,9001
340
- localstack/services/cloudformation/v2/provider.py,sha256=jd83tOjsKrMLYgnDVh0lB0DhFFr2TOjQz42JOU8MOII,63635
341
- localstack/services/cloudformation/v2/types.py,sha256=YOKERHmgRjK3RCjqKwQ3ZxZKfa0D-Uwjt2W9GaFDkiM,864
340
+ localstack/services/cloudformation/v2/provider.py,sha256=xEXBGEVONXlEMBZkIqnWnyqWQ1Sw5lCxJDZheHs6S74,63743
341
+ localstack/services/cloudformation/v2/types.py,sha256=5Fg9550Sd1i2phJAFdo_XBvWXlYbND78csmNVNgIKvg,902
342
342
  localstack/services/cloudformation/v2/utils.py,sha256=xy4Lcp4X8XGJ0OKfnsE7pnfMcFrtIH0Chw35qwjhZuw,148
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
@@ -1287,13 +1287,13 @@ localstack/utils/server/tcp_proxy.py,sha256=rR6d5jR0ozDvIlpHiqW0cfyY9a2fRGdOzyA8
1287
1287
  localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1288
1288
  localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
1289
1289
  localstack/utils/xray/traceid.py,sha256=SQSsMV2rhbTNK6ceIoozZYuGU7Fg687EXcgqxoDl1Fw,1106
1290
- localstack_core-4.7.1.dev68.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
1291
- localstack_core-4.7.1.dev68.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1292
- localstack_core-4.7.1.dev68.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
1293
- localstack_core-4.7.1.dev68.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1294
- localstack_core-4.7.1.dev68.dist-info/METADATA,sha256=3erauF26cpTSiZpPYk_50j6qgU5SvA_S5DzrFUtlATI,5569
1295
- localstack_core-4.7.1.dev68.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1296
- localstack_core-4.7.1.dev68.dist-info/entry_points.txt,sha256=QVR0SdbvA7isjrtgvO1C8_mZAnD7DIRNsjCtZ-ddbIs,20771
1297
- localstack_core-4.7.1.dev68.dist-info/plux.json,sha256=zc29RXU5dbrXK6h2d1TvdN8znA5untzh1jRITGkRlpA,20995
1298
- localstack_core-4.7.1.dev68.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1299
- localstack_core-4.7.1.dev68.dist-info/RECORD,,
1290
+ localstack_core-4.7.1.dev72.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
1291
+ localstack_core-4.7.1.dev72.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1292
+ localstack_core-4.7.1.dev72.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
1293
+ localstack_core-4.7.1.dev72.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1294
+ localstack_core-4.7.1.dev72.dist-info/METADATA,sha256=pdQFehm6niBa2ARDrHRKrOhTo29MbZLVHury5Kde_eg,5569
1295
+ localstack_core-4.7.1.dev72.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1296
+ localstack_core-4.7.1.dev72.dist-info/entry_points.txt,sha256=QVR0SdbvA7isjrtgvO1C8_mZAnD7DIRNsjCtZ-ddbIs,20771
1297
+ localstack_core-4.7.1.dev72.dist-info/plux.json,sha256=N5DrPf_F-bzHQWot1Rrzi845hVZkHF4XcNIZWepMXx8,20995
1298
+ localstack_core-4.7.1.dev72.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1299
+ localstack_core-4.7.1.dev72.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ {"localstack.hooks.on_infra_shutdown": ["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", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown"], "localstack.hooks.on_infra_start": ["_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "init_response_mutation_handler=localstack.aws.handlers.response:init_response_mutation_handler", "_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", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "eager_load_services=localstack.services.plugins:eager_load_services", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start"], "localstack.cloudformation.resource_providers": ["AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "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::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "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::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "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::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin"], "localstack.packages": ["ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "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.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", "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.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.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"]}
@@ -1 +0,0 @@
1
- {"localstack.cloudformation.resource_providers": ["AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin"], "localstack.hooks.on_infra_start": ["eager_load_services=localstack.services.plugins:eager_load_services", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "_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", "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", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "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", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "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.packages": ["lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package"], "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.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "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.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "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", "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.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"]}