localstack-core 4.4.1.dev64__py3-none-any.whl → 4.4.1.dev66__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.
@@ -360,7 +360,7 @@ class ApigatewayProvider(ApigatewayApi, ServiceLifecycleHook):
360
360
 
361
361
  fixed_patch_ops.append(patch_op)
362
362
 
363
- _patch_api_gateway_entity(rest_api, fixed_patch_ops)
363
+ patch_api_gateway_entity(rest_api, fixed_patch_ops)
364
364
 
365
365
  # fix data types after patches have been applied
366
366
  endpoint_configs = rest_api.endpoint_configuration or {}
@@ -684,7 +684,7 @@ class ApigatewayProvider(ApigatewayApi, ServiceLifecycleHook):
684
684
  )
685
685
 
686
686
  # TODO: test with multiple patch operations which would not be compatible between each other
687
- _patch_api_gateway_entity(moto_resource, patch_operations)
687
+ patch_api_gateway_entity(moto_resource, patch_operations)
688
688
 
689
689
  # after setting it, mutate the store
690
690
  if moto_resource.parent_id != current_parent_id:
@@ -914,7 +914,7 @@ class ApigatewayProvider(ApigatewayApi, ServiceLifecycleHook):
914
914
  ]
915
915
 
916
916
  # TODO: test with multiple patch operations which would not be compatible between each other
917
- _patch_api_gateway_entity(moto_method, applicable_patch_operations)
917
+ patch_api_gateway_entity(moto_method, applicable_patch_operations)
918
918
 
919
919
  # if we removed all values of those fields, set them to None so that they're not returned anymore
920
920
  if had_req_params and len(moto_method.request_parameters) == 0:
@@ -1074,7 +1074,7 @@ class ApigatewayProvider(ApigatewayApi, ServiceLifecycleHook):
1074
1074
  if patch_path == "/tracingEnabled" and (value := patch_operation.get("value")):
1075
1075
  patch_operation["value"] = value and value.lower() == "true" or False
1076
1076
 
1077
- _patch_api_gateway_entity(moto_stage, patch_operations)
1077
+ patch_api_gateway_entity(moto_stage, patch_operations)
1078
1078
  moto_stage.apply_operations(patch_operations)
1079
1079
 
1080
1080
  response = moto_stage.to_json()
@@ -1464,7 +1464,7 @@ class ApigatewayProvider(ApigatewayApi, ServiceLifecycleHook):
1464
1464
  if not result:
1465
1465
  raise NotFoundException(f"Documentation version not found: {documentation_version}")
1466
1466
 
1467
- _patch_api_gateway_entity(result, patch_operations)
1467
+ patch_api_gateway_entity(result, patch_operations)
1468
1468
 
1469
1469
  return result
1470
1470
 
@@ -2011,7 +2011,7 @@ class ApigatewayProvider(ApigatewayApi, ServiceLifecycleHook):
2011
2011
  raise NotFoundException("Invalid Integration identifier specified")
2012
2012
 
2013
2013
  integration = method.method_integration
2014
- _patch_api_gateway_entity(integration, patch_operations)
2014
+ patch_api_gateway_entity(integration, patch_operations)
2015
2015
 
2016
2016
  # fix data types
2017
2017
  if integration.timeout_in_millis:
@@ -2617,7 +2617,7 @@ class ApigatewayProvider(ApigatewayApi, ServiceLifecycleHook):
2617
2617
  f"Invalid null or empty value in {param_type}"
2618
2618
  )
2619
2619
 
2620
- _patch_api_gateway_entity(patched_entity, patch_operations)
2620
+ patch_api_gateway_entity(patched_entity, patch_operations)
2621
2621
 
2622
2622
  return patched_entity
2623
2623
 
