localstack-core 4.5.1.dev47__py3-none-any.whl → 4.5.1.dev49__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/v2/entities.py +16 -11
- localstack/services/cloudformation/v2/provider.py +218 -45
- localstack/version.py +2 -2
- {localstack_core-4.5.1.dev47.dist-info → localstack_core-4.5.1.dev49.dist-info}/METADATA +1 -1
- {localstack_core-4.5.1.dev47.dist-info → localstack_core-4.5.1.dev49.dist-info}/RECORD +13 -13
- localstack_core-4.5.1.dev49.dist-info/plux.json +1 -0
- localstack_core-4.5.1.dev47.dist-info/plux.json +0 -1
- {localstack_core-4.5.1.dev47.data → localstack_core-4.5.1.dev49.data}/scripts/localstack +0 -0
- {localstack_core-4.5.1.dev47.data → localstack_core-4.5.1.dev49.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.5.1.dev47.data → localstack_core-4.5.1.dev49.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.5.1.dev47.dist-info → localstack_core-4.5.1.dev49.dist-info}/WHEEL +0 -0
- {localstack_core-4.5.1.dev47.dist-info → localstack_core-4.5.1.dev49.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.5.1.dev47.dist-info → localstack_core-4.5.1.dev49.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.5.1.dev47.dist-info → localstack_core-4.5.1.dev49.dist-info}/top_level.txt +0 -0
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
from datetime import datetime, timezone
|
|
2
|
-
from typing import Optional, TypedDict
|
|
2
|
+
from typing import NotRequired, Optional, TypedDict
|
|
3
3
|
|
|
4
4
|
from localstack.aws.api.cloudformation import (
|
|
5
5
|
ChangeSetStatus,
|
|
6
6
|
ChangeSetType,
|
|
7
7
|
CreateChangeSetInput,
|
|
8
|
+
CreateStackInput,
|
|
8
9
|
ExecutionStatus,
|
|
9
10
|
Output,
|
|
10
11
|
Parameter,
|
|
@@ -21,7 +22,6 @@ from localstack.aws.api.cloudformation import (
|
|
|
21
22
|
)
|
|
22
23
|
from localstack.services.cloudformation.engine.entities import (
|
|
23
24
|
StackIdentifier,
|
|
24
|
-
StackTemplate,
|
|
25
25
|
)
|
|
26
26
|
from localstack.services.cloudformation.engine.v2.change_set_model import (
|
|
27
27
|
NodeTemplate,
|
|
@@ -38,7 +38,6 @@ class Stack:
|
|
|
38
38
|
stack_name: str
|
|
39
39
|
parameters: list[Parameter]
|
|
40
40
|
change_set_id: str | None
|
|
41
|
-
change_set_name: str | None
|
|
42
41
|
status: StackStatus
|
|
43
42
|
status_reason: StackStatusReason | None
|
|
44
43
|
stack_id: str
|
|
@@ -56,10 +55,9 @@ class Stack:
|
|
|
56
55
|
self,
|
|
57
56
|
account_id: str,
|
|
58
57
|
region_name: str,
|
|
59
|
-
request_payload: CreateChangeSetInput,
|
|
60
|
-
template:
|
|
58
|
+
request_payload: CreateChangeSetInput | CreateStackInput,
|
|
59
|
+
template: dict | None = None,
|
|
61
60
|
template_body: str | None = None,
|
|
62
|
-
change_set_ids: list[str] | None = None,
|
|
63
61
|
):
|
|
64
62
|
self.account_id = account_id
|
|
65
63
|
self.region_name = region_name
|
|
@@ -67,12 +65,12 @@ class Stack:
|
|
|
67
65
|
self.template_body = template_body
|
|
68
66
|
self.status = StackStatus.CREATE_IN_PROGRESS
|
|
69
67
|
self.status_reason = None
|
|
70
|
-
self.change_set_ids =
|
|
68
|
+
self.change_set_ids = []
|
|
71
69
|
self.creation_time = datetime.now(tz=timezone.utc)
|
|
72
70
|
self.deletion_time = None
|
|
71
|
+
self.change_set_id = None
|
|
73
72
|
|
|
74
73
|
self.stack_name = request_payload["StackName"]
|
|
75
|
-
self.change_set_name = request_payload.get("ChangeSetName")
|
|
76
74
|
self.parameters = request_payload.get("Parameters", [])
|
|
77
75
|
self.stack_id = arns.cloudformation_stack_arn(
|
|
78
76
|
self.stack_name,
|
|
@@ -159,7 +157,6 @@ class Stack:
|
|
|
159
157
|
|
|
160
158
|
def describe_details(self) -> ApiStack:
|
|
161
159
|
result = {
|
|
162
|
-
"ChangeSetId": self.change_set_id,
|
|
163
160
|
"CreationTime": self.creation_time,
|
|
164
161
|
"DeletionTime": self.deletion_time,
|
|
165
162
|
"StackId": self.stack_id,
|
|
@@ -176,6 +173,9 @@ class Stack:
|
|
|
176
173
|
"RollbackConfiguration": {},
|
|
177
174
|
"Tags": [],
|
|
178
175
|
}
|
|
176
|
+
if change_set_id := self.change_set_id:
|
|
177
|
+
result["ChangeSetId"] = change_set_id
|
|
178
|
+
|
|
179
179
|
if self.resolved_outputs:
|
|
180
180
|
describe_outputs = []
|
|
181
181
|
for key, value in self.resolved_outputs.items():
|
|
@@ -191,6 +191,11 @@ class Stack:
|
|
|
191
191
|
return result
|
|
192
192
|
|
|
193
193
|
|
|
194
|
+
class ChangeSetRequestPayload(TypedDict, total=False):
|
|
195
|
+
ChangeSetName: str
|
|
196
|
+
ChangeSetType: NotRequired[ChangeSetType]
|
|
197
|
+
|
|
198
|
+
|
|
194
199
|
class ChangeSet:
|
|
195
200
|
change_set_name: str
|
|
196
201
|
change_set_id: str
|
|
@@ -203,8 +208,8 @@ class ChangeSet:
|
|
|
203
208
|
def __init__(
|
|
204
209
|
self,
|
|
205
210
|
stack: Stack,
|
|
206
|
-
request_payload:
|
|
207
|
-
template:
|
|
211
|
+
request_payload: ChangeSetRequestPayload,
|
|
212
|
+
template: dict | None = None,
|
|
208
213
|
):
|
|
209
214
|
self.stack = stack
|
|
210
215
|
self.template = template
|
|
@@ -13,6 +13,8 @@ from localstack.aws.api.cloudformation import (
|
|
|
13
13
|
ClientRequestToken,
|
|
14
14
|
CreateChangeSetInput,
|
|
15
15
|
CreateChangeSetOutput,
|
|
16
|
+
CreateStackInput,
|
|
17
|
+
CreateStackOutput,
|
|
16
18
|
DeletionMode,
|
|
17
19
|
DescribeChangeSetOutput,
|
|
18
20
|
DescribeStackEventsOutput,
|
|
@@ -34,11 +36,14 @@ from localstack.aws.api.cloudformation import (
|
|
|
34
36
|
StackName,
|
|
35
37
|
StackNameOrId,
|
|
36
38
|
StackStatus,
|
|
39
|
+
UpdateStackInput,
|
|
40
|
+
UpdateStackOutput,
|
|
37
41
|
)
|
|
38
42
|
from localstack.services.cloudformation import api_utils
|
|
39
43
|
from localstack.services.cloudformation.engine import template_preparer
|
|
40
44
|
from localstack.services.cloudformation.engine.v2.change_set_model import (
|
|
41
45
|
ChangeSetModel,
|
|
46
|
+
ChangeType,
|
|
42
47
|
NodeTemplate,
|
|
43
48
|
)
|
|
44
49
|
from localstack.services.cloudformation.engine.v2.change_set_model_describer import (
|
|
@@ -74,7 +79,12 @@ def is_changeset_arn(change_set_name_or_id: str) -> bool:
|
|
|
74
79
|
return ARN_CHANGESET_REGEX.match(change_set_name_or_id) is not None
|
|
75
80
|
|
|
76
81
|
|
|
77
|
-
|
|
82
|
+
class StackNotFoundError(ValidationError):
|
|
83
|
+
def __init__(self, stack_name: str):
|
|
84
|
+
super().__init__(f"Stack with id {stack_name} does not exist")
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def find_stack_v2(state: CloudFormationStore, stack_name: str | None) -> Stack | None:
|
|
78
88
|
if stack_name:
|
|
79
89
|
if is_stack_arn(stack_name):
|
|
80
90
|
return state.stacks_v2[stack_name]
|
|
@@ -84,7 +94,7 @@ def find_stack_v2(state: CloudFormationStore, stack_name: str | None) -> Stack:
|
|
|
84
94
|
if stack.stack_name == stack_name and stack.status != StackStatus.DELETE_COMPLETE:
|
|
85
95
|
stack_candidates.append(stack)
|
|
86
96
|
if len(stack_candidates) == 0:
|
|
87
|
-
|
|
97
|
+
return None
|
|
88
98
|
elif len(stack_candidates) > 1:
|
|
89
99
|
raise RuntimeError("Programing error, duplicate stacks found")
|
|
90
100
|
else:
|
|
@@ -96,37 +106,21 @@ def find_stack_v2(state: CloudFormationStore, stack_name: str | None) -> Stack:
|
|
|
96
106
|
def find_change_set_v2(
|
|
97
107
|
state: CloudFormationStore, change_set_name: str, stack_name: str | None = None
|
|
98
108
|
) -> ChangeSet | None:
|
|
99
|
-
change_set: ChangeSet | None = None
|
|
100
109
|
if is_changeset_arn(change_set_name):
|
|
101
|
-
|
|
110
|
+
return state.change_sets[change_set_name]
|
|
102
111
|
else:
|
|
103
112
|
if stack_name is not None:
|
|
104
|
-
stack
|
|
105
|
-
if is_stack_arn(stack_name):
|
|
106
|
-
stack = state.stacks_v2[stack_name]
|
|
107
|
-
else:
|
|
108
|
-
for stack_candidate in state.stacks_v2.values():
|
|
109
|
-
# TODO: check for active stacks
|
|
110
|
-
if (
|
|
111
|
-
stack_candidate.stack_name == stack_name
|
|
112
|
-
and stack_candidate.status != StackStatus.DELETE_COMPLETE
|
|
113
|
-
):
|
|
114
|
-
stack = stack_candidate
|
|
115
|
-
break
|
|
116
|
-
|
|
113
|
+
stack = find_stack_v2(state, stack_name)
|
|
117
114
|
if not stack:
|
|
118
|
-
raise
|
|
115
|
+
raise StackNotFoundError(stack_name)
|
|
119
116
|
|
|
120
117
|
for change_set_id in stack.change_set_ids:
|
|
121
118
|
change_set_candidate = state.change_sets[change_set_id]
|
|
122
119
|
if change_set_candidate.change_set_name == change_set_name:
|
|
123
|
-
|
|
124
|
-
break
|
|
120
|
+
return change_set_candidate
|
|
125
121
|
else:
|
|
126
122
|
raise NotImplementedError
|
|
127
123
|
|
|
128
|
-
return change_set
|
|
129
|
-
|
|
130
124
|
|
|
131
125
|
class CloudformationProviderV2(CloudformationProvider):
|
|
132
126
|
@staticmethod
|
|
@@ -270,8 +264,6 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
270
264
|
)
|
|
271
265
|
raise ValidationError(msg)
|
|
272
266
|
|
|
273
|
-
# TDOO: transformations
|
|
274
|
-
|
|
275
267
|
# TODO: reconsider the way parameters are modelled in the update graph process.
|
|
276
268
|
# The options might be reduce to using the current style, or passing the extra information
|
|
277
269
|
# as a metadata object. The choice should be made considering when the extra information
|
|
@@ -303,7 +295,7 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
303
295
|
|
|
304
296
|
change_set.set_change_set_status(ChangeSetStatus.CREATE_COMPLETE)
|
|
305
297
|
stack.change_set_id = change_set.change_set_id
|
|
306
|
-
stack.
|
|
298
|
+
stack.change_set_ids.append(change_set.change_set_id)
|
|
307
299
|
state.change_sets[change_set.change_set_id] = change_set
|
|
308
300
|
|
|
309
301
|
return CreateChangeSetOutput(StackId=stack.stack_id, Id=change_set.change_set_id)
|
|
@@ -433,6 +425,94 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
433
425
|
)
|
|
434
426
|
return result
|
|
435
427
|
|
|
428
|
+
@handler("CreateStack", expand=False)
|
|
429
|
+
def create_stack(self, context: RequestContext, request: CreateStackInput) -> CreateStackOutput:
|
|
430
|
+
try:
|
|
431
|
+
stack_name = request["StackName"]
|
|
432
|
+
except KeyError:
|
|
433
|
+
# TODO: proper exception
|
|
434
|
+
raise ValidationError("StackName must be specified")
|
|
435
|
+
|
|
436
|
+
state = get_cloudformation_store(context.account_id, context.region)
|
|
437
|
+
# TODO: copied from create_change_set, consider unifying
|
|
438
|
+
template_body = request.get("TemplateBody")
|
|
439
|
+
# s3 or secretsmanager url
|
|
440
|
+
template_url = request.get("TemplateURL")
|
|
441
|
+
|
|
442
|
+
# validate and resolve template
|
|
443
|
+
if template_body and template_url:
|
|
444
|
+
raise ValidationError(
|
|
445
|
+
"Specify exactly one of 'TemplateBody' or 'TemplateUrl'"
|
|
446
|
+
) # TODO: check proper message
|
|
447
|
+
|
|
448
|
+
if not template_body and not template_url:
|
|
449
|
+
raise ValidationError(
|
|
450
|
+
"Specify exactly one of 'TemplateBody' or 'TemplateUrl'"
|
|
451
|
+
) # TODO: check proper message
|
|
452
|
+
|
|
453
|
+
template_body = api_utils.extract_template_body(request)
|
|
454
|
+
structured_template = template_preparer.parse_template(template_body)
|
|
455
|
+
|
|
456
|
+
stack = Stack(
|
|
457
|
+
account_id=context.account_id,
|
|
458
|
+
region_name=context.region,
|
|
459
|
+
request_payload=request,
|
|
460
|
+
template=structured_template,
|
|
461
|
+
template_body=template_body,
|
|
462
|
+
)
|
|
463
|
+
# TODO: what is the correct initial status?
|
|
464
|
+
state.stacks_v2[stack.stack_id] = stack
|
|
465
|
+
|
|
466
|
+
# TODO: reconsider the way parameters are modelled in the update graph process.
|
|
467
|
+
# The options might be reduce to using the current style, or passing the extra information
|
|
468
|
+
# as a metadata object. The choice should be made considering when the extra information
|
|
469
|
+
# is needed for the update graph building, or only looked up in downstream tasks (metadata).
|
|
470
|
+
request_parameters = request.get("Parameters", list())
|
|
471
|
+
# TODO: handle parameter defaults and resolution
|
|
472
|
+
after_parameters: dict[str, Any] = {
|
|
473
|
+
parameter["ParameterKey"]: parameter["ParameterValue"]
|
|
474
|
+
for parameter in request_parameters
|
|
475
|
+
}
|
|
476
|
+
after_template = structured_template
|
|
477
|
+
|
|
478
|
+
# Create internal change set to execute
|
|
479
|
+
change_set = ChangeSet(
|
|
480
|
+
stack,
|
|
481
|
+
{"ChangeSetName": f"cs-{stack_name}-create", "ChangeSetType": ChangeSetType.CREATE},
|
|
482
|
+
template=after_template,
|
|
483
|
+
)
|
|
484
|
+
self._setup_change_set_model(
|
|
485
|
+
change_set=change_set,
|
|
486
|
+
before_template=None,
|
|
487
|
+
after_template=after_template,
|
|
488
|
+
before_parameters=None,
|
|
489
|
+
after_parameters=after_parameters,
|
|
490
|
+
)
|
|
491
|
+
|
|
492
|
+
# deployment process
|
|
493
|
+
stack.set_stack_status(StackStatus.CREATE_IN_PROGRESS)
|
|
494
|
+
change_set_executor = ChangeSetModelExecutor(change_set)
|
|
495
|
+
|
|
496
|
+
def _run(*args):
|
|
497
|
+
try:
|
|
498
|
+
result = change_set_executor.execute()
|
|
499
|
+
stack.set_stack_status(StackStatus.CREATE_COMPLETE)
|
|
500
|
+
stack.resolved_resources = result.resources
|
|
501
|
+
stack.resolved_parameters = result.parameters
|
|
502
|
+
stack.resolved_outputs = result.outputs
|
|
503
|
+
# if the deployment succeeded, update the stack's template representation to that
|
|
504
|
+
# which was just deployed
|
|
505
|
+
stack.template = change_set.template
|
|
506
|
+
except Exception as e:
|
|
507
|
+
LOG.error(
|
|
508
|
+
"Create Stack set failed: %s", e, exc_info=LOG.isEnabledFor(logging.WARNING)
|
|
509
|
+
)
|
|
510
|
+
stack.set_stack_status(StackStatus.CREATE_FAILED)
|
|
511
|
+
|
|
512
|
+
start_worker_thread(_run)
|
|
513
|
+
|
|
514
|
+
return CreateStackOutput(StackId=stack.stack_id)
|
|
515
|
+
|
|
436
516
|
@handler("DescribeStacks")
|
|
437
517
|
def describe_stacks(
|
|
438
518
|
self,
|
|
@@ -443,6 +523,8 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
443
523
|
) -> DescribeStacksOutput:
|
|
444
524
|
state = get_cloudformation_store(context.account_id, context.region)
|
|
445
525
|
stack = find_stack_v2(state, stack_name)
|
|
526
|
+
if not stack:
|
|
527
|
+
raise StackNotFoundError(stack_name)
|
|
446
528
|
return DescribeStacksOutput(Stacks=[stack.describe_details()])
|
|
447
529
|
|
|
448
530
|
@handler("DescribeStackResources")
|
|
@@ -458,6 +540,8 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
458
540
|
raise ValidationError("Cannot specify both StackName and PhysicalResourceId")
|
|
459
541
|
state = get_cloudformation_store(context.account_id, context.region)
|
|
460
542
|
stack = find_stack_v2(state, stack_name)
|
|
543
|
+
if not stack:
|
|
544
|
+
raise StackNotFoundError(stack_name)
|
|
461
545
|
# TODO: filter stack by PhysicalResourceId!
|
|
462
546
|
statuses = []
|
|
463
547
|
for resource_id, resource_status in stack.resource_states.items():
|
|
@@ -477,8 +561,116 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
477
561
|
) -> DescribeStackEventsOutput:
|
|
478
562
|
state = get_cloudformation_store(context.account_id, context.region)
|
|
479
563
|
stack = find_stack_v2(state, stack_name)
|
|
564
|
+
if not stack:
|
|
565
|
+
raise StackNotFoundError(stack_name)
|
|
480
566
|
return DescribeStackEventsOutput(StackEvents=stack.events)
|
|
481
567
|
|
|
568
|
+
@handler("UpdateStack", expand=False)
|
|
569
|
+
def update_stack(
|
|
570
|
+
self,
|
|
571
|
+
context: RequestContext,
|
|
572
|
+
request: UpdateStackInput,
|
|
573
|
+
) -> UpdateStackOutput:
|
|
574
|
+
try:
|
|
575
|
+
stack_name = request["StackName"]
|
|
576
|
+
except KeyError:
|
|
577
|
+
# TODO: proper exception
|
|
578
|
+
raise ValidationError("StackName must be specified")
|
|
579
|
+
state = get_cloudformation_store(context.account_id, context.region)
|
|
580
|
+
template_body = request.get("TemplateBody")
|
|
581
|
+
# s3 or secretsmanager url
|
|
582
|
+
template_url = request.get("TemplateURL")
|
|
583
|
+
|
|
584
|
+
# validate and resolve template
|
|
585
|
+
if template_body and template_url:
|
|
586
|
+
raise ValidationError(
|
|
587
|
+
"Specify exactly one of 'TemplateBody' or 'TemplateUrl'"
|
|
588
|
+
) # TODO: check proper message
|
|
589
|
+
|
|
590
|
+
if not template_body and not template_url:
|
|
591
|
+
raise ValidationError(
|
|
592
|
+
"Specify exactly one of 'TemplateBody' or 'TemplateUrl'"
|
|
593
|
+
) # TODO: check proper message
|
|
594
|
+
|
|
595
|
+
template_body = api_utils.extract_template_body(request)
|
|
596
|
+
structured_template = template_preparer.parse_template(template_body)
|
|
597
|
+
|
|
598
|
+
# this is intentionally not in a util yet. Let's first see how the different operations deal with these before generalizing
|
|
599
|
+
# handle ARN stack_name here (not valid for initial CREATE, since stack doesn't exist yet)
|
|
600
|
+
stack: Stack
|
|
601
|
+
if is_stack_arn(stack_name):
|
|
602
|
+
stack = state.stacks_v2.get(stack_name)
|
|
603
|
+
if not stack:
|
|
604
|
+
raise ValidationError(f"Stack '{stack_name}' does not exist.")
|
|
605
|
+
|
|
606
|
+
else:
|
|
607
|
+
# stack name specified, so fetch the stack by name
|
|
608
|
+
stack_candidates: list[Stack] = [
|
|
609
|
+
s for stack_arn, s in state.stacks_v2.items() if s.stack_name == stack_name
|
|
610
|
+
]
|
|
611
|
+
active_stack_candidates = [
|
|
612
|
+
s for s in stack_candidates if self._stack_status_is_active(s.status)
|
|
613
|
+
]
|
|
614
|
+
|
|
615
|
+
if not active_stack_candidates:
|
|
616
|
+
raise ValidationError(f"Stack '{stack_name}' does not exist.")
|
|
617
|
+
elif len(active_stack_candidates) > 1:
|
|
618
|
+
raise RuntimeError("Multiple stacks matched, update matching logic")
|
|
619
|
+
stack = active_stack_candidates[0]
|
|
620
|
+
|
|
621
|
+
# TODO: proper status modeling
|
|
622
|
+
before_parameters = stack.resolved_parameters
|
|
623
|
+
# TODO: reconsider the way parameters are modelled in the update graph process.
|
|
624
|
+
# The options might be reduce to using the current style, or passing the extra information
|
|
625
|
+
# as a metadata object. The choice should be made considering when the extra information
|
|
626
|
+
# is needed for the update graph building, or only looked up in downstream tasks (metadata).
|
|
627
|
+
request_parameters = request.get("Parameters", list())
|
|
628
|
+
# TODO: handle parameter defaults and resolution
|
|
629
|
+
after_parameters: dict[str, Any] = {
|
|
630
|
+
parameter["ParameterKey"]: parameter["ParameterValue"]
|
|
631
|
+
for parameter in request_parameters
|
|
632
|
+
}
|
|
633
|
+
before_template = stack.template
|
|
634
|
+
after_template = structured_template
|
|
635
|
+
|
|
636
|
+
change_set = ChangeSet(
|
|
637
|
+
stack,
|
|
638
|
+
{"ChangeSetName": f"cs-{stack_name}-create", "ChangeSetType": ChangeSetType.CREATE},
|
|
639
|
+
template=after_template,
|
|
640
|
+
)
|
|
641
|
+
self._setup_change_set_model(
|
|
642
|
+
change_set=change_set,
|
|
643
|
+
before_template=before_template,
|
|
644
|
+
after_template=after_template,
|
|
645
|
+
before_parameters=before_parameters,
|
|
646
|
+
after_parameters=after_parameters,
|
|
647
|
+
)
|
|
648
|
+
|
|
649
|
+
if change_set.update_model.change_type == ChangeType.UNCHANGED:
|
|
650
|
+
raise ValidationError("No updates are to be performed.")
|
|
651
|
+
|
|
652
|
+
stack.set_stack_status(StackStatus.UPDATE_IN_PROGRESS)
|
|
653
|
+
change_set_executor = ChangeSetModelExecutor(change_set)
|
|
654
|
+
|
|
655
|
+
def _run(*args):
|
|
656
|
+
try:
|
|
657
|
+
result = change_set_executor.execute()
|
|
658
|
+
stack.set_stack_status(StackStatus.UPDATE_COMPLETE)
|
|
659
|
+
stack.resolved_resources = result.resources
|
|
660
|
+
stack.resolved_parameters = result.parameters
|
|
661
|
+
stack.resolved_outputs = result.outputs
|
|
662
|
+
# if the deployment succeeded, update the stack's template representation to that
|
|
663
|
+
# which was just deployed
|
|
664
|
+
stack.template = change_set.template
|
|
665
|
+
except Exception as e:
|
|
666
|
+
LOG.error("Update Stack failed: %s", e, exc_info=LOG.isEnabledFor(logging.WARNING))
|
|
667
|
+
stack.set_stack_status(StackStatus.UPDATE_FAILED)
|
|
668
|
+
|
|
669
|
+
start_worker_thread(_run)
|
|
670
|
+
|
|
671
|
+
# TODO: stack id
|
|
672
|
+
return UpdateStackOutput(StackId=stack.stack_id)
|
|
673
|
+
|
|
482
674
|
@handler("DeleteStack")
|
|
483
675
|
def delete_stack(
|
|
484
676
|
self,
|
|
@@ -491,26 +683,7 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
491
683
|
**kwargs,
|
|
492
684
|
) -> None:
|
|
493
685
|
state = get_cloudformation_store(context.account_id, context.region)
|
|
494
|
-
|
|
495
|
-
if is_stack_arn(stack_name):
|
|
496
|
-
stack = state.stacks_v2[stack_name]
|
|
497
|
-
else:
|
|
498
|
-
stack_candidates = []
|
|
499
|
-
for stack in state.stacks_v2.values():
|
|
500
|
-
if (
|
|
501
|
-
stack.stack_name == stack_name
|
|
502
|
-
and stack.status != StackStatus.DELETE_COMPLETE
|
|
503
|
-
):
|
|
504
|
-
stack_candidates.append(stack)
|
|
505
|
-
if len(stack_candidates) == 0:
|
|
506
|
-
raise ValidationError(f"No stack with name {stack_name} found")
|
|
507
|
-
elif len(stack_candidates) > 1:
|
|
508
|
-
raise RuntimeError("Programing error, duplicate stacks found")
|
|
509
|
-
else:
|
|
510
|
-
stack = stack_candidates[0]
|
|
511
|
-
else:
|
|
512
|
-
raise NotImplementedError
|
|
513
|
-
|
|
686
|
+
stack = find_stack_v2(state, stack_name)
|
|
514
687
|
if not stack:
|
|
515
688
|
# aws will silently ignore invalid stack names - we should do the same
|
|
516
689
|
return
|
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.5.1.
|
|
21
|
-
__version_tuple__ = version_tuple = (4, 5, 1, '
|
|
20
|
+
__version__ = version = '4.5.1.dev49'
|
|
21
|
+
__version_tuple__ = version_tuple = (4, 5, 1, 'dev49')
|
|
@@ -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=44kFJttwngznPylO4zpPHXzswEJ8A5KSOcDvusw-fzU,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
|
|
@@ -333,8 +333,8 @@ localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcon
|
|
|
333
333
|
localstack/services/cloudformation/scaffolding/__main__.py,sha256=zjedOdqvnfN99WzQ43gxtGZxLDitSnbFGA-zpWbyMQ0,30960
|
|
334
334
|
localstack/services/cloudformation/scaffolding/propgen.py,sha256=9YsSCkDegcU_Yp8Sfw8eNV26N5ibOlLC6Hg6lxPeBBM,7949
|
|
335
335
|
localstack/services/cloudformation/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
336
|
-
localstack/services/cloudformation/v2/entities.py,sha256=
|
|
337
|
-
localstack/services/cloudformation/v2/provider.py,sha256=
|
|
336
|
+
localstack/services/cloudformation/v2/entities.py,sha256=hu6_1g2spNoYUo_CEjg4gfeUIlxLJ0UL4Rqfe2aOrFE,7928
|
|
337
|
+
localstack/services/cloudformation/v2/provider.py,sha256=Hqss2pm_v3th_6b7JoIKofkhCPAtCQ3pPLu3ezCmHtM,30618
|
|
338
338
|
localstack/services/cloudformation/v2/utils.py,sha256=xy4Lcp4X8XGJ0OKfnsE7pnfMcFrtIH0Chw35qwjhZuw,148
|
|
339
339
|
localstack/services/cloudwatch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
340
340
|
localstack/services/cloudwatch/alarm_scheduler.py,sha256=XFllg0gI_WNV7cNxOcgXifzmbNA07OPpuEUuf37keP4,15663
|
|
@@ -1284,13 +1284,13 @@ localstack/utils/server/tcp_proxy.py,sha256=rR6d5jR0ozDvIlpHiqW0cfyY9a2fRGdOzyA8
|
|
|
1284
1284
|
localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1285
1285
|
localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
|
|
1286
1286
|
localstack/utils/xray/traceid.py,sha256=SQSsMV2rhbTNK6ceIoozZYuGU7Fg687EXcgqxoDl1Fw,1106
|
|
1287
|
-
localstack_core-4.5.1.
|
|
1288
|
-
localstack_core-4.5.1.
|
|
1289
|
-
localstack_core-4.5.1.
|
|
1290
|
-
localstack_core-4.5.1.
|
|
1291
|
-
localstack_core-4.5.1.
|
|
1292
|
-
localstack_core-4.5.1.
|
|
1293
|
-
localstack_core-4.5.1.
|
|
1294
|
-
localstack_core-4.5.1.
|
|
1295
|
-
localstack_core-4.5.1.
|
|
1296
|
-
localstack_core-4.5.1.
|
|
1287
|
+
localstack_core-4.5.1.dev49.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
|
|
1288
|
+
localstack_core-4.5.1.dev49.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
|
|
1289
|
+
localstack_core-4.5.1.dev49.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
|
|
1290
|
+
localstack_core-4.5.1.dev49.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
|
|
1291
|
+
localstack_core-4.5.1.dev49.dist-info/METADATA,sha256=HRlicB9zcl-IlFAL3CQEeyqNvWDp1pO5XEX1yU4IjjI,5539
|
|
1292
|
+
localstack_core-4.5.1.dev49.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
1293
|
+
localstack_core-4.5.1.dev49.dist-info/entry_points.txt,sha256=tsZ2TeV3-omCfAUEXmTWXu_D40b_17a9FDAEpbeaoNw,20571
|
|
1294
|
+
localstack_core-4.5.1.dev49.dist-info/plux.json,sha256=ZH0u2m0UefgSNClR_QdWN9aInLK9E-ZdyReTdu01DdM,20793
|
|
1295
|
+
localstack_core-4.5.1.dev49.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
|
|
1296
|
+
localstack_core-4.5.1.dev49.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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.cloudformation.resource_providers": ["AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "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::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "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::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "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::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "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::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin"], "localstack.packages": ["dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_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", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "vosk/community=localstack.services.transcribe.plugins:vosk_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"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.hooks.on_infra_start": ["apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "eager_load_services=localstack.services.plugins:eager_load_services", "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", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_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", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start"], "localstack.hooks.on_infra_shutdown": ["remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "stop_server=localstack.dns.plugins:stop_server", "publish_metrics=localstack.utils.analytics.metrics.publisher: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", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown"], "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.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "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"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"localstack.cloudformation.resource_providers": ["AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "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::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "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::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "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::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "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"], "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.packages": ["elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "vosk/community=localstack.services.transcribe.plugins:vosk_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", "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", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.hooks.on_infra_start": ["setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "_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", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "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", "_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", "eager_load_services=localstack.services.plugins:eager_load_services"], "localstack.hooks.on_infra_shutdown": ["stop_server=localstack.dns.plugins:stop_server", "run_on_after_service_shutdown_handlers=localstack.runtime.shutdown:run_on_after_service_shutdown_handlers", "run_shutdown_handlers=localstack.runtime.shutdown:run_shutdown_handlers", "shutdown_services=localstack.runtime.shutdown:shutdown_services", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "publish_metrics=localstack.utils.analytics.metrics.publisher:publish_metrics"], "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.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.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"]}
|
|
File without changes
|
{localstack_core-4.5.1.dev47.data → localstack_core-4.5.1.dev49.data}/scripts/localstack-supervisor
RENAMED
|
File without changes
|
{localstack_core-4.5.1.dev47.data → localstack_core-4.5.1.dev49.data}/scripts/localstack.bat
RENAMED
|
File without changes
|
|
File without changes
|
{localstack_core-4.5.1.dev47.dist-info → localstack_core-4.5.1.dev49.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{localstack_core-4.5.1.dev47.dist-info → localstack_core-4.5.1.dev49.dist-info}/licenses/LICENSE.txt
RENAMED
|
File without changes
|
{localstack_core-4.5.1.dev47.dist-info → localstack_core-4.5.1.dev49.dist-info}/top_level.txt
RENAMED
|
File without changes
|