localstack-core 4.4.1.dev1__py3-none-any.whl → 4.4.1.dev3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- localstack/services/cloudformation/engine/v2/change_set_model.py +18 -7
- localstack/services/cloudformation/engine/v2/change_set_model_describer.py +22 -2
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +11 -1
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +110 -49
- localstack/services/cloudformation/engine/v2/change_set_model_visitor.py +3 -0
- localstack/services/lambda_/resource_providers/aws_lambda_version.py +51 -17
- localstack/services/lambda_/resource_providers/lambda_alias.py +15 -2
- localstack/version.py +2 -2
- {localstack_core-4.4.1.dev1.dist-info → localstack_core-4.4.1.dev3.dist-info}/METADATA +1 -1
- {localstack_core-4.4.1.dev1.dist-info → localstack_core-4.4.1.dev3.dist-info}/RECORD +18 -18
- localstack_core-4.4.1.dev3.dist-info/plux.json +1 -0
- localstack_core-4.4.1.dev1.dist-info/plux.json +0 -1
- {localstack_core-4.4.1.dev1.data → localstack_core-4.4.1.dev3.data}/scripts/localstack +0 -0
- {localstack_core-4.4.1.dev1.data → localstack_core-4.4.1.dev3.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.4.1.dev1.data → localstack_core-4.4.1.dev3.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.4.1.dev1.dist-info → localstack_core-4.4.1.dev3.dist-info}/WHEEL +0 -0
- {localstack_core-4.4.1.dev1.dist-info → localstack_core-4.4.1.dev3.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.4.1.dev1.dist-info → localstack_core-4.4.1.dev3.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.4.1.dev1.dist-info → localstack_core-4.4.1.dev3.dist-info}/top_level.txt +0 -0
@@ -367,15 +367,17 @@ ExportKey: Final[str] = "Export"
|
|
367
367
|
OutputsKey: Final[str] = "Outputs"
|
368
368
|
# TODO: expand intrinsic functions set.
|
369
369
|
RefKey: Final[str] = "Ref"
|
370
|
-
|
371
|
-
|
370
|
+
FnIfKey: Final[str] = "Fn::If"
|
371
|
+
FnNotKey: Final[str] = "Fn::Not"
|
372
|
+
FnJoinKey: Final[str] = "Fn::Join"
|
372
373
|
FnGetAttKey: Final[str] = "Fn::GetAtt"
|
373
374
|
FnEqualsKey: Final[str] = "Fn::Equals"
|
374
375
|
FnFindInMapKey: Final[str] = "Fn::FindInMap"
|
375
376
|
INTRINSIC_FUNCTIONS: Final[set[str]] = {
|
376
377
|
RefKey,
|
377
|
-
|
378
|
-
|
378
|
+
FnIfKey,
|
379
|
+
FnNotKey,
|
380
|
+
FnJoinKey,
|
379
381
|
FnEqualsKey,
|
380
382
|
FnGetAttKey,
|
381
383
|
FnFindInMapKey,
|
@@ -587,7 +589,12 @@ class ChangeSetModel:
|
|
587
589
|
scope=value_scope, before_value=before_value, after_value=after_value
|
588
590
|
)
|
589
591
|
array.append(value)
|
590
|
-
|
592
|
+
if self._is_created(before=before_array, after=after_array):
|
593
|
+
change_type = ChangeType.CREATED
|
594
|
+
elif self._is_removed(before=before_array, after=after_array):
|
595
|
+
change_type = ChangeType.REMOVED
|
596
|
+
else:
|
597
|
+
change_type = self._change_type_for_parent_of([value.change_type for value in array])
|
591
598
|
return NodeArray(scope=scope, change_type=change_type, array=array)
|
592
599
|
|
593
600
|
def _visit_object(
|
@@ -596,8 +603,12 @@ class ChangeSetModel:
|
|
596
603
|
node_object = self._visited_scopes.get(scope)
|
597
604
|
if isinstance(node_object, NodeObject):
|
598
605
|
return node_object
|
599
|
-
|
600
|
-
|
606
|
+
if self._is_created(before=before_object, after=after_object):
|
607
|
+
change_type = ChangeType.CREATED
|
608
|
+
elif self._is_removed(before=before_object, after=after_object):
|
609
|
+
change_type = ChangeType.REMOVED
|
610
|
+
else:
|
611
|
+
change_type = ChangeType.UNCHANGED
|
601
612
|
binding_names = self._safe_keys_of(before_object, after_object)
|
602
613
|
bindings: dict[str, ChangeSetEntity] = dict()
|
603
614
|
for binding_name in binding_names:
|
@@ -44,7 +44,7 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
44
44
|
def visit_node_intrinsic_function_fn_get_att(
|
45
45
|
self, node_intrinsic_function: NodeIntrinsicFunction
|
46
46
|
) -> PreprocEntityDelta:
|
47
|
-
#
|
47
|
+
# Consideration: If we can properly compute the before and after value, why should we
|
48
48
|
# artificially limit the precision of our output to match AWS's?
|
49
49
|
|
50
50
|
arguments_delta = self.visit(node_intrinsic_function.arguments)
|
@@ -71,10 +71,14 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
71
71
|
after_node_resource = self._get_node_resource_for(
|
72
72
|
resource_name=after_logical_name_of_resource, node_template=self._node_template
|
73
73
|
)
|
74
|
+
after_property_delta: PreprocEntityDelta
|
74
75
|
after_node_property = self._get_node_property_for(
|
75
76
|
property_name=after_attribute_name, node_resource=after_node_resource
|
76
77
|
)
|
77
|
-
|
78
|
+
if after_node_property is not None:
|
79
|
+
after_property_delta = self.visit(after_node_property)
|
80
|
+
else:
|
81
|
+
after_property_delta = PreprocEntityDelta(after=CHANGESET_KNOWN_AFTER_APPLY)
|
78
82
|
if after_property_delta.before == after_property_delta.after:
|
79
83
|
after = after_property_delta.after
|
80
84
|
else:
|
@@ -82,6 +86,22 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
82
86
|
|
83
87
|
return PreprocEntityDelta(before=before, after=after)
|
84
88
|
|
89
|
+
def visit_node_intrinsic_function_fn_join(
|
90
|
+
self, node_intrinsic_function: NodeIntrinsicFunction
|
91
|
+
) -> PreprocEntityDelta:
|
92
|
+
# TODO: investigate the behaviour and impact of this logic with the user defining
|
93
|
+
# {{changeSet:KNOWN_AFTER_APPLY}} string literals as delimiters or arguments.
|
94
|
+
delta = super().visit_node_intrinsic_function_fn_join(
|
95
|
+
node_intrinsic_function=node_intrinsic_function
|
96
|
+
)
|
97
|
+
delta_before = delta.before
|
98
|
+
if isinstance(delta_before, str) and CHANGESET_KNOWN_AFTER_APPLY in delta_before:
|
99
|
+
delta.before = CHANGESET_KNOWN_AFTER_APPLY
|
100
|
+
delta_after = delta.after
|
101
|
+
if isinstance(delta_after, str) and CHANGESET_KNOWN_AFTER_APPLY in delta_after:
|
102
|
+
delta.after = CHANGESET_KNOWN_AFTER_APPLY
|
103
|
+
return delta
|
104
|
+
|
85
105
|
def _register_resource_change(
|
86
106
|
self,
|
87
107
|
logical_id: str,
|
@@ -66,7 +66,17 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
66
66
|
self.resolved_parameters[node_parameter.name] = delta.after
|
67
67
|
return delta
|
68
68
|
|
69
|
-
def
|
69
|
+
def _after_deployed_property_value_of(
|
70
|
+
self, resource_logical_id: str, property_name: str
|
71
|
+
) -> str:
|
72
|
+
after_resolved_resources = self.resources
|
73
|
+
return self._deployed_property_value_of(
|
74
|
+
resource_logical_id=resource_logical_id,
|
75
|
+
property_name=property_name,
|
76
|
+
resolved_resources=after_resolved_resources,
|
77
|
+
)
|
78
|
+
|
79
|
+
def _after_resource_physical_id(self, resource_logical_id: str) -> str:
|
70
80
|
after_resolved_resources = self.resources
|
71
81
|
return self._resource_physical_resource_id_from(
|
72
82
|
logical_resource_id=resource_logical_id, resolved_resources=after_resolved_resources
|
@@ -18,7 +18,6 @@ from localstack.services.cloudformation.engine.v2.change_set_model import (
|
|
18
18
|
NodeProperty,
|
19
19
|
NodeResource,
|
20
20
|
NodeTemplate,
|
21
|
-
NothingType,
|
22
21
|
Scope,
|
23
22
|
TerminalValue,
|
24
23
|
TerminalValueCreated,
|
@@ -147,18 +146,50 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
147
146
|
for node_resource in node_template.resources.resources:
|
148
147
|
if node_resource.name == resource_name:
|
149
148
|
return node_resource
|
150
|
-
|
151
|
-
raise RuntimeError()
|
149
|
+
raise RuntimeError(f"No resource '{resource_name}' was found")
|
152
150
|
|
153
151
|
def _get_node_property_for(
|
154
152
|
self, property_name: str, node_resource: NodeResource
|
155
|
-
) -> NodeProperty:
|
153
|
+
) -> Optional[NodeProperty]:
|
156
154
|
# TODO: this could be improved with hashmap lookups if the Node contained bindings and not lists.
|
157
155
|
for node_property in node_resource.properties.properties:
|
158
156
|
if node_property.name == property_name:
|
159
157
|
return node_property
|
160
|
-
|
161
|
-
|
158
|
+
return None
|
159
|
+
|
160
|
+
@staticmethod
|
161
|
+
def _deployed_property_value_of(
|
162
|
+
resource_logical_id: str, property_name: str, resolved_resources: dict
|
163
|
+
) -> Any:
|
164
|
+
# TODO: typing around resolved resources is needed and should be reflected here.
|
165
|
+
resolved_resource = resolved_resources.get(resource_logical_id)
|
166
|
+
if resolved_resource is None:
|
167
|
+
raise RuntimeError(
|
168
|
+
f"No deployed instances of resource '{resource_logical_id}' were found"
|
169
|
+
)
|
170
|
+
properties = resolved_resource.get("Properties", dict())
|
171
|
+
property_value: Optional[Any] = properties.get(property_name)
|
172
|
+
if property_value is None:
|
173
|
+
raise RuntimeError(
|
174
|
+
f"No '{property_name}' found for deployed resource '{resource_logical_id}' was found"
|
175
|
+
)
|
176
|
+
return property_value
|
177
|
+
|
178
|
+
def _before_deployed_property_value_of(
|
179
|
+
self, resource_logical_id: str, property_name: str
|
180
|
+
) -> Any:
|
181
|
+
return self._deployed_property_value_of(
|
182
|
+
resource_logical_id=resource_logical_id,
|
183
|
+
property_name=property_name,
|
184
|
+
resolved_resources=self._before_resolved_resources,
|
185
|
+
)
|
186
|
+
|
187
|
+
def _after_deployed_property_value_of(
|
188
|
+
self, resource_logical_id: str, property_name: str
|
189
|
+
) -> Optional[str]:
|
190
|
+
return self._before_deployed_property_value_of(
|
191
|
+
resource_logical_id=resource_logical_id, property_name=property_name
|
192
|
+
)
|
162
193
|
|
163
194
|
def _get_node_mapping(self, map_name: str) -> NodeMapping:
|
164
195
|
mappings: list[NodeMapping] = self._node_template.mappings.mappings
|
@@ -185,18 +216,19 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
185
216
|
return condition
|
186
217
|
return None
|
187
218
|
|
188
|
-
def
|
219
|
+
def _resolve_condition(self, logical_id: str) -> PreprocEntityDelta:
|
189
220
|
node_condition = self._get_node_condition_if_exists(condition_name=logical_id)
|
190
221
|
if isinstance(node_condition, NodeCondition):
|
191
222
|
condition_delta = self.visit(node_condition)
|
192
223
|
return condition_delta
|
224
|
+
raise RuntimeError(f"No condition '{logical_id}' was found.")
|
193
225
|
|
226
|
+
def _resolve_reference(self, logical_id: str) -> PreprocEntityDelta:
|
194
227
|
node_parameter = self._get_node_parameter_if_exists(parameter_name=logical_id)
|
195
228
|
if isinstance(node_parameter, NodeParameter):
|
196
229
|
parameter_delta = self.visit(node_parameter)
|
197
230
|
return parameter_delta
|
198
231
|
|
199
|
-
# TODO: check for KNOWN AFTER APPLY values for logical ids coming from intrinsic functions as arguments.
|
200
232
|
node_resource = self._get_node_resource_for(
|
201
233
|
resource_name=logical_id, node_template=self._node_template
|
202
234
|
)
|
@@ -217,19 +249,6 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
217
249
|
mapping_value_delta = self.visit(second_level_value)
|
218
250
|
return mapping_value_delta
|
219
251
|
|
220
|
-
def _resolve_reference_binding(
|
221
|
-
self, before_logical_id: Optional[str], after_logical_id: Optional[str]
|
222
|
-
) -> PreprocEntityDelta:
|
223
|
-
before = None
|
224
|
-
if before_logical_id is not None:
|
225
|
-
before_delta = self._resolve_reference(logical_id=before_logical_id)
|
226
|
-
before = before_delta.before
|
227
|
-
after = None
|
228
|
-
if after_logical_id is not None:
|
229
|
-
after_delta = self._resolve_reference(logical_id=after_logical_id)
|
230
|
-
after = after_delta.after
|
231
|
-
return PreprocEntityDelta(before=before, after=after)
|
232
|
-
|
233
252
|
def visit(self, change_set_entity: ChangeSetEntity) -> PreprocEntityDelta:
|
234
253
|
delta = self._processed.get(change_set_entity.scope)
|
235
254
|
if delta is not None:
|
@@ -299,18 +318,27 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
299
318
|
if before_argument_list:
|
300
319
|
before_logical_name_of_resource = before_argument_list[0]
|
301
320
|
before_attribute_name = before_argument_list[1]
|
321
|
+
|
302
322
|
before_node_resource = self._get_node_resource_for(
|
303
323
|
resource_name=before_logical_name_of_resource, node_template=self._node_template
|
304
324
|
)
|
305
|
-
before_node_property = self._get_node_property_for(
|
325
|
+
before_node_property: Optional[NodeProperty] = self._get_node_property_for(
|
306
326
|
property_name=before_attribute_name, node_resource=before_node_resource
|
307
327
|
)
|
308
|
-
|
309
|
-
|
328
|
+
if before_node_property is not None:
|
329
|
+
# The property is statically defined in the template and its value can be computed.
|
330
|
+
before_property_delta = self.visit(before_node_property)
|
331
|
+
before = before_property_delta.before
|
332
|
+
else:
|
333
|
+
# The property is not statically defined and must therefore be available in
|
334
|
+
# the properties deployed set.
|
335
|
+
before = self._before_deployed_property_value_of(
|
336
|
+
resource_logical_id=before_logical_name_of_resource,
|
337
|
+
property_name=before_attribute_name,
|
338
|
+
)
|
310
339
|
|
311
340
|
after = None
|
312
341
|
if after_argument_list:
|
313
|
-
# TODO: when are values only accessible at runtime?
|
314
342
|
after_logical_name_of_resource = after_argument_list[0]
|
315
343
|
after_attribute_name = after_argument_list[1]
|
316
344
|
after_node_resource = self._get_node_resource_for(
|
@@ -319,15 +347,23 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
319
347
|
after_node_property = self._get_node_property_for(
|
320
348
|
property_name=after_attribute_name, node_resource=after_node_resource
|
321
349
|
)
|
322
|
-
|
323
|
-
|
350
|
+
if after_node_property is not None:
|
351
|
+
# The property is statically defined in the template and its value can be computed.
|
352
|
+
after_property_delta = self.visit(after_node_property)
|
353
|
+
after = after_property_delta.after
|
354
|
+
else:
|
355
|
+
# The property is not statically defined and must therefore be available in
|
356
|
+
# the properties deployed set.
|
357
|
+
after = self._after_deployed_property_value_of(
|
358
|
+
resource_logical_id=after_logical_name_of_resource,
|
359
|
+
property_name=after_attribute_name,
|
360
|
+
)
|
324
361
|
|
325
362
|
return PreprocEntityDelta(before=before, after=after)
|
326
363
|
|
327
364
|
def visit_node_intrinsic_function_fn_equals(
|
328
365
|
self, node_intrinsic_function: NodeIntrinsicFunction
|
329
366
|
) -> PreprocEntityDelta:
|
330
|
-
# TODO: check for KNOWN AFTER APPLY values for logical ids coming from intrinsic functions as arguments.
|
331
367
|
arguments_delta = self.visit(node_intrinsic_function.arguments)
|
332
368
|
before_values = arguments_delta.before
|
333
369
|
after_values = arguments_delta.after
|
@@ -342,12 +378,11 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
342
378
|
def visit_node_intrinsic_function_fn_if(
|
343
379
|
self, node_intrinsic_function: NodeIntrinsicFunction
|
344
380
|
) -> PreprocEntityDelta:
|
345
|
-
# TODO: check for KNOWN AFTER APPLY values for logical ids coming from intrinsic functions as arguments.
|
346
381
|
arguments_delta = self.visit(node_intrinsic_function.arguments)
|
347
382
|
|
348
383
|
def _compute_delta_for_if_statement(args: list[Any]) -> PreprocEntityDelta:
|
349
384
|
condition_name = args[0]
|
350
|
-
boolean_expression_delta = self.
|
385
|
+
boolean_expression_delta = self._resolve_condition(logical_id=condition_name)
|
351
386
|
return PreprocEntityDelta(
|
352
387
|
before=args[1] if boolean_expression_delta.before else args[2],
|
353
388
|
after=args[1] if boolean_expression_delta.after else args[2],
|
@@ -363,8 +398,6 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
363
398
|
def visit_node_intrinsic_function_fn_not(
|
364
399
|
self, node_intrinsic_function: NodeIntrinsicFunction
|
365
400
|
) -> PreprocEntityDelta:
|
366
|
-
# TODO: check for KNOWN AFTER APPLY values for logical ids coming from intrinsic functions as arguments.
|
367
|
-
# TODO: add type checking/validation for result unit?
|
368
401
|
arguments_delta = self.visit(node_intrinsic_function.arguments)
|
369
402
|
before_condition = arguments_delta.before
|
370
403
|
after_condition = arguments_delta.after
|
@@ -382,10 +415,34 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
382
415
|
# Implicit change type computation.
|
383
416
|
return PreprocEntityDelta(before=before, after=after)
|
384
417
|
|
418
|
+
def visit_node_intrinsic_function_fn_join(
|
419
|
+
self, node_intrinsic_function: NodeIntrinsicFunction
|
420
|
+
) -> PreprocEntityDelta:
|
421
|
+
arguments_delta = self.visit(node_intrinsic_function.arguments)
|
422
|
+
arguments_before = arguments_delta.before
|
423
|
+
arguments_after = arguments_delta.after
|
424
|
+
|
425
|
+
def _compute_join(args: list[Any]) -> str:
|
426
|
+
# TODO: add support for schema validation.
|
427
|
+
# TODO: add tests for joining non string values.
|
428
|
+
delimiter: str = str(args[0])
|
429
|
+
values: list[Any] = args[1]
|
430
|
+
if not isinstance(values, list):
|
431
|
+
raise RuntimeError("Invalid arguments list definition for Fn::Join")
|
432
|
+
join_result = delimiter.join(map(str, values))
|
433
|
+
return join_result
|
434
|
+
|
435
|
+
before = None
|
436
|
+
if isinstance(arguments_before, list) and len(arguments_before) == 2:
|
437
|
+
before = _compute_join(arguments_before)
|
438
|
+
after = None
|
439
|
+
if isinstance(arguments_after, list) and len(arguments_after) == 2:
|
440
|
+
after = _compute_join(arguments_after)
|
441
|
+
return PreprocEntityDelta(before=before, after=after)
|
442
|
+
|
385
443
|
def visit_node_intrinsic_function_fn_find_in_map(
|
386
444
|
self, node_intrinsic_function: NodeIntrinsicFunction
|
387
445
|
) -> PreprocEntityDelta:
|
388
|
-
# TODO: check for KNOWN AFTER APPLY values for logical ids coming from intrinsic functions as arguments.
|
389
446
|
# TODO: add type checking/validation for result unit?
|
390
447
|
arguments_delta = self.visit(node_intrinsic_function.arguments)
|
391
448
|
before_arguments = arguments_delta.before
|
@@ -424,24 +481,22 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
424
481
|
|
425
482
|
def _resource_physical_resource_id_from(
|
426
483
|
self, logical_resource_id: str, resolved_resources: dict
|
427
|
-
) ->
|
484
|
+
) -> str:
|
428
485
|
# TODO: typing around resolved resources is needed and should be reflected here.
|
429
|
-
resolved_resource = resolved_resources.get(logical_resource_id)
|
430
|
-
if resolved_resource is None:
|
431
|
-
return None
|
486
|
+
resolved_resource = resolved_resources.get(logical_resource_id, dict())
|
432
487
|
physical_resource_id: Optional[str] = resolved_resource.get("PhysicalResourceId")
|
433
488
|
if not isinstance(physical_resource_id, str):
|
434
489
|
raise RuntimeError(f"No PhysicalResourceId found for resource '{logical_resource_id}'")
|
435
490
|
return physical_resource_id
|
436
491
|
|
437
|
-
def _before_resource_physical_id(self, resource_logical_id: str) ->
|
492
|
+
def _before_resource_physical_id(self, resource_logical_id: str) -> str:
|
438
493
|
# TODO: typing around resolved resources is needed and should be reflected here.
|
439
494
|
return self._resource_physical_resource_id_from(
|
440
495
|
logical_resource_id=resource_logical_id,
|
441
496
|
resolved_resources=self._before_resolved_resources,
|
442
497
|
)
|
443
498
|
|
444
|
-
def _after_resource_physical_id(self, resource_logical_id: str) ->
|
499
|
+
def _after_resource_physical_id(self, resource_logical_id: str) -> str:
|
445
500
|
return self._before_resource_physical_id(resource_logical_id=resource_logical_id)
|
446
501
|
|
447
502
|
def visit_node_intrinsic_function_ref(
|
@@ -473,9 +528,9 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
473
528
|
after = list()
|
474
529
|
for change_set_entity in node_array.array:
|
475
530
|
delta: PreprocEntityDelta = self.visit(change_set_entity=change_set_entity)
|
476
|
-
if delta.before:
|
531
|
+
if delta.before is not None:
|
477
532
|
before.append(delta.before)
|
478
|
-
if delta.after:
|
533
|
+
if delta.after is not None:
|
479
534
|
after.append(delta.after)
|
480
535
|
return PreprocEntityDelta(before=before, after=after)
|
481
536
|
|
@@ -501,12 +556,15 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
501
556
|
def _resolve_resource_condition_reference(self, reference: TerminalValue) -> PreprocEntityDelta:
|
502
557
|
reference_delta = self.visit(reference)
|
503
558
|
before_reference = reference_delta.before
|
559
|
+
before = None
|
560
|
+
if before_reference is not None:
|
561
|
+
before_delta = self._resolve_condition(logical_id=before_reference)
|
562
|
+
before = before_delta.before
|
563
|
+
after = None
|
504
564
|
after_reference = reference_delta.after
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
before = condition_delta.before if not isinstance(before_reference, NothingType) else True
|
509
|
-
after = condition_delta.after if not isinstance(after_reference, NothingType) else True
|
565
|
+
if after_reference is not None:
|
566
|
+
after_delta = self._resolve_condition(logical_id=after_reference)
|
567
|
+
after = after_delta.after
|
510
568
|
return PreprocEntityDelta(before=before, after=after)
|
511
569
|
|
512
570
|
def visit_node_resource(
|
@@ -543,9 +601,12 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
543
601
|
)
|
544
602
|
if change_type != ChangeType.REMOVED and condition_after is None or condition_after:
|
545
603
|
logical_resource_id = node_resource.name
|
546
|
-
|
547
|
-
|
548
|
-
|
604
|
+
try:
|
605
|
+
after_physical_resource_id = self._after_resource_physical_id(
|
606
|
+
resource_logical_id=logical_resource_id
|
607
|
+
)
|
608
|
+
except RuntimeError:
|
609
|
+
after_physical_resource_id = None
|
549
610
|
after = PreprocResource(
|
550
611
|
logical_id=logical_resource_id,
|
551
612
|
physical_resource_id=after_physical_resource_id,
|
@@ -110,6 +110,9 @@ class ChangeSetModelVisitor(abc.ABC):
|
|
110
110
|
def visit_node_intrinsic_function_fn_not(self, node_intrinsic_function: NodeIntrinsicFunction):
|
111
111
|
self.visit_children(node_intrinsic_function)
|
112
112
|
|
113
|
+
def visit_node_intrinsic_function_fn_join(self, node_intrinsic_function: NodeIntrinsicFunction):
|
114
|
+
self.visit_children(node_intrinsic_function)
|
115
|
+
|
113
116
|
def visit_node_intrinsic_function_fn_find_in_map(
|
114
117
|
self, node_intrinsic_function: NodeIntrinsicFunction
|
115
118
|
):
|
@@ -66,6 +66,14 @@ class LambdaVersionProvider(ResourceProvider[LambdaVersionProperties]):
|
|
66
66
|
response = lambda_client.publish_version(**params)
|
67
67
|
model["Version"] = response["Version"]
|
68
68
|
model["Id"] = response["FunctionArn"]
|
69
|
+
if model.get("ProvisionedConcurrencyConfig"):
|
70
|
+
lambda_client.put_provisioned_concurrency_config(
|
71
|
+
FunctionName=model["FunctionName"],
|
72
|
+
Qualifier=model["Version"],
|
73
|
+
ProvisionedConcurrentExecutions=model["ProvisionedConcurrencyConfig"][
|
74
|
+
"ProvisionedConcurrentExecutions"
|
75
|
+
],
|
76
|
+
)
|
69
77
|
ctx[REPEATED_INVOCATION] = True
|
70
78
|
return ProgressEvent(
|
71
79
|
status=OperationStatus.IN_PROGRESS,
|
@@ -73,25 +81,50 @@ class LambdaVersionProvider(ResourceProvider[LambdaVersionProperties]):
|
|
73
81
|
custom_context=request.custom_context,
|
74
82
|
)
|
75
83
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
custom_context=request.custom_context,
|
82
|
-
)
|
83
|
-
elif version["Configuration"]["State"] == "Active":
|
84
|
-
return ProgressEvent(
|
85
|
-
status=OperationStatus.SUCCESS,
|
86
|
-
resource_model=model,
|
84
|
+
if model.get("ProvisionedConcurrencyConfig"):
|
85
|
+
# Assumption: Ready provisioned concurrency implies the function version is ready
|
86
|
+
provisioned_concurrency_config = lambda_client.get_provisioned_concurrency_config(
|
87
|
+
FunctionName=model["FunctionName"],
|
88
|
+
Qualifier=model["Version"],
|
87
89
|
)
|
90
|
+
if provisioned_concurrency_config["Status"] == "IN_PROGRESS":
|
91
|
+
return ProgressEvent(
|
92
|
+
status=OperationStatus.IN_PROGRESS,
|
93
|
+
resource_model=model,
|
94
|
+
custom_context=request.custom_context,
|
95
|
+
)
|
96
|
+
elif provisioned_concurrency_config["Status"] == "READY":
|
97
|
+
return ProgressEvent(
|
98
|
+
status=OperationStatus.SUCCESS,
|
99
|
+
resource_model=model,
|
100
|
+
)
|
101
|
+
else:
|
102
|
+
return ProgressEvent(
|
103
|
+
status=OperationStatus.FAILED,
|
104
|
+
resource_model=model,
|
105
|
+
message="",
|
106
|
+
error_code="VersionStateFailure", # TODO: not parity tested
|
107
|
+
)
|
88
108
|
else:
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
109
|
+
version = lambda_client.get_function(FunctionName=model["Id"])
|
110
|
+
if version["Configuration"]["State"] == "Pending":
|
111
|
+
return ProgressEvent(
|
112
|
+
status=OperationStatus.IN_PROGRESS,
|
113
|
+
resource_model=model,
|
114
|
+
custom_context=request.custom_context,
|
115
|
+
)
|
116
|
+
elif version["Configuration"]["State"] == "Active":
|
117
|
+
return ProgressEvent(
|
118
|
+
status=OperationStatus.SUCCESS,
|
119
|
+
resource_model=model,
|
120
|
+
)
|
121
|
+
else:
|
122
|
+
return ProgressEvent(
|
123
|
+
status=OperationStatus.FAILED,
|
124
|
+
resource_model=model,
|
125
|
+
message="",
|
126
|
+
error_code="VersionStateFailure", # TODO: not parity tested
|
127
|
+
)
|
95
128
|
|
96
129
|
def read(
|
97
130
|
self,
|
@@ -117,6 +150,7 @@ class LambdaVersionProvider(ResourceProvider[LambdaVersionProperties]):
|
|
117
150
|
lambda_client = request.aws_client_factory.lambda_
|
118
151
|
|
119
152
|
# without qualifier entire function is deleted instead of just version
|
153
|
+
# provisioned concurrency is automatically deleted upon deleting a function or function version
|
120
154
|
lambda_client.delete_function(FunctionName=model["Id"], Qualifier=model["Version"])
|
121
155
|
|
122
156
|
return ProgressEvent(
|
@@ -84,7 +84,7 @@ class LambdaAliasProvider(ResourceProvider[LambdaAliasProperties]):
|
|
84
84
|
if model.get("ProvisionedConcurrencyConfig"):
|
85
85
|
lambda_.put_provisioned_concurrency_config(
|
86
86
|
FunctionName=model["FunctionName"],
|
87
|
-
Qualifier=model["
|
87
|
+
Qualifier=model["Name"],
|
88
88
|
ProvisionedConcurrentExecutions=model["ProvisionedConcurrencyConfig"][
|
89
89
|
"ProvisionedConcurrentExecutions"
|
90
90
|
],
|
@@ -100,13 +100,25 @@ class LambdaAliasProvider(ResourceProvider[LambdaAliasProperties]):
|
|
100
100
|
# get provisioned config status
|
101
101
|
result = lambda_.get_provisioned_concurrency_config(
|
102
102
|
FunctionName=model["FunctionName"],
|
103
|
-
Qualifier=model["
|
103
|
+
Qualifier=model["Name"],
|
104
104
|
)
|
105
105
|
if result["Status"] == "IN_PROGRESS":
|
106
106
|
return ProgressEvent(
|
107
107
|
status=OperationStatus.IN_PROGRESS,
|
108
108
|
resource_model=model,
|
109
109
|
)
|
110
|
+
elif result["Status"] == "READY":
|
111
|
+
return ProgressEvent(
|
112
|
+
status=OperationStatus.SUCCESS,
|
113
|
+
resource_model=model,
|
114
|
+
)
|
115
|
+
else:
|
116
|
+
return ProgressEvent(
|
117
|
+
status=OperationStatus.FAILED,
|
118
|
+
resource_model=model,
|
119
|
+
message="",
|
120
|
+
error_code="VersionStateFailure", # TODO: not parity tested
|
121
|
+
)
|
110
122
|
|
111
123
|
return ProgressEvent(
|
112
124
|
status=OperationStatus.SUCCESS,
|
@@ -137,6 +149,7 @@ class LambdaAliasProvider(ResourceProvider[LambdaAliasProperties]):
|
|
137
149
|
lambda_ = request.aws_client_factory.lambda_
|
138
150
|
|
139
151
|
try:
|
152
|
+
# provisioned concurrency is automatically deleted upon deleting a function alias
|
140
153
|
lambda_.delete_alias(
|
141
154
|
FunctionName=model["FunctionName"],
|
142
155
|
Name=model["Name"],
|
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.
|
21
|
-
__version_tuple__ = version_tuple = (4, 4, 1, '
|
20
|
+
__version__ = version = '4.4.1.dev3'
|
21
|
+
__version_tuple__ = version_tuple = (4, 4, 1, 'dev3')
|
@@ -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=
|
7
|
+
localstack/version.py,sha256=KDYJ49J-BvhhRR2i4485yJ7MuGtC1fR1w2lrnspdAHY,524
|
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
|
@@ -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=
|
314
|
-
localstack/services/cloudformation/engine/v2/change_set_model_describer.py,sha256=
|
315
|
-
localstack/services/cloudformation/engine/v2/change_set_model_executor.py,sha256=
|
316
|
-
localstack/services/cloudformation/engine/v2/change_set_model_preproc.py,sha256=
|
317
|
-
localstack/services/cloudformation/engine/v2/change_set_model_visitor.py,sha256=
|
313
|
+
localstack/services/cloudformation/engine/v2/change_set_model.py,sha256=T4Gtah3UcRjN4U4rYlI7PucF6yTZHgQf2b-vtfa6gv8,48825
|
314
|
+
localstack/services/cloudformation/engine/v2/change_set_model_describer.py,sha256=Ws-NUXebjTD6lPScMv0-iqYi8hq_gZgKteUuVIQ5MgM,8406
|
315
|
+
localstack/services/cloudformation/engine/v2/change_set_model_executor.py,sha256=VgRWpKsOIuOZX7qsv_nKIr_AQat2AEkGq3mVPntR810,13735
|
316
|
+
localstack/services/cloudformation/engine/v2/change_set_model_preproc.py,sha256=Sq0m27Kc4OQaznD5_WjjsKz9v1Q5nU6IvRGw289jP_w,28164
|
317
|
+
localstack/services/cloudformation/engine/v2/change_set_model_visitor.py,sha256=2tggKZ74ShtKOgZjzczeEibB7WUFamf5nfS1tRGDkss,5318
|
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
|
@@ -613,10 +613,10 @@ localstack/services/lambda_/resource_providers/aws_lambda_permission_plugin.py,s
|
|
613
613
|
localstack/services/lambda_/resource_providers/aws_lambda_url.py,sha256=DkkDrRceutW1RKtEFvdwez-cfS8JbKSsCbbmJ3iTh-g,3662
|
614
614
|
localstack/services/lambda_/resource_providers/aws_lambda_url.schema.json,sha256=y68e_1m7xtUjP6w7FjsZxYuXDuCuAl7YCYQ43sHsoQA,4941
|
615
615
|
localstack/services/lambda_/resource_providers/aws_lambda_url_plugin.py,sha256=wLEvOFF7Pq8SdHzku4GiuaNQ92UnKJE3rxaiLrNr7xk,519
|
616
|
-
localstack/services/lambda_/resource_providers/aws_lambda_version.py,sha256=
|
616
|
+
localstack/services/lambda_/resource_providers/aws_lambda_version.py,sha256=lfHsWFzZnLwe9zrD-2r9gPX6J_0UVSxaD4bLJfPbbrA,5763
|
617
617
|
localstack/services/lambda_/resource_providers/aws_lambda_version.schema.json,sha256=3T018mBjArAp5aNBYgQPCCMeCHwGrWyqZ0_7ae38Z4k,1073
|
618
618
|
localstack/services/lambda_/resource_providers/aws_lambda_version_plugin.py,sha256=Ha8q7enhV2fqkgJEaXZoAE2xOv5Z9jK8Pxc88BdqJ4c,564
|
619
|
-
localstack/services/lambda_/resource_providers/lambda_alias.py,sha256=
|
619
|
+
localstack/services/lambda_/resource_providers/lambda_alias.py,sha256=4nr_FmeHdtclguNRisJhVsGfxjyvcvmTQCFPXxVt6wE,5125
|
620
620
|
localstack/services/lambda_/resource_providers/lambda_alias.schema.json,sha256=idLItiY6BqDWM64NwPNs75Ztj-51FMKTnw2PAU9E0Fo,1909
|
621
621
|
localstack/services/lambda_/resource_providers/lambda_alias_plugin.py,sha256=Z_pbh3WhVhFlWtDIrIsde9Ok4OzuxCpHPa8TswaeZW8,525
|
622
622
|
localstack/services/logs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -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.
|
1283
|
-
localstack_core-4.4.1.
|
1284
|
-
localstack_core-4.4.1.
|
1285
|
-
localstack_core-4.4.1.
|
1286
|
-
localstack_core-4.4.1.
|
1287
|
-
localstack_core-4.4.1.
|
1288
|
-
localstack_core-4.4.1.
|
1289
|
-
localstack_core-4.4.1.
|
1290
|
-
localstack_core-4.4.1.
|
1291
|
-
localstack_core-4.4.1.
|
1282
|
+
localstack_core-4.4.1.dev3.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
|
1283
|
+
localstack_core-4.4.1.dev3.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
|
1284
|
+
localstack_core-4.4.1.dev3.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
|
1285
|
+
localstack_core-4.4.1.dev3.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
|
1286
|
+
localstack_core-4.4.1.dev3.dist-info/METADATA,sha256=2vFwAmi0ukVP7659PC1iwkkAF8NKIq2NpPJ_VQNsj08,5527
|
1287
|
+
localstack_core-4.4.1.dev3.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
|
1288
|
+
localstack_core-4.4.1.dev3.dist-info/entry_points.txt,sha256=K5M7il9Vwev64SlQiOaZVUhYpVNIE6IFHiWJ0znpbHQ,20491
|
1289
|
+
localstack_core-4.4.1.dev3.dist-info/plux.json,sha256=pv6tSnEdwURSQaVZQDUfYy5AOQbS0jaJiH_M5jf0zSI,20712
|
1290
|
+
localstack_core-4.4.1.dev3.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
|
1291
|
+
localstack_core-4.4.1.dev3.dist-info/RECORD,,
|
@@ -0,0 +1 @@
|
|
1
|
+
{"localstack.hooks.on_infra_start": ["conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "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", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "_patch_botocore_endpoint_in_memory=localstack.aws.client:_patch_botocore_endpoint_in_memory", "_patch_botocore_json_parser=localstack.aws.client:_patch_botocore_json_parser", "_patch_cbor2=localstack.aws.client:_patch_cbor2", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration"], "localstack.cloudformation.resource_providers": ["AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "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::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::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::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "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::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "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::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin"], "localstack.packages": ["elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "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", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package"], "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", "publish_metrics=localstack.utils.analytics.metrics: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"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "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.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.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"localstack.cloudformation.resource_providers": ["AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "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::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "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::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "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::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::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "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::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "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::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin"], "localstack.packages": ["vosk/community=localstack.services.transcribe.plugins:vosk_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package"], "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", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "_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", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "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", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints"], "localstack.hooks.on_infra_shutdown": ["stop_server=localstack.dns.plugins:stop_server", "publish_metrics=localstack.utils.analytics.metrics:publish_metrics", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "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.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "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.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"], "localstack.hooks.on_infra_ready": ["_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"]}
|
File without changes
|
{localstack_core-4.4.1.dev1.data → localstack_core-4.4.1.dev3.data}/scripts/localstack-supervisor
RENAMED
File without changes
|
File without changes
|
File without changes
|
{localstack_core-4.4.1.dev1.dist-info → localstack_core-4.4.1.dev3.dist-info}/entry_points.txt
RENAMED
File without changes
|
{localstack_core-4.4.1.dev1.dist-info → localstack_core-4.4.1.dev3.dist-info}/licenses/LICENSE.txt
RENAMED
File without changes
|
File without changes
|