@@ -2739,7 +2739,7 @@ def create_custom_context(
2739
2739
  return ctx
2740
2740
 
2741
2741
 
2742
- def _patch_api_gateway_entity(entity: Any, patch_operations: ListOfPatchOperation):
2742
+ def patch_api_gateway_entity(entity: Any, patch_operations: ListOfPatchOperation):
2743
2743
  patch_operations = patch_operations or []
2744
2744
 
2745
2745
  if isinstance(entity, dict):
@@ -1,5 +1,10 @@
1
+ import copy
2
+ import datetime
3
+ import re
4
+
1
5
  from localstack.aws.api import CommonServiceException, RequestContext, handler
2
6
  from localstack.aws.api.apigateway import (
7
+ BadRequestException,
3
8
  CacheClusterSize,
4
9
  CreateStageRequest,
5
10
  Deployment,
@@ -23,7 +28,11 @@ from localstack.services.apigateway.helpers import (
23
28
  get_moto_rest_api,
24
29
  get_rest_api_container,
25
30
  )
26
- from localstack.services.apigateway.legacy.provider import ApigatewayProvider
31
+ from localstack.services.apigateway.legacy.provider import (
32
+ STAGE_UPDATE_PATHS,
33
+ ApigatewayProvider,
34
+ patch_api_gateway_entity,
35
+ )
27
36
  from localstack.services.apigateway.patches import apply_patches
28
37
  from localstack.services.edge import ROUTER
29
38
  from localstack.services.moto import call_moto
@@ -66,13 +75,35 @@ class ApigatewayNextGenProvider(ApigatewayProvider):
66
75
 
67
76
  @handler("CreateStage", expand=False)
68
77
  def create_stage(self, context: RequestContext, request: CreateStageRequest) -> Stage:
69
- response = super().create_stage(context, request)
78
+ # TODO: we need to internalize Stages and Deployments in LocalStack, we have a lot of split logic
79
+ super().create_stage(context, request)
80
+ rest_api_id = request["restApiId"].lower()
81
+ stage_name = request["stageName"]
82
+ moto_api = get_moto_rest_api(context, rest_api_id)
83
+ stage = moto_api.stages[stage_name]
84
+
85
+ if canary_settings := request.get("canarySettings"):
86
+ if (
87
+ deployment_id := canary_settings.get("deploymentId")
88
+ ) and deployment_id not in moto_api.deployments:
89
+ raise BadRequestException("Deployment id does not exist")
90
+
91
+ default_settings = {
92
+ "deploymentId": stage.deployment_id,
93
+ "percentTraffic": 0.0,
94
+ "useStageCache": False,
95
+ }
96
+ default_settings.update(canary_settings)
97
+ stage.canary_settings = default_settings
98
+ else:
99
+ stage.canary_settings = None
100
+
70
101
  store = get_apigateway_store(context=context)
71
102
 
72
- rest_api_id = request["restApiId"].lower()
73
103
  store.active_deployments.setdefault(rest_api_id, {})
74
- store.active_deployments[rest_api_id][request["stageName"]] = request["deploymentId"]
75
-
104
+ store.active_deployments[rest_api_id][stage_name] = request["deploymentId"]
105
+ response: Stage = stage.to_json()
106
+ self._patch_stage_response(response)
76
107
  return response
77
108
 
78
109
  @handler("UpdateStage")
@@ -84,20 +115,121 @@ class ApigatewayNextGenProvider(ApigatewayProvider):
84
115
  patch_operations: ListOfPatchOperation = None,
85
116
  **kwargs,
86
117
  ) -> Stage:
87
- response = super().update_stage(
88
- context, rest_api_id, stage_name, patch_operations, **kwargs
89
- )
118
+ moto_rest_api = get_moto_rest_api(context, rest_api_id)
119
+ if not (moto_stage := moto_rest_api.stages.get(stage_name)):
120
+ raise NotFoundException("Invalid Stage identifier specified")
121
+
122
+ # construct list of path regexes for validation
123
+ path_regexes = [re.sub("{[^}]+}", ".+", path) for path in STAGE_UPDATE_PATHS]
90
124
 
125
+ # copy the patch operations to not mutate them, so that we're logging the correct input
126
+ patch_operations = copy.deepcopy(patch_operations) or []
127
+ # we are only passing a subset of operations to Moto as it does not handle properly all of them
128
+ moto_patch_operations = []
129
+ moto_stage_copy = copy.deepcopy(moto_stage)
91
130
  for patch_operation in patch_operations:
131
+ skip_moto_apply = False
92
132
  patch_path = patch_operation["path"]
133
+ patch_op = patch_operation["op"]
134
+
135
+ # special case: handle updates (op=remove) for wildcard method settings
136
+ patch_path_stripped = patch_path.strip("/")
137
+ if patch_path_stripped == "*/*" and patch_op == "remove":
138
+ if not moto_stage.method_settings.pop(patch_path_stripped, None):
139
+ raise BadRequestException(
140
+ "Cannot remove method setting */* because there is no method setting for this method "
141
+ )
142
+ response = moto_stage.to_json()
143
+ self._patch_stage_response(response)
144
+ return response
93
145
 
94
- if patch_path == "/deploymentId" and patch_operation["op"] == "replace":
95
- if deployment_id := patch_operation.get("value"):
96
- store = get_apigateway_store(context=context)
97
- store.active_deployments.setdefault(rest_api_id.lower(), {})[stage_name] = (
98
- deployment_id
146
+ path_valid = patch_path in STAGE_UPDATE_PATHS or any(
147
+ re.match(regex, patch_path) for regex in path_regexes
148
+ )
149
+ if is_canary := patch_path.startswith("/canarySettings"):
150
+ skip_moto_apply = True
151
+ path_valid = is_canary_settings_update_patch_valid(op=patch_op, path=patch_path)
152
+ # it seems our JSON Patch utility does not handle replace properly if the value does not exists before
153
+ # it seems to maybe be a Stage-only thing, so replacing it here
154
+ if patch_op == "replace":
155
+ patch_operation["op"] = "add"
156
+
157
+ if patch_op == "copy":
158
+ copy_from = patch_operation.get("from")
159
+ if patch_path not in ("/deploymentId", "/variables") or copy_from not in (
160
+ "/canarySettings/deploymentId",
161
+ "/canarySettings/stageVariableOverrides",
162
+ ):
163
+ raise BadRequestException(
164
+ "Invalid copy operation with path: /canarySettings/stageVariableOverrides and from /variables. Valid copy:path are [/deploymentId, /variables] and valid copy:from are [/canarySettings/deploymentId, /canarySettings/stageVariableOverrides]"
99
165
  )
100
166
 
167
+ if copy_from.startswith("/canarySettings") and not getattr(
168
+ moto_stage_copy, "canary_settings", None
169
+ ):
170
+ raise BadRequestException("Promotion not available. Canary does not exist.")
171
+
172
+ if patch_path == "/variables":
173
+ moto_stage_copy.variables.update(
174
+ moto_stage_copy.canary_settings.get("stageVariableOverrides", {})
175
+ )
176
+ elif patch_path == "/deploymentId":
177
+ moto_stage_copy.deployment_id = moto_stage_copy.canary_settings["deploymentId"]
178
+
179
+ # we manually assign `copy` ops, no need to apply them
180
+ continue
181
+
182
+ if not path_valid:
183
+ valid_paths = f"[{', '.join(STAGE_UPDATE_PATHS)}]"
184
+ # note: weird formatting in AWS - required for snapshot testing
185
+ valid_paths = valid_paths.replace(
186
+ "/{resourcePath}/{httpMethod}/throttling/burstLimit, /{resourcePath}/{httpMethod}/throttling/rateLimit, /{resourcePath}/{httpMethod}/caching/ttlInSeconds",
187
+ "/{resourcePath}/{httpMethod}/throttling/burstLimit/{resourcePath}/{httpMethod}/throttling/rateLimit/{resourcePath}/{httpMethod}/caching/ttlInSeconds",
188
+ )
189
+ valid_paths = valid_paths.replace("/burstLimit, /", "/burstLimit /")
190
+ valid_paths = valid_paths.replace("/rateLimit, /", "/rateLimit /")
191
+ raise BadRequestException(
192
+ f"Invalid method setting path: {patch_operation['path']}. Must be one of: {valid_paths}"
193
+ )
194
+
195
+ # TODO: check if there are other boolean, maybe add a global step in _patch_api_gateway_entity
196
+ if patch_path == "/tracingEnabled" and (value := patch_operation.get("value")):
197
+ patch_operation["value"] = value and value.lower() == "true" or False
198
+
199
+ elif patch_path in ("/canarySettings/deploymentId", "/deploymentId"):
200
+ if patch_op != "copy" and not moto_rest_api.deployments.get(
201
+ patch_operation.get("value")
202
+ ):
203
+ raise BadRequestException("Deployment id does not exist")
204
+
205
+ if not skip_moto_apply:
206
+ # we need to copy the patch operation because `_patch_api_gateway_entity` is mutating it in place
207
+ moto_patch_operations.append(dict(patch_operation))
208
+
209
+ # we need to apply patch operation individually to be able to validate the logic
210
+ # TODO: rework the patching logic
211
+ patch_api_gateway_entity(moto_stage_copy, [patch_operation])
212
+ if is_canary and (canary_settings := getattr(moto_stage_copy, "canary_settings", None)):
213
+ default_canary_settings = {
214
+ "deploymentId": moto_stage_copy.deployment_id,
215
+ "percentTraffic": 0.0,
216
+ "useStageCache": False,
217
+ }
218
+ default_canary_settings.update(canary_settings)
219
+ moto_stage_copy.canary_settings = default_canary_settings
220
+
221
+ moto_rest_api.stages[stage_name] = moto_stage_copy
222
+ moto_stage_copy.apply_operations(moto_patch_operations)
223
+ if moto_stage.deployment_id != moto_stage_copy.deployment_id:
224
+ store = get_apigateway_store(context=context)
225
+ store.active_deployments.setdefault(rest_api_id.lower(), {})[stage_name] = (
226
+ moto_stage_copy.deployment_id
227
+ )
228
+
229
+ moto_stage_copy.last_updated_date = datetime.datetime.now(tz=datetime.UTC)
230
+
231
+ response = moto_stage_copy.to_json()
232
+ self._patch_stage_response(response)
101
233
  return response
102
234
 
103
235
  def delete_stage(
@@ -121,13 +253,31 @@ class ApigatewayNextGenProvider(ApigatewayProvider):
121
253
  tracing_enabled: NullableBoolean = None,
122
254
  **kwargs,
123
255
  ) -> Deployment:
256
+ moto_rest_api = get_moto_rest_api(context, rest_api_id)
257
+ if canary_settings:
258
+ # TODO: add validation to the canary settings
259
+ if not stage_name:
260
+ error_stage = stage_name if stage_name is not None else "null"
261
+ raise BadRequestException(
262
+ f"Invalid deployment content specified.Non null and non empty stageName must be provided for canary deployment. Provided value is {error_stage}"
263
+ )
264
+ if stage_name not in moto_rest_api.stages:
265
+ raise BadRequestException(
266
+ "Invalid deployment content specified.Stage non-existing must already be created before making a canary release deployment"
267
+ )
268
+
269
+ # FIXME: moto has an issue and is not handling canarySettings, hence overwriting the current stage with the
270
+ # canary deployment
271
+ current_stage = None
272
+ if stage_name:
273
+ current_stage = copy.deepcopy(moto_rest_api.stages.get(stage_name))
274
+
124
275
  # TODO: if the REST API does not contain any method, we should raise an exception
125
276
  deployment: Deployment = call_moto(context)
126
277
  # https://docs.aws.amazon.com/apigateway/latest/developerguide/updating-api.html
127
278
  # TODO: the deployment is not accessible until it is linked to a stage
128
279
  # you can combine a stage or later update the deployment with a stage id
129
280
  store = get_apigateway_store(context=context)
130
- moto_rest_api = get_moto_rest_api(context, rest_api_id)
131
281
  rest_api_container = get_rest_api_container(context, rest_api_id=rest_api_id)
132
282
  frozen_deployment = freeze_rest_api(
133
283
  account_id=context.account_id,
@@ -136,12 +286,39 @@ class ApigatewayNextGenProvider(ApigatewayProvider):
136
286
  localstack_rest_api=rest_api_container,
137
287
  )
138
288
  router_api_id = rest_api_id.lower()
139
- store.internal_deployments.setdefault(router_api_id, {})[deployment["id"]] = (
140
- frozen_deployment
141
- )
289
+ deployment_id = deployment["id"]
290
+ store.internal_deployments.setdefault(router_api_id, {})[deployment_id] = frozen_deployment
142
291
 
143
292
  if stage_name:
144
- store.active_deployments.setdefault(router_api_id, {})[stage_name] = deployment["id"]
293
+ moto_stage = moto_rest_api.stages[stage_name]
294
+ store.active_deployments.setdefault(router_api_id, {})[stage_name] = deployment_id
295
+ if canary_settings:
296
+ moto_stage = current_stage
297
+ moto_rest_api.stages[stage_name] = current_stage
298
+
299
+ default_settings = {
300
+ "deploymentId": deployment_id,
301
+ "percentTraffic": 0.0,
302
+ "useStageCache": False,
303
+ }
304
+ default_settings.update(canary_settings)
305
+ moto_stage.canary_settings = default_settings
306
+ else:
307
+ moto_stage.canary_settings = None
308
+
309
+ if variables:
310
+ moto_stage.variables = variables
311
+
312
+ moto_stage.description = stage_description or moto_stage.description or None
313
+
314
+ if cache_cluster_enabled is not None:
315
+ moto_stage.cache_cluster_enabled = cache_cluster_enabled
316
+
317
+ if cache_cluster_size is not None:
318
+ moto_stage.cache_cluster_size = cache_cluster_size
319
+
320
+ if tracing_enabled is not None:
321
+ moto_stage.tracing_enabled = tracing_enabled
145
322
 
146
323
  return deployment
147
324
 
@@ -267,6 +444,33 @@ class ApigatewayNextGenProvider(ApigatewayProvider):
267
444
  return response
268
445
 
269
446
 
447
+ def is_canary_settings_update_patch_valid(op: str, path: str) -> bool:
448
+ path_regexes = (
449
+ r"\/canarySettings\/percentTraffic",
450
+ r"\/canarySettings\/deploymentId",
451
+ r"\/canarySettings\/stageVariableOverrides\/.+",
452
+ r"\/canarySettings\/useStageCache",
453
+ )
454
+ if path == "/canarySettings" and op == "remove":
455
+ return True
456
+
457
+ matches_path = any(re.match(regex, path) for regex in path_regexes)
458
+
459
+ if op not in ("replace", "copy"):
460
+ if matches_path:
461
+ raise BadRequestException(f"Invalid {op} operation with path: {path}")
462
+
463
+ raise BadRequestException(
464
+ f"Cannot {op} method setting {path.lstrip('/')} because there is no method setting for this method "
465
+ )
466
+
467
+ # stageVariableOverrides is a bit special as it's nested, it doesn't return the same error message
468
+ if not matches_path and path != "/canarySettings/stageVariableOverrides":
469
+ return False
470
+
471
+ return True
472
+
473
+
270
474
  def _get_gateway_response_or_default(
271
475
  response_type: GatewayResponseType,
272
476
  gateway_responses: dict[GatewayResponseType, GatewayResponse],
@@ -1,3 +1,4 @@
1
+ import datetime
1
2
  import json
2
3
  import logging
3
4
 
@@ -35,6 +36,10 @@ def apply_patches():
35
36
  if (cacheClusterSize or cacheClusterEnabled) and not self.cache_cluster_status:
36
37
  self.cache_cluster_status = "AVAILABLE"
37
38
 
39
+ now = datetime.datetime.now(tz=datetime.UTC)
40
+ self.created_date = now
41
+ self.last_updated_date = now
42
+
38
43
  apigateway_models_Stage_init_orig = apigateway_models.Stage.__init__
39
44
  apigateway_models.Stage.__init__ = apigateway_models_Stage_init
40
45
 
@@ -143,8 +148,27 @@ def apply_patches():
143
148
  if "documentationVersion" not in result:
144
149
  result["documentationVersion"] = getattr(self, "documentation_version", None)
145
150
 
151
+ if "canarySettings" not in result:
152
+ result["canarySettings"] = getattr(self, "canary_settings", None)
153
+
154
+ if "createdDate" not in result:
155
+ created_date = getattr(self, "created_date", None)
156
+ if created_date:
157
+ created_date = int(created_date.timestamp())
158
+ result["createdDate"] = created_date
159
+
160
+ if "lastUpdatedDate" not in result:
161
+ last_updated_date = getattr(self, "last_updated_date", None)
162
+ if last_updated_date:
163
+ last_updated_date = int(last_updated_date.timestamp())
164
+ result["lastUpdatedDate"] = last_updated_date
165
+
146
166
  return result
147
167
 
168
+ @patch(apigateway_models.Stage._str2bool, pass_target=False)
169
+ def apigateway_models_stage_str_to_bool(self, v: bool | str) -> bool:
170
+ return str_to_bool(v)
171
+
148
172
  # TODO remove this patch when the behavior is implemented in moto
149
173
  @patch(apigateway_models.APIGatewayBackend.create_rest_api)
150
174
  def create_rest_api(fn, self, *args, tags=None, **kwargs):
@@ -423,6 +423,7 @@ FnEqualsKey: Final[str] = "Fn::Equals"
423
423
  FnFindInMapKey: Final[str] = "Fn::FindInMap"
424
424
  FnSubKey: Final[str] = "Fn::Sub"
425
425
  FnTransform: Final[str] = "Fn::Transform"
426
+ FnSelect: Final[str] = "Fn::Select"
426
427
  INTRINSIC_FUNCTIONS: Final[set[str]] = {
427
428
  RefKey,
428
429
  FnIfKey,
@@ -433,6 +434,7 @@ INTRINSIC_FUNCTIONS: Final[set[str]] = {
433
434
  FnFindInMapKey,
434
435
  FnSubKey,
435
436
  FnTransform,
437
+ FnSelect,
436
438
  }
437
439
 
438
440
 
@@ -646,6 +646,35 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
646
646
  after = _compute_join(arguments_after)
647
647
  return PreprocEntityDelta(before=before, after=after)
648
648
 
649
+ def visit_node_intrinsic_function_fn_select(
650
+ self, node_intrinsic_function: NodeIntrinsicFunction
651
+ ):
652
+ # TODO: add further support for schema validation
653
+ arguments_delta = self.visit(node_intrinsic_function.arguments)
654
+ arguments_before = arguments_delta.before
655
+ arguments_after = arguments_delta.after
656
+
657
+ def _compute_fn_select(args: list[Any]) -> Any:
658
+ values: list[Any] = args[1]
659
+ if not isinstance(values, list) or not values:
660
+ raise RuntimeError(f"Invalid arguments list value for Fn::Select: '{values}'")
661
+ values_len = len(values)
662
+ index: int = int(args[0])
663
+ if not isinstance(index, int) or index < 0 or index > values_len:
664
+ raise RuntimeError(f"Invalid or out of range index value for Fn::Select: '{index}'")
665
+ selection = values[index]
666
+ return selection
667
+
668
+ before = Nothing
669
+ if not is_nothing(arguments_before):
670
+ before = _compute_fn_select(arguments_before)
671
+
672
+ after = Nothing
673
+ if not is_nothing(arguments_after):
674
+ after = _compute_fn_select(arguments_after)
675
+
676
+ return PreprocEntityDelta(before=before, after=after)
677
+
649
678
  def visit_node_intrinsic_function_fn_find_in_map(
650
679
  self, node_intrinsic_function: NodeIntrinsicFunction
651
680
  ) -> PreprocEntityDelta:
@@ -118,6 +118,11 @@ class ChangeSetModelVisitor(abc.ABC):
118
118
  ):
119
119
  self.visit_children(node_intrinsic_function)
120
120
 
121
+ def visit_node_intrinsic_function_fn_select(
122
+ self, node_intrinsic_function: NodeIntrinsicFunction
123
+ ):
124
+ self.visit_children(node_intrinsic_function)
125
+
121
126
  def visit_node_intrinsic_function_fn_sub(self, node_intrinsic_function: NodeIntrinsicFunction):
122
127
  self.visit_children(node_intrinsic_function)
123
128
 
localstack/version.py CHANGED
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '4.4.1.dev64'
21
- __version_tuple__ = version_tuple = (4, 4, 1, 'dev64')
20
+ __version__ = version = '4.4.1.dev66'
21
+ __version_tuple__ = version_tuple = (4, 4, 1, 'dev66')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: localstack-core
3
- Version: 4.4.1.dev64
3
+ Version: 4.4.1.dev66
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=mNXTebZ8kSbQjFKz0LbT-g1Kdr0CE8bhEgZfHV3IX0s,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=FzIvfHpvud0GMicOMA_HkHOBsZXL7ohIdMpXCRzJU7w,526
7
+ localstack/version.py,sha256=1tIHA8yTi1AYEuA56hM5f7ATclgDvb3VjW_x8BJz1II,526
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
@@ -186,17 +186,17 @@ localstack/services/apigateway/analytics.py,sha256=0KcsDIw7WCb3OnHZVo-nwHi81iIxb
186
186
  localstack/services/apigateway/exporter.py,sha256=HV0lSZ1t7Sc2ck3Lc-UvBbQmrun6Lky5C6qrZt1snYc,13973
187
187
  localstack/services/apigateway/helpers.py,sha256=J1QsR4Cp725zXmJXO16H3P52ITgNswjCjrMfzwTXTJ0,45313
188
188
  localstack/services/apigateway/models.py,sha256=RHyjlVwRQHPI02J3XBD3cWCcYvt_jZewKX0zE6W-O88,5479
189
- localstack/services/apigateway/patches.py,sha256=VjJFOiKWAWp9bOWuFt0LFECqvWghGX7VrK3swJ4Xm9U,7748
189
+ localstack/services/apigateway/patches.py,sha256=CpdWTjssuNZSdLZNzcm4Yz4BhkPGuygWL3E1SU5JMiY,8703
190
190
  localstack/services/apigateway/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
191
  localstack/services/apigateway/legacy/context.py,sha256=rAxA3Hsse8uDpDWsbJPvQUyDFna-iYvHItE4YSUrihs,6638
192
192
  localstack/services/apigateway/legacy/helpers.py,sha256=NXqO51XF84JNhfiACs2GS7IkZrVDD9THmq-j5oNkn-I,27714
193
193
  localstack/services/apigateway/legacy/integration.py,sha256=huAXczErE_txGt29zLLm6Sl8GDemLTdI9Ku94uAZ0Y4,48669
194
194
  localstack/services/apigateway/legacy/invocations.py,sha256=rowiOycXuehS6JC-WPipLTuNVoGS4lC-Y2VPy7pxUK0,15310
195
- localstack/services/apigateway/legacy/provider.py,sha256=f43MKh_zB-S7PVNI_0tS9mCQE0mlzlzvY1Ry15fr5As,121869
195
+ localstack/services/apigateway/legacy/provider.py,sha256=LxMgWYXuc4tNTxxFqC6U3Awp9EU4RbzQbpBbBaxQhZU,121861
196
196
  localstack/services/apigateway/legacy/router_asf.py,sha256=-hf0eRxn0BXiSf_-1j2N2JtY6dVeoY19eckB8JTCPwI,6102
197
197
  localstack/services/apigateway/legacy/templates.py,sha256=LiK-LRO0hadI3_JgzbwMsybD-2XEGvgn06KcUEjL0Uo,15065
198
198
  localstack/services/apigateway/next_gen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
199
- localstack/services/apigateway/next_gen/provider.py,sha256=iDkrJmfx_4GOk7ixeOx9gOCW78VEgLvZBpv_1VESAAk,11367
199
+ localstack/services/apigateway/next_gen/provider.py,sha256=AdOIEeuxKA1xjcYxU3XIaLQlTP7EOXgk5OsBZtKHdp4,21349
200
200
  localstack/services/apigateway/next_gen/execute_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
201
201
  localstack/services/apigateway/next_gen/execute_api/api.py,sha256=4hBm-VYLhctVocblhap2g9HxbDu2HoMW0LkvxaMVFCA,550
202
202
  localstack/services/apigateway/next_gen/execute_api/context.py,sha256=33967H4AtpVzdwLkJ2yEWmsQ_OVh1HkTW-vNGAAA-Wc,5193
@@ -310,11 +310,11 @@ localstack/services/cloudformation/engine/types.py,sha256=YIhmTrO__obIviYvzzCovK
310
310
  localstack/services/cloudformation/engine/validations.py,sha256=brq7s8O8exA5kvnfzR9ulOtQ7i4konrWQs07-0h_ByE,2847
311
311
  localstack/services/cloudformation/engine/yaml_parser.py,sha256=LQpAVq9Syze9jXUGen9Mz8SjosBuodpV5XvsCSn9bDg,2164
312
312
  localstack/services/cloudformation/engine/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
313
- localstack/services/cloudformation/engine/v2/change_set_model.py,sha256=MihmrCiYWBlVwmY2NfUhXK3U4plqrYS34bZu9vGmZSg,48240
313
+ localstack/services/cloudformation/engine/v2/change_set_model.py,sha256=cGcsVMQFCEs5iYjUlpAbTN5w-0IDg9zMn3hf3KR0F08,48290
314
314
  localstack/services/cloudformation/engine/v2/change_set_model_describer.py,sha256=c5pRXk7nzHcrRxCbtSj1mOem_v-wEIDzOm-r6echrZY,9209
315
315
  localstack/services/cloudformation/engine/v2/change_set_model_executor.py,sha256=sCgIkkkSIE6ltUHCOK2v48Yjtdu5or9uJIztoAsz5LI,16212
316
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py,sha256=Flqr2FP2RjpT2oLBb2STODw2g3mA3H1nFceg0Vq9BrM,39416
317
- localstack/services/cloudformation/engine/v2/change_set_model_visitor.py,sha256=spv0qpCb9-I4yT4rIkSWyTU5XsbcFZBj5M1SUl2iAJo,6208
316
+ localstack/services/cloudformation/engine/v2/change_set_model_preproc.py,sha256=jeC-xby1TmqutdxlH5s4N6mNS1tMTo2xGDEsrsU91X0,40651
317
+ localstack/services/cloudformation/engine/v2/change_set_model_visitor.py,sha256=oO7WSBJHOCJV1FKvXuZi5osvgpJeLHViWNOlKwklIRE,6379
318
318
  localstack/services/cloudformation/models/__init__.py,sha256=da1PTClDMl-IBkrSvq6JC1lnS-K_BASzCvxVhNxN5Ls,13
319
319
  localstack/services/cloudformation/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
320
320
  localstack/services/cloudformation/resource_providers/aws_cloudformation_macro.py,sha256=Grn3dP1jANRlVO9HyKQV5GHv0x1eNRBeaIYhgn-FKv4,2812
@@ -1279,13 +1279,13 @@ localstack/utils/server/tcp_proxy.py,sha256=rR6d5jR0ozDvIlpHiqW0cfyY9a2fRGdOzyA8
1279
1279
  localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1280
1280
  localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
1281
1281
  localstack/utils/xray/traceid.py,sha256=SQSsMV2rhbTNK6ceIoozZYuGU7Fg687EXcgqxoDl1Fw,1106
1282
- localstack_core-4.4.1.dev64.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
1283
- localstack_core-4.4.1.dev64.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1284
- localstack_core-4.4.1.dev64.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
1285
- localstack_core-4.4.1.dev64.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1286
- localstack_core-4.4.1.dev64.dist-info/METADATA,sha256=84KSXV92J7ewvOIvLtLabo2mkETz7Vi9FrxR_26NyAQ,5539
1287
- localstack_core-4.4.1.dev64.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1288
- localstack_core-4.4.1.dev64.dist-info/entry_points.txt,sha256=K5M7il9Vwev64SlQiOaZVUhYpVNIE6IFHiWJ0znpbHQ,20491
1289
- localstack_core-4.4.1.dev64.dist-info/plux.json,sha256=sPPHUrC5QeISzyq-zYBnDjj6VurluDZVcnTtpIyVXOw,20712
1290
- localstack_core-4.4.1.dev64.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1291
- localstack_core-4.4.1.dev64.dist-info/RECORD,,
1282
+ localstack_core-4.4.1.dev66.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
1283
+ localstack_core-4.4.1.dev66.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1284
+ localstack_core-4.4.1.dev66.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
1285
+ localstack_core-4.4.1.dev66.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1286
+ localstack_core-4.4.1.dev66.dist-info/METADATA,sha256=xfR7Wmkb2Yq0EjUFr1KQTaib3Vy3Uq4nQP59Qwrx1pQ,5539
1287
+ localstack_core-4.4.1.dev66.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1288
+ localstack_core-4.4.1.dev66.dist-info/entry_points.txt,sha256=K5M7il9Vwev64SlQiOaZVUhYpVNIE6IFHiWJ0znpbHQ,20491
1289
+ localstack_core-4.4.1.dev66.dist-info/plux.json,sha256=N_yLqHcA9qmF2bGOm_K_-vSLO_MdEmNLWlmPhvDKXcs,20712
1290
+ localstack_core-4.4.1.dev66.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1291
+ localstack_core-4.4.1.dev66.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ {"localstack.hooks.on_infra_start": ["apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "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", "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", "_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", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "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"], "localstack.cloudformation.resource_providers": ["AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "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::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "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::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "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::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "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::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "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::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin"], "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.packages": ["jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_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", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.hooks.on_infra_shutdown": ["publish_metrics=localstack.utils.analytics.metrics:publish_metrics", "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", "stop_server=localstack.dns.plugins:stop_server", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints"], "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.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.hooks.on_infra_ready": ["_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"]}
@@ -1 +0,0 @@
1
- {"localstack.cloudformation.resource_providers": ["AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "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::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "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::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "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::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "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::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "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::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "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::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin"], "localstack.hooks.on_infra_start": ["register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "_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", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "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", "_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"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.hooks.on_infra_ready": ["_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.hooks.on_infra_shutdown": ["_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "stop_server=localstack.dns.plugins:stop_server", "publish_metrics=localstack.utils.analytics.metrics:publish_metrics", "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"], "localstack.packages": ["jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_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", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_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"], "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", "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.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"]}