localstack-core 4.3.1.dev73__py3-none-any.whl → 4.3.1.dev75__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_describer.py +17 -2
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +36 -42
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +52 -23
- localstack/services/cloudformation/v2/entities.py +1 -0
- localstack/services/iam/provider.py +63 -6
- localstack/version.py +2 -2
- {localstack_core-4.3.1.dev73.dist-info → localstack_core-4.3.1.dev75.dist-info}/METADATA +1 -1
- {localstack_core-4.3.1.dev73.dist-info → localstack_core-4.3.1.dev75.dist-info}/RECORD +16 -16
- localstack_core-4.3.1.dev75.dist-info/plux.json +1 -0
- localstack_core-4.3.1.dev73.dist-info/plux.json +0 -1
- {localstack_core-4.3.1.dev73.data → localstack_core-4.3.1.dev75.data}/scripts/localstack +0 -0
- {localstack_core-4.3.1.dev73.data → localstack_core-4.3.1.dev75.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.3.1.dev73.data → localstack_core-4.3.1.dev75.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.3.1.dev73.dist-info → localstack_core-4.3.1.dev75.dist-info}/WHEEL +0 -0
- {localstack_core-4.3.1.dev73.dist-info → localstack_core-4.3.1.dev75.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.3.1.dev73.dist-info → localstack_core-4.3.1.dev75.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.3.1.dev73.dist-info → localstack_core-4.3.1.dev75.dist-info}/top_level.txt +0 -0
@@ -24,8 +24,15 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
24
24
|
_include_property_values: Final[bool]
|
25
25
|
_changes: Final[cfn_api.Changes]
|
26
26
|
|
27
|
-
def __init__(
|
28
|
-
|
27
|
+
def __init__(
|
28
|
+
self,
|
29
|
+
node_template: NodeTemplate,
|
30
|
+
before_resolved_resources: dict,
|
31
|
+
include_property_values: bool,
|
32
|
+
):
|
33
|
+
super().__init__(
|
34
|
+
node_template=node_template, before_resolved_resources=before_resolved_resources
|
35
|
+
)
|
29
36
|
self._include_property_values = include_property_values
|
30
37
|
self._changes = list()
|
31
38
|
|
@@ -79,6 +86,7 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
79
86
|
self,
|
80
87
|
logical_id: str,
|
81
88
|
type_: str,
|
89
|
+
physical_id: Optional[str],
|
82
90
|
before_properties: Optional[PreprocProperties],
|
83
91
|
after_properties: Optional[PreprocProperties],
|
84
92
|
) -> None:
|
@@ -92,6 +100,8 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
92
100
|
resource_change["Action"] = action
|
93
101
|
resource_change["LogicalResourceId"] = logical_id
|
94
102
|
resource_change["ResourceType"] = type_
|
103
|
+
if physical_id:
|
104
|
+
resource_change["PhysicalResourceId"] = physical_id
|
95
105
|
if self._include_property_values and before_properties is not None:
|
96
106
|
before_context_properties = {PropertiesKey: before_properties.properties}
|
97
107
|
before_context_properties_json_str = json.dumps(before_context_properties)
|
@@ -116,6 +126,7 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
116
126
|
# Register a Modified if changed.
|
117
127
|
self._register_resource_change(
|
118
128
|
logical_id=name,
|
129
|
+
physical_id=before.physical_resource_id,
|
119
130
|
type_=before.resource_type,
|
120
131
|
before_properties=before.properties,
|
121
132
|
after_properties=after.properties,
|
@@ -126,6 +137,7 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
126
137
|
# Register a Removed for the previous type.
|
127
138
|
self._register_resource_change(
|
128
139
|
logical_id=name,
|
140
|
+
physical_id=before.physical_resource_id,
|
129
141
|
type_=before.resource_type,
|
130
142
|
before_properties=before.properties,
|
131
143
|
after_properties=None,
|
@@ -133,6 +145,7 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
133
145
|
# Register a Create for the next type.
|
134
146
|
self._register_resource_change(
|
135
147
|
logical_id=name,
|
148
|
+
physical_id=None,
|
136
149
|
type_=after.resource_type,
|
137
150
|
before_properties=None,
|
138
151
|
after_properties=after.properties,
|
@@ -141,6 +154,7 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
141
154
|
# Case: removal
|
142
155
|
self._register_resource_change(
|
143
156
|
logical_id=name,
|
157
|
+
physical_id=before.physical_resource_id,
|
144
158
|
type_=before.resource_type,
|
145
159
|
before_properties=before.properties,
|
146
160
|
after_properties=None,
|
@@ -149,6 +163,7 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
149
163
|
# Case: addition
|
150
164
|
self._register_resource_change(
|
151
165
|
logical_id=name,
|
166
|
+
physical_id=None,
|
152
167
|
type_=after.resource_type,
|
153
168
|
before_properties=None,
|
154
169
|
after_properties=after.properties,
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import copy
|
2
2
|
import logging
|
3
3
|
import uuid
|
4
|
-
from typing import
|
4
|
+
from typing import Final, Optional
|
5
5
|
|
6
6
|
from localstack.aws.api.cloudformation import ChangeAction, StackStatus
|
7
7
|
from localstack.constants import INTERNAL_AWS_SECRET_ACCESS_KEY
|
@@ -28,14 +28,17 @@ LOG = logging.getLogger(__name__)
|
|
28
28
|
|
29
29
|
|
30
30
|
class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
31
|
-
|
32
|
-
# TODO: add typing.
|
31
|
+
_change_set: Final[ChangeSet]
|
32
|
+
# TODO: add typing for resolved resources and parameters.
|
33
33
|
resources: Final[dict]
|
34
34
|
resolved_parameters: Final[dict]
|
35
35
|
|
36
36
|
def __init__(self, change_set: ChangeSet):
|
37
|
-
super().__init__(
|
38
|
-
|
37
|
+
super().__init__(
|
38
|
+
node_template=change_set.update_graph,
|
39
|
+
before_resolved_resources=change_set.stack.resolved_resources,
|
40
|
+
)
|
41
|
+
self._change_set = change_set
|
39
42
|
self.resources = dict()
|
40
43
|
self.resolved_parameters = dict()
|
41
44
|
|
@@ -49,44 +52,35 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
49
52
|
self.resolved_parameters[node_parameter.name] = delta.after
|
50
53
|
return delta
|
51
54
|
|
55
|
+
def _after_resource_physical_id(self, resource_logical_id: str) -> Optional[str]:
|
56
|
+
after_resolved_resources = self.resources
|
57
|
+
return self._resource_physical_resource_id_from(
|
58
|
+
logical_resource_id=resource_logical_id, resolved_resources=after_resolved_resources
|
59
|
+
)
|
60
|
+
|
52
61
|
def visit_node_resource(
|
53
62
|
self, node_resource: NodeResource
|
54
63
|
) -> PreprocEntityDelta[PreprocResource, PreprocResource]:
|
64
|
+
"""
|
65
|
+
Overrides the default preprocessing for NodeResource objects by annotating the
|
66
|
+
`after` delta with the physical resource ID, if side effects resulted in an update.
|
67
|
+
"""
|
55
68
|
delta = super().visit_node_resource(node_resource=node_resource)
|
56
69
|
self._execute_on_resource_change(
|
57
70
|
name=node_resource.name, before=delta.before, after=delta.after
|
58
71
|
)
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
def _get_physical_id_of_resolved_resource(resolved_resource: dict) -> str:
|
68
|
-
physical_resource_id = resolved_resource.get("PhysicalResourceId")
|
69
|
-
if not isinstance(physical_resource_id, str):
|
72
|
+
after_resource = delta.after
|
73
|
+
if after_resource is not None and delta.before != delta.after:
|
74
|
+
after_logical_id = after_resource.logical_id
|
75
|
+
after_physical_id: Optional[str] = self._after_resource_physical_id(
|
76
|
+
resource_logical_id=after_logical_id
|
77
|
+
)
|
78
|
+
if after_physical_id is None:
|
70
79
|
raise RuntimeError(
|
71
|
-
f"No
|
80
|
+
f"No PhysicalResourceId was found for resource '{after_physical_id}' post-update."
|
72
81
|
)
|
73
|
-
|
74
|
-
|
75
|
-
before_resolved_resources = self.change_set.stack.resolved_resources
|
76
|
-
after_resolved_resources = self.resources
|
77
|
-
|
78
|
-
before_physical_id = None
|
79
|
-
if logical_id in before_resolved_resources:
|
80
|
-
before_resolved_resource = before_resolved_resources[logical_id]
|
81
|
-
before_physical_id = _get_physical_id_of_resolved_resource(before_resolved_resource)
|
82
|
-
after_physical_id = None
|
83
|
-
if logical_id in after_resolved_resources:
|
84
|
-
after_resolved_resource = after_resolved_resources[logical_id]
|
85
|
-
after_physical_id = _get_physical_id_of_resolved_resource(after_resolved_resource)
|
86
|
-
|
87
|
-
if before_physical_id is None and after_physical_id is None:
|
88
|
-
raise RuntimeError(f"No resource '{logical_id}' found during ChangeSet execution")
|
89
|
-
return PreprocEntityDelta(before=before_physical_id, after=after_physical_id)
|
82
|
+
after_resource.physical_resource_id = after_physical_id
|
83
|
+
return delta
|
90
84
|
|
91
85
|
def _execute_on_resource_change(
|
92
86
|
self, name: str, before: Optional[PreprocResource], after: Optional[PreprocResource]
|
@@ -156,7 +150,7 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
156
150
|
def _merge_before_properties(
|
157
151
|
self, name: str, preproc_resource: PreprocResource
|
158
152
|
) -> PreprocProperties:
|
159
|
-
if previous_resource_properties := self.
|
153
|
+
if previous_resource_properties := self._change_set.stack.resolved_resources.get(
|
160
154
|
name, {}
|
161
155
|
).get("Properties"):
|
162
156
|
return PreprocProperties(properties=previous_resource_properties)
|
@@ -174,7 +168,7 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
174
168
|
) -> None:
|
175
169
|
LOG.debug("Executing resource action: %s for resource '%s'", action, logical_resource_id)
|
176
170
|
resource_provider_executor = ResourceProviderExecutor(
|
177
|
-
stack_name=self.
|
171
|
+
stack_name=self._change_set.stack.stack_name, stack_id=self._change_set.stack.stack_id
|
178
172
|
)
|
179
173
|
payload = self.create_resource_provider_payload(
|
180
174
|
action=action,
|
@@ -199,7 +193,7 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
199
193
|
reason,
|
200
194
|
exc_info=LOG.isEnabledFor(logging.DEBUG),
|
201
195
|
)
|
202
|
-
stack = self.
|
196
|
+
stack = self._change_set.stack
|
203
197
|
stack_status = stack.status
|
204
198
|
if stack_status == StackStatus.CREATE_IN_PROGRESS:
|
205
199
|
stack.set_stack_status(StackStatus.CREATE_FAILED, reason=reason)
|
@@ -226,7 +220,7 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
226
220
|
reason,
|
227
221
|
)
|
228
222
|
# TODO: duplication
|
229
|
-
stack = self.
|
223
|
+
stack = self._change_set.stack
|
230
224
|
stack_status = stack.status
|
231
225
|
if stack_status == StackStatus.CREATE_IN_PROGRESS:
|
232
226
|
stack.set_stack_status(StackStatus.CREATE_FAILED, reason=reason)
|
@@ -247,7 +241,7 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
247
241
|
) -> Optional[ResourceProviderPayload]:
|
248
242
|
# FIXME: use proper credentials
|
249
243
|
creds: Credentials = {
|
250
|
-
"accessKeyId": self.
|
244
|
+
"accessKeyId": self._change_set.stack.account_id,
|
251
245
|
"secretAccessKey": INTERNAL_AWS_SECRET_ACCESS_KEY,
|
252
246
|
"sessionToken": "",
|
253
247
|
}
|
@@ -268,14 +262,14 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
268
262
|
raise NotImplementedError(f"Action '{action}' not handled")
|
269
263
|
|
270
264
|
resource_provider_payload: ResourceProviderPayload = {
|
271
|
-
"awsAccountId": self.
|
265
|
+
"awsAccountId": self._change_set.stack.account_id,
|
272
266
|
"callbackContext": {},
|
273
|
-
"stackId": self.
|
267
|
+
"stackId": self._change_set.stack.stack_name,
|
274
268
|
"resourceType": resource_type,
|
275
269
|
"resourceTypeVersion": "000000",
|
276
270
|
# TODO: not actually a UUID
|
277
271
|
"bearerToken": str(uuid.uuid4()),
|
278
|
-
"region": self.
|
272
|
+
"region": self._change_set.stack.region_name,
|
279
273
|
"action": str(action),
|
280
274
|
"requestData": {
|
281
275
|
"logicalResourceId": logical_resource_id,
|
@@ -61,20 +61,23 @@ class PreprocProperties:
|
|
61
61
|
|
62
62
|
|
63
63
|
class PreprocResource:
|
64
|
-
|
64
|
+
logical_id: str
|
65
|
+
physical_resource_id: Optional[str]
|
65
66
|
condition: Optional[bool]
|
66
67
|
resource_type: str
|
67
68
|
properties: PreprocProperties
|
68
69
|
|
69
70
|
def __init__(
|
70
71
|
self,
|
71
|
-
|
72
|
+
logical_id: str,
|
73
|
+
physical_resource_id: str,
|
72
74
|
condition: Optional[bool],
|
73
75
|
resource_type: str,
|
74
76
|
properties: PreprocProperties,
|
75
77
|
):
|
78
|
+
self.logical_id = logical_id
|
79
|
+
self.physical_resource_id = physical_resource_id
|
76
80
|
self.condition = condition
|
77
|
-
self.name = name
|
78
81
|
self.resource_type = resource_type
|
79
82
|
self.properties = properties
|
80
83
|
|
@@ -90,7 +93,7 @@ class PreprocResource:
|
|
90
93
|
return False
|
91
94
|
return all(
|
92
95
|
[
|
93
|
-
self.
|
96
|
+
self.logical_id == other.logical_id,
|
94
97
|
self._compare_conditions(self.condition, other.condition),
|
95
98
|
self.resource_type == other.resource_type,
|
96
99
|
self.properties == other.properties,
|
@@ -125,10 +128,12 @@ class PreprocOutput:
|
|
125
128
|
|
126
129
|
class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
127
130
|
_node_template: Final[NodeTemplate]
|
131
|
+
_before_resolved_resources: Final[dict]
|
128
132
|
_processed: dict[Scope, Any]
|
129
133
|
|
130
|
-
def __init__(self, node_template: NodeTemplate):
|
134
|
+
def __init__(self, node_template: NodeTemplate, before_resolved_resources: dict):
|
131
135
|
self._node_template = node_template
|
136
|
+
self._before_resolved_resources = before_resolved_resources
|
132
137
|
self._processed = dict()
|
133
138
|
|
134
139
|
def process(self) -> None:
|
@@ -411,35 +416,49 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
411
416
|
delta = self.visit(node_condition.body)
|
412
417
|
return delta
|
413
418
|
|
414
|
-
def
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
419
|
+
def _resource_physical_resource_id_from(
|
420
|
+
self, logical_resource_id: str, resolved_resources: dict
|
421
|
+
) -> Optional[str]:
|
422
|
+
# TODO: typing around resolved resources is needed and should be reflected here.
|
423
|
+
resolved_resource = resolved_resources.get(logical_resource_id)
|
424
|
+
if resolved_resource is None:
|
425
|
+
return None
|
426
|
+
physical_resource_id: Optional[str] = resolved_resource.get("PhysicalResourceId")
|
427
|
+
if not isinstance(physical_resource_id, str):
|
428
|
+
raise RuntimeError(f"No PhysicalResourceId found for resource '{logical_resource_id}'")
|
429
|
+
return physical_resource_id
|
430
|
+
|
431
|
+
def _before_resource_physical_id(self, resource_logical_id: str) -> Optional[str]:
|
432
|
+
# TODO: typing around resolved resources is needed and should be reflected here.
|
433
|
+
return self._resource_physical_resource_id_from(
|
434
|
+
logical_resource_id=resource_logical_id,
|
435
|
+
resolved_resources=self._before_resolved_resources,
|
436
|
+
)
|
437
|
+
|
438
|
+
def _after_resource_physical_id(self, resource_logical_id: str) -> Optional[str]:
|
439
|
+
return self._before_resource_physical_id(resource_logical_id=resource_logical_id)
|
420
440
|
|
421
441
|
def visit_node_intrinsic_function_ref(
|
422
442
|
self, node_intrinsic_function: NodeIntrinsicFunction
|
423
443
|
) -> PreprocEntityDelta:
|
424
444
|
arguments_delta = self.visit(node_intrinsic_function.arguments)
|
425
|
-
|
426
|
-
# TODO: add tests with created and deleted parameters and verify this logic holds.
|
427
445
|
before_logical_id = arguments_delta.before
|
446
|
+
after_logical_id = arguments_delta.after
|
447
|
+
|
448
|
+
# TODO: extend this to support references to other types.
|
428
449
|
before = None
|
429
450
|
if before_logical_id is not None:
|
430
451
|
before_delta = self._resolve_reference(logical_id=before_logical_id)
|
431
|
-
|
432
|
-
|
433
|
-
|
452
|
+
before = before_delta.before
|
453
|
+
if isinstance(before, PreprocResource):
|
454
|
+
before = before.physical_resource_id
|
434
455
|
|
435
|
-
after_logical_id = arguments_delta.after
|
436
456
|
after = None
|
437
457
|
if after_logical_id is not None:
|
438
458
|
after_delta = self._resolve_reference(logical_id=after_logical_id)
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
after = after_ref_delta.after
|
459
|
+
after = after_delta.after
|
460
|
+
if isinstance(after, PreprocResource):
|
461
|
+
after = after.physical_resource_id
|
443
462
|
|
444
463
|
return PreprocEntityDelta(before=before, after=after)
|
445
464
|
|
@@ -505,15 +524,25 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
505
524
|
before = None
|
506
525
|
after = None
|
507
526
|
if change_type != ChangeType.CREATED and condition_before is None or condition_before:
|
527
|
+
logical_resource_id = node_resource.name
|
528
|
+
before_physical_resource_id = self._before_resource_physical_id(
|
529
|
+
resource_logical_id=logical_resource_id
|
530
|
+
)
|
508
531
|
before = PreprocResource(
|
509
|
-
|
532
|
+
logical_id=logical_resource_id,
|
533
|
+
physical_resource_id=before_physical_resource_id,
|
510
534
|
condition=condition_before,
|
511
535
|
resource_type=type_delta.before,
|
512
536
|
properties=properties_delta.before,
|
513
537
|
)
|
514
538
|
if change_type != ChangeType.REMOVED and condition_after is None or condition_after:
|
539
|
+
logical_resource_id = node_resource.name
|
540
|
+
after_physical_resource_id = self._after_resource_physical_id(
|
541
|
+
resource_logical_id=logical_resource_id
|
542
|
+
)
|
515
543
|
after = PreprocResource(
|
516
|
-
|
544
|
+
logical_id=logical_resource_id,
|
545
|
+
physical_resource_id=after_physical_resource_id,
|
517
546
|
condition=condition_after,
|
518
547
|
resource_type=type_delta.after,
|
519
548
|
properties=properties_delta.after,
|
@@ -173,6 +173,7 @@ class ChangeSet:
|
|
173
173
|
def describe_details(self, include_property_values: bool) -> DescribeChangeSetOutput:
|
174
174
|
change_set_describer = ChangeSetModelDescriber(
|
175
175
|
node_template=self.update_graph,
|
176
|
+
before_resolved_resources=self.stack.resolved_resources,
|
176
177
|
include_property_values=include_property_values,
|
177
178
|
)
|
178
179
|
changes: Changes = change_set_describer.get_changes()
|
@@ -107,6 +107,55 @@ def get_iam_backend(context: RequestContext) -> IAMBackend:
|
|
107
107
|
return iam_backends[context.account_id][context.partition]
|
108
108
|
|
109
109
|
|
110
|
+
def get_policies_from_principal(backend: IAMBackend, principal_arn: str) -> list[dict]:
|
111
|
+
policies = []
|
112
|
+
if ":role" in principal_arn:
|
113
|
+
role_name = principal_arn.split("/")[-1]
|
114
|
+
|
115
|
+
policies.append(backend.get_role(role_name=role_name).assume_role_policy_document)
|
116
|
+
|
117
|
+
policy_names = backend.list_role_policies(role_name=role_name)
|
118
|
+
policies.extend(
|
119
|
+
[
|
120
|
+
backend.get_role_policy(role_name=role_name, policy_name=policy_name)[1]
|
121
|
+
for policy_name in policy_names
|
122
|
+
]
|
123
|
+
)
|
124
|
+
|
125
|
+
attached_policies, _ = backend.list_attached_role_policies(role_name=role_name)
|
126
|
+
policies.extend([policy.document for policy in attached_policies])
|
127
|
+
|
128
|
+
if ":group" in principal_arn:
|
129
|
+
print(principal_arn)
|
130
|
+
group_name = principal_arn.split("/")[-1]
|
131
|
+
policy_names = backend.list_group_policies(group_name=group_name)
|
132
|
+
policies.extend(
|
133
|
+
[
|
134
|
+
backend.get_group_policy(group_name=group_name, policy_name=policy_name)[1]
|
135
|
+
for policy_name in policy_names
|
136
|
+
]
|
137
|
+
)
|
138
|
+
|
139
|
+
attached_policies, _ = backend.list_attached_group_policies(group_name=group_name)
|
140
|
+
policies.extend([policy.document for policy in attached_policies])
|
141
|
+
|
142
|
+
if ":user" in principal_arn:
|
143
|
+
print(principal_arn)
|
144
|
+
user_name = principal_arn.split("/")[-1]
|
145
|
+
policy_names = backend.list_user_policies(user_name=user_name)
|
146
|
+
policies.extend(
|
147
|
+
[
|
148
|
+
backend.get_user_policy(user_name=user_name, policy_name=policy_name)[1]
|
149
|
+
for policy_name in policy_names
|
150
|
+
]
|
151
|
+
)
|
152
|
+
|
153
|
+
attached_policies, _ = backend.list_attached_user_policies(user_name=user_name)
|
154
|
+
policies.extend([policy.document for policy in attached_policies])
|
155
|
+
|
156
|
+
return policies
|
157
|
+
|
158
|
+
|
110
159
|
class IamProvider(IamApi):
|
111
160
|
def __init__(self):
|
112
161
|
apply_iam_patches()
|
@@ -168,12 +217,20 @@ class IamProvider(IamApi):
|
|
168
217
|
**kwargs,
|
169
218
|
) -> SimulatePolicyResponse:
|
170
219
|
backend = get_iam_backend(context)
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
220
|
+
|
221
|
+
policies = get_policies_from_principal(backend, policy_source_arn)
|
222
|
+
|
223
|
+
def _get_statements_from_policy_list(policies: list[str]):
|
224
|
+
statements = []
|
225
|
+
for policy_str in policies:
|
226
|
+
policy_dict = json.loads(policy_str)
|
227
|
+
if isinstance(policy_dict["Statement"], list):
|
228
|
+
statements.extend(policy_dict["Statement"])
|
229
|
+
else:
|
230
|
+
statements.append(policy_dict["Statement"])
|
231
|
+
return statements
|
232
|
+
|
233
|
+
policy_statements = _get_statements_from_policy_list(policies)
|
177
234
|
|
178
235
|
evaluations = [
|
179
236
|
self.build_evaluation_result(action_name, resource_arn, policy_statements)
|
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.3.1.
|
21
|
-
__version_tuple__ = version_tuple = (4, 3, 1, '
|
20
|
+
__version__ = version = '4.3.1.dev75'
|
21
|
+
__version_tuple__ = version_tuple = (4, 3, 1, 'dev75')
|
@@ -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=iwkEhx8eUzz-SH_5etQwx1RaIhwcBrZc0cdVjtAZKWo,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
|
@@ -310,9 +310,9 @@ localstack/services/cloudformation/engine/validations.py,sha256=brq7s8O8exA5kvnf
|
|
310
310
|
localstack/services/cloudformation/engine/yaml_parser.py,sha256=LQpAVq9Syze9jXUGen9Mz8SjosBuodpV5XvsCSn9bDg,2164
|
311
311
|
localstack/services/cloudformation/engine/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
312
312
|
localstack/services/cloudformation/engine/v2/change_set_model.py,sha256=oDFbFgHgfebPTLFARjtdjS5vsVBfm7w0Iq1lSBMdpbc,47770
|
313
|
-
localstack/services/cloudformation/engine/v2/change_set_model_describer.py,sha256=
|
314
|
-
localstack/services/cloudformation/engine/v2/change_set_model_executor.py,sha256=
|
315
|
-
localstack/services/cloudformation/engine/v2/change_set_model_preproc.py,sha256=
|
313
|
+
localstack/services/cloudformation/engine/v2/change_set_model_describer.py,sha256=W2gbMS-qL_9-PM4NBtEuFDBIqVSewKDSErHowsDBNAM,7350
|
314
|
+
localstack/services/cloudformation/engine/v2/change_set_model_executor.py,sha256=OAgblbbwqWbmYVdK66bISWM70qfl2cc1VxxNwK1kMqY,12583
|
315
|
+
localstack/services/cloudformation/engine/v2/change_set_model_preproc.py,sha256=gBNy3dh4zss-i3vjeRzwbut8pCydV7W3yqMhYk3nGQg,25343
|
316
316
|
localstack/services/cloudformation/engine/v2/change_set_model_visitor.py,sha256=NF97l94cHxxBuqNJ6kR3EarNyjLM9KnT8zPV4puOtZQ,5163
|
317
317
|
localstack/services/cloudformation/models/__init__.py,sha256=da1PTClDMl-IBkrSvq6JC1lnS-K_BASzCvxVhNxN5Ls,13
|
318
318
|
localstack/services/cloudformation/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -331,7 +331,7 @@ localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcon
|
|
331
331
|
localstack/services/cloudformation/scaffolding/__main__.py,sha256=zjedOdqvnfN99WzQ43gxtGZxLDitSnbFGA-zpWbyMQ0,30960
|
332
332
|
localstack/services/cloudformation/scaffolding/propgen.py,sha256=9YsSCkDegcU_Yp8Sfw8eNV26N5ibOlLC6Hg6lxPeBBM,7949
|
333
333
|
localstack/services/cloudformation/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
334
|
-
localstack/services/cloudformation/v2/entities.py,sha256
|
334
|
+
localstack/services/cloudformation/v2/entities.py,sha256=-qrMPVCZBnhLuwcfAMLp9l_jecfRIiRI_Vc917cm8gU,6701
|
335
335
|
localstack/services/cloudformation/v2/provider.py,sha256=RgDgv0B6vXBNHHteOYPP1AQyfasMOZPMD-n_q-cANhg,15521
|
336
336
|
localstack/services/cloudformation/v2/utils.py,sha256=xy4Lcp4X8XGJ0OKfnsE7pnfMcFrtIH0Chw35qwjhZuw,148
|
337
337
|
localstack/services/cloudwatch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -475,7 +475,7 @@ localstack/services/firehose/models.py,sha256=ks3vcvE7scWtXQSHQDc5GkBpBQkmlPtTu7
|
|
475
475
|
localstack/services/firehose/provider.py,sha256=yKgeUWVo0jBnMgfr35BoCxVB1Hj6yCvUoayyLnKzCDc,41007
|
476
476
|
localstack/services/iam/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
477
477
|
localstack/services/iam/iam_patches.py,sha256=qb-YZPsLUOiuwtPsWFz698bt2W-Bfl-TkFHhw2ZKXDY,4652
|
478
|
-
localstack/services/iam/provider.py,sha256=
|
478
|
+
localstack/services/iam/provider.py,sha256=DCaCPKF7HA93dtoxfyUu13fcHDF0dMSp7iu3gWNHiWM,29596
|
479
479
|
localstack/services/iam/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
480
480
|
localstack/services/iam/resource_providers/aws_iam_accesskey.py,sha256=TYRGHM9nMD3dyx-edea0NY-LFp6Fn_b7L5zjqIuubHg,3905
|
481
481
|
localstack/services/iam/resource_providers/aws_iam_accesskey.schema.json,sha256=Gr00xlh-7HHx6447OdCV3Pm0RUvBQb5vQ3owiMArjok,662
|
@@ -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.3.1.
|
1283
|
-
localstack_core-4.3.1.
|
1284
|
-
localstack_core-4.3.1.
|
1285
|
-
localstack_core-4.3.1.
|
1286
|
-
localstack_core-4.3.1.
|
1287
|
-
localstack_core-4.3.1.
|
1288
|
-
localstack_core-4.3.1.
|
1289
|
-
localstack_core-4.3.1.
|
1290
|
-
localstack_core-4.3.1.
|
1291
|
-
localstack_core-4.3.1.
|
1282
|
+
localstack_core-4.3.1.dev75.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
|
1283
|
+
localstack_core-4.3.1.dev75.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
|
1284
|
+
localstack_core-4.3.1.dev75.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
|
1285
|
+
localstack_core-4.3.1.dev75.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
|
1286
|
+
localstack_core-4.3.1.dev75.dist-info/METADATA,sha256=KB2ocRnNpLsahu9FLHejqftmPoA2LO51D9vOaPjbu3o,5531
|
1287
|
+
localstack_core-4.3.1.dev75.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
|
1288
|
+
localstack_core-4.3.1.dev75.dist-info/entry_points.txt,sha256=UqGFR0MPKa2sfresdqiCpqBZuWyRxCb3UG77oPVMzVA,20564
|
1289
|
+
localstack_core-4.3.1.dev75.dist-info/plux.json,sha256=dqDHzhhRUSI7dAjy-ulpecczPB5FHVaLZYSpTbWUS58,20786
|
1290
|
+
localstack_core-4.3.1.dev75.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
|
1291
|
+
localstack_core-4.3.1.dev75.dist-info/RECORD,,
|
@@ -0,0 +1 @@
|
|
1
|
+
{"localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.cloudformation.resource_providers": ["AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "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::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "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::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin"], "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_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "_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", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration"], "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", "publish_metrics=localstack.utils.analytics.metrics:publish_metrics", "aggregate_and_send=localstack.utils.analytics.usage:aggregate_and_send", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints"], "localstack.packages": ["ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package"], "localstack.hooks.configure_localstack_container": ["_mount_machine_file=localstack.utils.analytics.metadata:_mount_machine_file"], "localstack.hooks.prepare_host": ["prepare_host_machine_id=localstack.utils.analytics.metadata:prepare_host_machine_id"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "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.components": ["aws=localstack.aws.components:AwsComponents"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"localstack.packages": ["lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "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", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package"], "localstack.hooks.on_infra_start": ["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", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info"], "localstack.hooks.on_infra_shutdown": ["remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "stop_server=localstack.dns.plugins:stop_server", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "publish_metrics=localstack.utils.analytics.metrics:publish_metrics", "run_on_after_service_shutdown_handlers=localstack.runtime.shutdown:run_on_after_service_shutdown_handlers", "run_shutdown_handlers=localstack.runtime.shutdown:run_shutdown_handlers", "shutdown_services=localstack.runtime.shutdown:shutdown_services", "aggregate_and_send=localstack.utils.analytics.usage:aggregate_and_send"], "localstack.cloudformation.resource_providers": ["AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "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::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "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::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "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.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.aws.provider": ["acm:default=localstack.services.providers:acm", "apigateway:default=localstack.services.providers:apigateway", "apigateway:legacy=localstack.services.providers:apigateway_legacy", "apigateway:next_gen=localstack.services.providers:apigateway_next_gen", "config:default=localstack.services.providers:awsconfig", "cloudformation:default=localstack.services.providers:cloudformation", "cloudformation:engine-v2=localstack.services.providers:cloudformation_v2", "cloudwatch:default=localstack.services.providers:cloudwatch", "cloudwatch:v1=localstack.services.providers:cloudwatch_v1", "cloudwatch:v2=localstack.services.providers:cloudwatch_v2", "dynamodb:default=localstack.services.providers:dynamodb", "dynamodb:v2=localstack.services.providers:dynamodb_v2", "dynamodbstreams:default=localstack.services.providers:dynamodbstreams", "dynamodbstreams:v2=localstack.services.providers:dynamodbstreams_v2", "ec2:default=localstack.services.providers:ec2", "es:default=localstack.services.providers:es", "events:default=localstack.services.providers:events", "events:legacy=localstack.services.providers:events_legacy", "events:v1=localstack.services.providers:events_v1", "events:v2=localstack.services.providers:events_v2", "firehose:default=localstack.services.providers:firehose", "iam:default=localstack.services.providers:iam", "kinesis:default=localstack.services.providers:kinesis", "kms:default=localstack.services.providers:kms", "lambda:default=localstack.services.providers:lambda_", "lambda:asf=localstack.services.providers:lambda_asf", "lambda:v2=localstack.services.providers:lambda_v2", "logs:default=localstack.services.providers:logs", "opensearch:default=localstack.services.providers:opensearch", "redshift:default=localstack.services.providers:redshift", "resource-groups:default=localstack.services.providers:resource_groups", "resourcegroupstaggingapi:default=localstack.services.providers:resourcegroupstaggingapi", "route53:default=localstack.services.providers:route53", "route53resolver:default=localstack.services.providers:route53resolver", "s3:default=localstack.services.providers:s3", "s3control:default=localstack.services.providers:s3control", "scheduler:default=localstack.services.providers:scheduler", "secretsmanager:default=localstack.services.providers:secretsmanager", "ses:default=localstack.services.providers:ses", "sns:default=localstack.services.providers:sns", "sqs:default=localstack.services.providers:sqs", "ssm:default=localstack.services.providers:ssm", "stepfunctions:default=localstack.services.providers:stepfunctions", "stepfunctions:v2=localstack.services.providers:stepfunctions_v2", "sts:default=localstack.services.providers:sts", "support:default=localstack.services.providers:support", "swf:default=localstack.services.providers:swf", "transcribe:default=localstack.services.providers:transcribe"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.hooks.configure_localstack_container": ["_mount_machine_file=localstack.utils.analytics.metadata:_mount_machine_file"], "localstack.hooks.prepare_host": ["prepare_host_machine_id=localstack.utils.analytics.metadata:prepare_host_machine_id"]}
|
File without changes
|
{localstack_core-4.3.1.dev73.data → localstack_core-4.3.1.dev75.data}/scripts/localstack-supervisor
RENAMED
File without changes
|
{localstack_core-4.3.1.dev73.data → localstack_core-4.3.1.dev75.data}/scripts/localstack.bat
RENAMED
File without changes
|
File without changes
|
{localstack_core-4.3.1.dev73.dist-info → localstack_core-4.3.1.dev75.dist-info}/entry_points.txt
RENAMED
File without changes
|
{localstack_core-4.3.1.dev73.dist-info → localstack_core-4.3.1.dev75.dist-info}/licenses/LICENSE.txt
RENAMED
File without changes
|
{localstack_core-4.3.1.dev73.dist-info → localstack_core-4.3.1.dev75.dist-info}/top_level.txt
RENAMED
File without changes
|