localstack-core 4.3.1.dev63__py3-none-any.whl → 4.3.1.dev64__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/stepfunctions/asl/component/state/state_execution/state_task/mock_eval_utils.py +45 -0
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service.py +14 -6
- localstack/services/stepfunctions/asl/eval/environment.py +28 -0
- localstack/services/stepfunctions/backend/execution.py +6 -0
- localstack/services/stepfunctions/backend/execution_worker.py +5 -0
- localstack/services/stepfunctions/mocking/mock_config.py +208 -63
- localstack/services/stepfunctions/mocking/mock_config_file.py +150 -0
- localstack/services/stepfunctions/provider.py +24 -1
- localstack/testing/pytest/stepfunctions/utils.py +61 -1
- localstack/version.py +2 -2
- {localstack_core-4.3.1.dev63.dist-info → localstack_core-4.3.1.dev64.dist-info}/METADATA +1 -1
- {localstack_core-4.3.1.dev63.dist-info → localstack_core-4.3.1.dev64.dist-info}/RECORD +20 -18
- localstack_core-4.3.1.dev64.dist-info/plux.json +1 -0
- localstack_core-4.3.1.dev63.dist-info/plux.json +0 -1
- {localstack_core-4.3.1.dev63.data → localstack_core-4.3.1.dev64.data}/scripts/localstack +0 -0
- {localstack_core-4.3.1.dev63.data → localstack_core-4.3.1.dev64.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.3.1.dev63.data → localstack_core-4.3.1.dev64.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.3.1.dev63.dist-info → localstack_core-4.3.1.dev64.dist-info}/WHEEL +0 -0
- {localstack_core-4.3.1.dev63.dist-info → localstack_core-4.3.1.dev64.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.3.1.dev63.dist-info → localstack_core-4.3.1.dev64.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.3.1.dev63.dist-info → localstack_core-4.3.1.dev64.dist-info}/top_level.txt +0 -0
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/mock_eval_utils.py
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
import copy
|
2
|
+
|
3
|
+
from localstack.aws.api.stepfunctions import HistoryEventType, TaskFailedEventDetails
|
4
|
+
from localstack.services.stepfunctions.asl.component.common.error_name.custom_error_name import (
|
5
|
+
CustomErrorName,
|
6
|
+
)
|
7
|
+
from localstack.services.stepfunctions.asl.component.common.error_name.failure_event import (
|
8
|
+
FailureEvent,
|
9
|
+
FailureEventException,
|
10
|
+
)
|
11
|
+
from localstack.services.stepfunctions.asl.eval.environment import Environment
|
12
|
+
from localstack.services.stepfunctions.asl.eval.event.event_detail import EventDetails
|
13
|
+
from localstack.services.stepfunctions.mocking.mock_config import (
|
14
|
+
MockedResponse,
|
15
|
+
MockedResponseReturn,
|
16
|
+
MockedResponseThrow,
|
17
|
+
)
|
18
|
+
|
19
|
+
|
20
|
+
def _eval_mocked_response_throw(env: Environment, mocked_response: MockedResponseThrow) -> None:
|
21
|
+
task_failed_event_details = TaskFailedEventDetails(
|
22
|
+
error=mocked_response.error, cause=mocked_response.cause
|
23
|
+
)
|
24
|
+
error_name = CustomErrorName(mocked_response.error)
|
25
|
+
failure_event = FailureEvent(
|
26
|
+
env=env,
|
27
|
+
error_name=error_name,
|
28
|
+
event_type=HistoryEventType.TaskFailed,
|
29
|
+
event_details=EventDetails(taskFailedEventDetails=task_failed_event_details),
|
30
|
+
)
|
31
|
+
raise FailureEventException(failure_event=failure_event)
|
32
|
+
|
33
|
+
|
34
|
+
def _eval_mocked_response_return(env: Environment, mocked_response: MockedResponseReturn) -> None:
|
35
|
+
payload_copy = copy.deepcopy(mocked_response.payload)
|
36
|
+
env.stack.append(payload_copy)
|
37
|
+
|
38
|
+
|
39
|
+
def eval_mocked_response(env: Environment, mocked_response: MockedResponse) -> None:
|
40
|
+
if isinstance(mocked_response, MockedResponseReturn):
|
41
|
+
_eval_mocked_response_return(env=env, mocked_response=mocked_response)
|
42
|
+
elif isinstance(mocked_response, MockedResponseThrow):
|
43
|
+
_eval_mocked_response_throw(env=env, mocked_response=mocked_response)
|
44
|
+
else:
|
45
|
+
raise RuntimeError(f"Invalid MockedResponse type '{type(mocked_response)}'")
|
@@ -33,6 +33,9 @@ from localstack.services.stepfunctions.asl.component.common.error_name.states_er
|
|
33
33
|
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
|
34
34
|
StateCredentials,
|
35
35
|
)
|
36
|
+
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.mock_eval_utils import (
|
37
|
+
eval_mocked_response,
|
38
|
+
)
|
36
39
|
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.service.resource import (
|
37
40
|
ResourceRuntimePart,
|
38
41
|
ServiceResource,
|
@@ -44,6 +47,7 @@ from localstack.services.stepfunctions.asl.component.state.state_props import St
|
|
44
47
|
from localstack.services.stepfunctions.asl.eval.environment import Environment
|
45
48
|
from localstack.services.stepfunctions.asl.eval.event.event_detail import EventDetails
|
46
49
|
from localstack.services.stepfunctions.asl.utils.encoding import to_json_str
|
50
|
+
from localstack.services.stepfunctions.mocking.mock_config import MockedResponse
|
47
51
|
from localstack.services.stepfunctions.quotas import is_within_size_quota
|
48
52
|
from localstack.utils.strings import camel_to_snake_case, snake_to_camel_case, to_bytes, to_str
|
49
53
|
|
@@ -352,12 +356,16 @@ class StateTaskService(StateTask, abc.ABC):
|
|
352
356
|
normalised_parameters = copy.deepcopy(raw_parameters)
|
353
357
|
self._normalise_parameters(normalised_parameters)
|
354
358
|
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
359
|
+
if env.is_mocked_mode():
|
360
|
+
mocked_response: MockedResponse = env.get_current_mocked_response()
|
361
|
+
eval_mocked_response(env=env, mocked_response=mocked_response)
|
362
|
+
else:
|
363
|
+
self._eval_service_task(
|
364
|
+
env=env,
|
365
|
+
resource_runtime_part=resource_runtime_part,
|
366
|
+
normalised_parameters=normalised_parameters,
|
367
|
+
state_credentials=state_credentials,
|
368
|
+
)
|
361
369
|
|
362
370
|
output_value = env.stack[-1]
|
363
371
|
self._normalise_response(output_value)
|
@@ -34,6 +34,7 @@ from localstack.services.stepfunctions.asl.eval.program_state import (
|
|
34
34
|
from localstack.services.stepfunctions.asl.eval.states import ContextObjectData, States
|
35
35
|
from localstack.services.stepfunctions.asl.eval.variable_store import VariableStore
|
36
36
|
from localstack.services.stepfunctions.backend.activity import Activity
|
37
|
+
from localstack.services.stepfunctions.mocking.mock_config import MockedResponse, MockTestCase
|
37
38
|
|
38
39
|
LOG = logging.getLogger(__name__)
|
39
40
|
|
@@ -51,6 +52,7 @@ class Environment:
|
|
51
52
|
callback_pool_manager: CallbackPoolManager
|
52
53
|
map_run_record_pool_manager: MapRunRecordPoolManager
|
53
54
|
activity_store: Final[dict[Arn, Activity]]
|
55
|
+
mock_test_case: Optional[MockTestCase] = None
|
54
56
|
|
55
57
|
_frames: Final[list[Environment]]
|
56
58
|
_is_frame: bool = False
|
@@ -69,6 +71,7 @@ class Environment:
|
|
69
71
|
cloud_watch_logging_session: Optional[CloudWatchLoggingSession],
|
70
72
|
activity_store: dict[Arn, Activity],
|
71
73
|
variable_store: Optional[VariableStore] = None,
|
74
|
+
mock_test_case: Optional[MockTestCase] = None,
|
72
75
|
):
|
73
76
|
super(Environment, self).__init__()
|
74
77
|
self._state_mutex = threading.RLock()
|
@@ -86,6 +89,8 @@ class Environment:
|
|
86
89
|
|
87
90
|
self.activity_store = activity_store
|
88
91
|
|
92
|
+
self.mock_test_case = mock_test_case
|
93
|
+
|
89
94
|
self._frames = list()
|
90
95
|
self._is_frame = False
|
91
96
|
|
@@ -133,6 +138,7 @@ class Environment:
|
|
133
138
|
cloud_watch_logging_session=env.cloud_watch_logging_session,
|
134
139
|
activity_store=env.activity_store,
|
135
140
|
variable_store=variable_store,
|
141
|
+
mock_test_case=env.mock_test_case,
|
136
142
|
)
|
137
143
|
frame._is_frame = True
|
138
144
|
frame.event_manager = env.event_manager
|
@@ -262,3 +268,25 @@ class Environment:
|
|
262
268
|
|
263
269
|
def is_standard_workflow(self) -> bool:
|
264
270
|
return self.execution_type == StateMachineType.STANDARD
|
271
|
+
|
272
|
+
def is_mocked_mode(self) -> bool:
|
273
|
+
return self.mock_test_case is not None
|
274
|
+
|
275
|
+
def get_current_mocked_response(self) -> MockedResponse:
|
276
|
+
if not self.is_mocked_mode():
|
277
|
+
raise RuntimeError(
|
278
|
+
"Cannot retrieve mocked response: execution is not operating in mocked mode"
|
279
|
+
)
|
280
|
+
state_name = self.next_state_name
|
281
|
+
state_mocked_responses: Optional = self.mock_test_case.state_mocked_responses.get(
|
282
|
+
state_name
|
283
|
+
)
|
284
|
+
if state_mocked_responses is None:
|
285
|
+
raise RuntimeError(f"No mocked response definition for state '{state_name}'")
|
286
|
+
retry_count = self.states.context_object.context_object_data["State"]["RetryCount"]
|
287
|
+
if len(state_mocked_responses.mocked_responses) <= retry_count:
|
288
|
+
raise RuntimeError(
|
289
|
+
f"No mocked response definition for state '{state_name}' "
|
290
|
+
f"and retry number '{retry_count}'"
|
291
|
+
)
|
292
|
+
return state_mocked_responses.mocked_responses[retry_count]
|
@@ -59,6 +59,7 @@ from localstack.services.stepfunctions.backend.state_machine import (
|
|
59
59
|
StateMachineInstance,
|
60
60
|
StateMachineVersion,
|
61
61
|
)
|
62
|
+
from localstack.services.stepfunctions.mocking.mock_config import MockTestCase
|
62
63
|
|
63
64
|
LOG = logging.getLogger(__name__)
|
64
65
|
|
@@ -107,6 +108,8 @@ class Execution:
|
|
107
108
|
state_machine_version_arn: Final[Optional[Arn]]
|
108
109
|
state_machine_alias_arn: Final[Optional[Arn]]
|
109
110
|
|
111
|
+
mock_test_case: Final[Optional[MockTestCase]]
|
112
|
+
|
110
113
|
start_date: Final[Timestamp]
|
111
114
|
input_data: Final[Optional[json]]
|
112
115
|
input_details: Final[Optional[CloudWatchEventsExecutionDataDetails]]
|
@@ -141,6 +144,7 @@ class Execution:
|
|
141
144
|
input_data: Optional[json] = None,
|
142
145
|
trace_header: Optional[TraceHeader] = None,
|
143
146
|
state_machine_alias_arn: Optional[Arn] = None,
|
147
|
+
mock_test_case: Optional[MockTestCase] = None,
|
144
148
|
):
|
145
149
|
self.name = name
|
146
150
|
self.sm_type = sm_type
|
@@ -169,6 +173,7 @@ class Execution:
|
|
169
173
|
self.error = None
|
170
174
|
self.cause = None
|
171
175
|
self._activity_store = activity_store
|
176
|
+
self.mock_test_case = mock_test_case
|
172
177
|
|
173
178
|
def _get_events_client(self):
|
174
179
|
return connect_to(aws_access_key_id=self.account_id, region_name=self.region_name).events
|
@@ -301,6 +306,7 @@ class Execution:
|
|
301
306
|
exec_comm=self._get_start_execution_worker_comm(),
|
302
307
|
cloud_watch_logging_session=self._cloud_watch_logging_session,
|
303
308
|
activity_store=self._activity_store,
|
309
|
+
mock_test_case=self.mock_test_case,
|
304
310
|
)
|
305
311
|
|
306
312
|
def start(self) -> None:
|
@@ -29,6 +29,7 @@ from localstack.services.stepfunctions.backend.activity import Activity
|
|
29
29
|
from localstack.services.stepfunctions.backend.execution_worker_comm import (
|
30
30
|
ExecutionWorkerCommunication,
|
31
31
|
)
|
32
|
+
from localstack.services.stepfunctions.mocking.mock_config import MockTestCase
|
32
33
|
from localstack.utils.common import TMP_THREADS
|
33
34
|
|
34
35
|
|
@@ -36,6 +37,7 @@ class ExecutionWorker:
|
|
36
37
|
_evaluation_details: Final[EvaluationDetails]
|
37
38
|
_execution_communication: Final[ExecutionWorkerCommunication]
|
38
39
|
_cloud_watch_logging_session: Final[Optional[CloudWatchLoggingSession]]
|
40
|
+
_mock_test_case: Final[Optional[MockTestCase]]
|
39
41
|
_activity_store: dict[Arn, Activity]
|
40
42
|
|
41
43
|
env: Optional[Environment]
|
@@ -46,10 +48,12 @@ class ExecutionWorker:
|
|
46
48
|
exec_comm: ExecutionWorkerCommunication,
|
47
49
|
cloud_watch_logging_session: Optional[CloudWatchLoggingSession],
|
48
50
|
activity_store: dict[Arn, Activity],
|
51
|
+
mock_test_case: Optional[MockTestCase] = None,
|
49
52
|
):
|
50
53
|
self._evaluation_details = evaluation_details
|
51
54
|
self._execution_communication = exec_comm
|
52
55
|
self._cloud_watch_logging_session = cloud_watch_logging_session
|
56
|
+
self._mock_test_case = mock_test_case
|
53
57
|
self._activity_store = activity_store
|
54
58
|
self.env = None
|
55
59
|
|
@@ -78,6 +82,7 @@ class ExecutionWorker:
|
|
78
82
|
event_history_context=EventHistoryContext.of_program_start(),
|
79
83
|
cloud_watch_logging_session=self._cloud_watch_logging_session,
|
80
84
|
activity_store=self._activity_store,
|
85
|
+
mock_test_case=self._mock_test_case,
|
81
86
|
)
|
82
87
|
|
83
88
|
def _execution_logic(self):
|
@@ -1,69 +1,214 @@
|
|
1
|
-
import
|
2
|
-
import
|
3
|
-
|
4
|
-
from
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
1
|
+
import abc
|
2
|
+
from typing import Any, Final, Optional
|
3
|
+
|
4
|
+
from localstack.services.stepfunctions.mocking.mock_config_file import (
|
5
|
+
RawMockConfig,
|
6
|
+
RawResponseModel,
|
7
|
+
RawTestCase,
|
8
|
+
_load_sfn_raw_mock_config,
|
9
|
+
)
|
10
|
+
|
11
|
+
|
12
|
+
class MockedResponse(abc.ABC):
|
13
|
+
range_start: Final[int]
|
14
|
+
range_end: Final[int]
|
15
|
+
|
16
|
+
def __init__(self, range_start: int, range_end: int):
|
17
|
+
super().__init__()
|
18
|
+
if range_start < 0 or range_end < 0:
|
19
|
+
raise ValueError(
|
20
|
+
f"Invalid range: both '{range_start}' and '{range_end}' must be positive integers."
|
21
|
+
)
|
22
|
+
if range_start != range_end and range_end < range_start + 1:
|
23
|
+
raise ValueError(
|
24
|
+
f"Invalid range: values must be equal or '{range_start}' "
|
25
|
+
f"must be at least one greater than '{range_end}'."
|
26
|
+
)
|
27
|
+
self.range_start = range_start
|
28
|
+
self.range_end = range_end
|
29
|
+
|
30
|
+
|
31
|
+
class MockedResponseReturn(MockedResponse):
|
32
|
+
payload: Final[dict[Any, Any]]
|
33
|
+
|
34
|
+
def __init__(self, range_start: int, range_end: int, payload: dict[Any, Any]):
|
35
|
+
super().__init__(range_start=range_start, range_end=range_end)
|
36
|
+
self.payload = payload
|
37
|
+
|
38
|
+
|
39
|
+
class MockedResponseThrow(MockedResponse):
|
40
|
+
error: Final[str]
|
41
|
+
cause: Final[str]
|
42
|
+
|
43
|
+
def __init__(self, range_start: int, range_end: int, error: str, cause: str):
|
44
|
+
super().__init__(range_start=range_start, range_end=range_end)
|
45
|
+
self.error = error
|
46
|
+
self.cause = cause
|
47
|
+
|
48
|
+
|
49
|
+
class StateMockedResponses:
|
50
|
+
state_name: Final[str]
|
51
|
+
mocked_response_name: Final[str]
|
52
|
+
mocked_responses: Final[list[MockedResponse]]
|
53
|
+
|
54
|
+
def __init__(
|
55
|
+
self, state_name: str, mocked_response_name: str, mocked_responses: list[MockedResponse]
|
56
|
+
):
|
57
|
+
self.state_name = state_name
|
58
|
+
self.mocked_response_name = mocked_response_name
|
59
|
+
self.mocked_responses = list()
|
60
|
+
last_range_end: int = 0
|
61
|
+
mocked_responses_sorted = sorted(mocked_responses, key=lambda mr: mr.range_start)
|
62
|
+
for mocked_response in mocked_responses_sorted:
|
63
|
+
if not mocked_response.range_start - last_range_end == 0:
|
64
|
+
raise RuntimeError(
|
65
|
+
f"Inconsistent event numbering detected for state '{state_name}': "
|
66
|
+
f"the previous mocked response ended at event '{last_range_end}' "
|
67
|
+
f"while the next response '{mocked_response_name}' "
|
68
|
+
f"starts at event '{mocked_response.range_start}'. "
|
69
|
+
"Mock responses must be consecutively numbered. "
|
70
|
+
f"Expected the next response to begin at event {last_range_end + 1}."
|
71
|
+
)
|
72
|
+
repeats = mocked_response.range_start - mocked_response.range_end + 1
|
73
|
+
self.mocked_responses.extend([mocked_response] * repeats)
|
74
|
+
last_range_end = mocked_response.range_end
|
75
|
+
|
76
|
+
|
77
|
+
class MockTestCase:
|
78
|
+
state_machine_name: Final[str]
|
79
|
+
test_case_name: Final[str]
|
80
|
+
state_mocked_responses: Final[dict[str, StateMockedResponses]]
|
81
|
+
|
82
|
+
def __init__(
|
83
|
+
self,
|
84
|
+
state_machine_name: str,
|
85
|
+
test_case_name: str,
|
86
|
+
state_mocked_responses_list: list[StateMockedResponses],
|
87
|
+
):
|
88
|
+
self.state_machine_name = state_machine_name
|
89
|
+
self.test_case_name = test_case_name
|
90
|
+
self.state_mocked_responses = dict()
|
91
|
+
for state_mocked_response in state_mocked_responses_list:
|
92
|
+
state_name = state_mocked_response.state_name
|
93
|
+
if state_name in self.state_mocked_responses:
|
94
|
+
raise RuntimeError(
|
95
|
+
f"Duplicate definition of state '{state_name}' for test case '{test_case_name}'"
|
96
|
+
)
|
97
|
+
self.state_mocked_responses[state_name] = state_mocked_response
|
98
|
+
|
99
|
+
|
100
|
+
def _parse_mocked_response_range(string_definition: str) -> tuple[int, int]:
|
101
|
+
definition_parts = string_definition.strip().split("-")
|
102
|
+
if len(definition_parts) == 1:
|
103
|
+
range_part = definition_parts[0]
|
104
|
+
try:
|
105
|
+
range_value = int(range_part)
|
106
|
+
return range_value, range_value
|
107
|
+
except Exception:
|
108
|
+
raise RuntimeError(
|
109
|
+
f"Unknown mocked response retry range value '{range_part}', not a valid integer"
|
110
|
+
)
|
111
|
+
elif len(definition_parts) == 2:
|
112
|
+
range_part_start = definition_parts[0]
|
113
|
+
range_part_end = definition_parts[1]
|
114
|
+
try:
|
115
|
+
return int(range_part_start), int(range_part_end)
|
116
|
+
except Exception:
|
117
|
+
raise RuntimeError(
|
118
|
+
f"Unknown mocked response retry range value '{range_part_start}:{range_part_end}', "
|
119
|
+
"not valid integer values"
|
120
|
+
)
|
121
|
+
else:
|
122
|
+
raise RuntimeError(
|
123
|
+
f"Unknown mocked response retry range definition '{string_definition}', "
|
124
|
+
"range definition should consist of one integer (e.g. '0'), or a integer range (e.g. '1-2')'."
|
49
125
|
)
|
50
|
-
return None
|
51
126
|
|
52
127
|
|
53
|
-
def
|
54
|
-
|
55
|
-
|
56
|
-
|
128
|
+
def _mocked_response_from_raw(
|
129
|
+
raw_response_model_range: str, raw_response_model: RawResponseModel
|
130
|
+
) -> MockedResponse:
|
131
|
+
range_start, range_end = _parse_mocked_response_range(raw_response_model_range)
|
132
|
+
if raw_response_model.Return:
|
133
|
+
payload = raw_response_model.Return.model_dump()
|
134
|
+
return MockedResponseReturn(range_start=range_start, range_end=range_end, payload=payload)
|
135
|
+
throw_definition = raw_response_model.Throw
|
136
|
+
return MockedResponseThrow(
|
137
|
+
range_start=range_start,
|
138
|
+
range_end=range_end,
|
139
|
+
error=throw_definition.Error,
|
140
|
+
cause=throw_definition.Cause,
|
141
|
+
)
|
57
142
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
143
|
+
|
144
|
+
def _mocked_responses_from_raw(
|
145
|
+
mocked_response_name: str, raw_mock_config: RawMockConfig
|
146
|
+
) -> list[MockedResponse]:
|
147
|
+
raw_response_models: Optional[dict[str, RawResponseModel]] = (
|
148
|
+
raw_mock_config.MockedResponses.get(mocked_response_name)
|
149
|
+
)
|
150
|
+
if not raw_response_models:
|
151
|
+
raise RuntimeError(
|
152
|
+
f"No definitions for mocked response '{mocked_response_name}' in the mock configuration file."
|
65
153
|
)
|
66
|
-
|
154
|
+
mocked_responses: list[MockedResponse] = list()
|
155
|
+
for raw_response_model_range, raw_response_model in raw_response_models.items():
|
156
|
+
mocked_response: MockedResponse = _mocked_response_from_raw(
|
157
|
+
raw_response_model_range=raw_response_model_range, raw_response_model=raw_response_model
|
158
|
+
)
|
159
|
+
mocked_responses.append(mocked_response)
|
160
|
+
return mocked_responses
|
161
|
+
|
67
162
|
|
68
|
-
|
69
|
-
|
163
|
+
def _state_mocked_responses_from_raw(
|
164
|
+
state_name: str, mocked_response_name: str, raw_mock_config: RawMockConfig
|
165
|
+
) -> StateMockedResponses:
|
166
|
+
mocked_responses = _mocked_responses_from_raw(
|
167
|
+
mocked_response_name=mocked_response_name, raw_mock_config=raw_mock_config
|
168
|
+
)
|
169
|
+
return StateMockedResponses(
|
170
|
+
state_name=state_name,
|
171
|
+
mocked_response_name=mocked_response_name,
|
172
|
+
mocked_responses=mocked_responses,
|
173
|
+
)
|
174
|
+
|
175
|
+
|
176
|
+
def _mock_test_case_from_raw(
|
177
|
+
state_machine_name: str, test_case_name: str, raw_mock_config: RawMockConfig
|
178
|
+
) -> MockTestCase:
|
179
|
+
state_machine = raw_mock_config.StateMachines.get(state_machine_name)
|
180
|
+
if not state_machine:
|
181
|
+
raise RuntimeError(
|
182
|
+
f"No definitions for state machine '{state_machine_name}' in the mock configuration file."
|
183
|
+
)
|
184
|
+
test_case: RawTestCase = state_machine.TestCases.get(test_case_name)
|
185
|
+
if not test_case:
|
186
|
+
raise RuntimeError(
|
187
|
+
f"No definitions for test case '{test_case_name}' and "
|
188
|
+
f"state machine '{state_machine_name}' in the mock configuration file."
|
189
|
+
)
|
190
|
+
state_mocked_responses_list: list[StateMockedResponses] = list()
|
191
|
+
for state_name, mocked_response_name in test_case.root.items():
|
192
|
+
state_mocked_responses = _state_mocked_responses_from_raw(
|
193
|
+
state_name=state_name,
|
194
|
+
mocked_response_name=mocked_response_name,
|
195
|
+
raw_mock_config=raw_mock_config,
|
196
|
+
)
|
197
|
+
state_mocked_responses_list.append(state_mocked_responses)
|
198
|
+
return MockTestCase(
|
199
|
+
state_machine_name=state_machine_name,
|
200
|
+
test_case_name=test_case_name,
|
201
|
+
state_mocked_responses_list=state_mocked_responses_list,
|
202
|
+
)
|
203
|
+
|
204
|
+
|
205
|
+
def load_mock_test_case_for(state_machine_name: str, test_case_name: str) -> Optional[MockTestCase]:
|
206
|
+
raw_mock_config: Optional[RawMockConfig] = _load_sfn_raw_mock_config()
|
207
|
+
if raw_mock_config is None:
|
208
|
+
return None
|
209
|
+
mock_test_case: MockTestCase = _mock_test_case_from_raw(
|
210
|
+
state_machine_name=state_machine_name,
|
211
|
+
test_case_name=test_case_name,
|
212
|
+
raw_mock_config=raw_mock_config,
|
213
|
+
)
|
214
|
+
return mock_test_case
|
@@ -0,0 +1,150 @@
|
|
1
|
+
import logging
|
2
|
+
import os
|
3
|
+
from functools import lru_cache
|
4
|
+
from typing import Dict, Final, Optional
|
5
|
+
|
6
|
+
from pydantic import BaseModel, RootModel, model_validator
|
7
|
+
|
8
|
+
from localstack import config
|
9
|
+
|
10
|
+
LOG = logging.getLogger(__name__)
|
11
|
+
|
12
|
+
_RETURN_KEY: Final[str] = "Return"
|
13
|
+
_THROW_KEY: Final[str] = "Throw"
|
14
|
+
|
15
|
+
|
16
|
+
class RawReturnResponse(BaseModel):
|
17
|
+
"""
|
18
|
+
Represents a return response.
|
19
|
+
Accepts any fields.
|
20
|
+
"""
|
21
|
+
|
22
|
+
model_config = {"extra": "allow", "frozen": True}
|
23
|
+
|
24
|
+
|
25
|
+
class RawThrowResponse(BaseModel):
|
26
|
+
"""
|
27
|
+
Represents an error response.
|
28
|
+
Both 'Error' and 'Cause' are required.
|
29
|
+
"""
|
30
|
+
|
31
|
+
model_config = {"frozen": True}
|
32
|
+
|
33
|
+
Error: str
|
34
|
+
Cause: str
|
35
|
+
|
36
|
+
|
37
|
+
class RawResponseModel(BaseModel):
|
38
|
+
"""
|
39
|
+
A response step must include exactly one of:
|
40
|
+
- 'Return': a ReturnResponse object.
|
41
|
+
- 'Throw': a ThrowResponse object.
|
42
|
+
"""
|
43
|
+
|
44
|
+
model_config = {"frozen": True}
|
45
|
+
|
46
|
+
Return: Optional[RawReturnResponse] = None
|
47
|
+
Throw: Optional[RawThrowResponse] = None
|
48
|
+
|
49
|
+
@model_validator(mode="before")
|
50
|
+
def validate_response(cls, data: dict) -> dict:
|
51
|
+
if _RETURN_KEY in data and _THROW_KEY in data:
|
52
|
+
raise ValueError(f"Response cannot contain both '{_RETURN_KEY}' and '{_THROW_KEY}'")
|
53
|
+
if _RETURN_KEY not in data and _THROW_KEY not in data:
|
54
|
+
raise ValueError(f"Response must contain one of '{_RETURN_KEY}' or '{_THROW_KEY}'")
|
55
|
+
return data
|
56
|
+
|
57
|
+
|
58
|
+
class RawTestCase(RootModel[Dict[str, str]]):
|
59
|
+
"""
|
60
|
+
Represents an individual test case.
|
61
|
+
The keys are state names (e.g., 'LambdaState', 'SQSState')
|
62
|
+
and the values are the names of the mocked response configurations.
|
63
|
+
"""
|
64
|
+
|
65
|
+
model_config = {"frozen": True}
|
66
|
+
|
67
|
+
|
68
|
+
class RawStateMachine(BaseModel):
|
69
|
+
"""
|
70
|
+
Represents a state machine configuration containing multiple test cases.
|
71
|
+
"""
|
72
|
+
|
73
|
+
model_config = {"frozen": True}
|
74
|
+
|
75
|
+
TestCases: Dict[str, RawTestCase]
|
76
|
+
|
77
|
+
|
78
|
+
class RawMockConfig(BaseModel):
|
79
|
+
"""
|
80
|
+
The root configuration that contains:
|
81
|
+
- StateMachines: mapping state machine names to their configuration.
|
82
|
+
- MockedResponses: mapping response configuration names to response steps.
|
83
|
+
Each response step is keyed (e.g. "0", "1-2") and maps to a ResponseModel.
|
84
|
+
"""
|
85
|
+
|
86
|
+
model_config = {"frozen": True}
|
87
|
+
|
88
|
+
StateMachines: Dict[str, RawStateMachine]
|
89
|
+
MockedResponses: Dict[str, Dict[str, RawResponseModel]]
|
90
|
+
|
91
|
+
|
92
|
+
@lru_cache(maxsize=1)
|
93
|
+
def _read_sfn_raw_mock_config(file_path: str, modified_epoch: int) -> Optional[RawMockConfig]: # noqa
|
94
|
+
"""
|
95
|
+
Load and cache the Step Functions mock configuration from a JSON file.
|
96
|
+
|
97
|
+
This function is memoized using `functools.lru_cache` to avoid re-reading the file
|
98
|
+
from disk unless it has changed. The `modified_epoch` parameter is used solely to
|
99
|
+
trigger cache invalidation when the file is updated. If either the file path or the
|
100
|
+
modified timestamp changes, the cached result is discarded and the file is reloaded.
|
101
|
+
|
102
|
+
Parameters:
|
103
|
+
file_path (str):
|
104
|
+
The absolute path to the JSON configuration file.
|
105
|
+
|
106
|
+
modified_epoch (int):
|
107
|
+
The last modified time of the file, in epoch seconds. This value is used
|
108
|
+
as part of the cache key to ensure the cache is refreshed when the file is updated.
|
109
|
+
|
110
|
+
Returns:
|
111
|
+
Optional[dict]:
|
112
|
+
The parsed configuration as a dictionary if the file is successfully loaded,
|
113
|
+
or `None` if an error occurs during reading or parsing.
|
114
|
+
|
115
|
+
Notes:
|
116
|
+
- The `modified_epoch` argument is not used inside the function logic, but is
|
117
|
+
necessary to ensure cache correctness via `lru_cache`.
|
118
|
+
- Logging is used to capture warnings if file access or parsing fails.
|
119
|
+
"""
|
120
|
+
try:
|
121
|
+
with open(file_path, "r") as df:
|
122
|
+
mock_config_str = df.read()
|
123
|
+
mock_config: RawMockConfig = RawMockConfig.model_validate_json(mock_config_str)
|
124
|
+
return mock_config
|
125
|
+
except Exception as ex:
|
126
|
+
LOG.warning(
|
127
|
+
"Unable to load step functions mock configuration file at '%s' due to %s",
|
128
|
+
file_path,
|
129
|
+
ex,
|
130
|
+
)
|
131
|
+
return None
|
132
|
+
|
133
|
+
|
134
|
+
def _load_sfn_raw_mock_config() -> Optional[RawMockConfig]:
|
135
|
+
configuration_file_path = config.SFN_MOCK_CONFIG
|
136
|
+
if not configuration_file_path:
|
137
|
+
return None
|
138
|
+
|
139
|
+
try:
|
140
|
+
modified_time = int(os.path.getmtime(configuration_file_path))
|
141
|
+
except Exception as ex:
|
142
|
+
LOG.warning(
|
143
|
+
"Unable to access the step functions mock configuration file at '%s' due to %s",
|
144
|
+
configuration_file_path,
|
145
|
+
ex,
|
146
|
+
)
|
147
|
+
return None
|
148
|
+
|
149
|
+
mock_config = _read_sfn_raw_mock_config(configuration_file_path, modified_time)
|
150
|
+
return mock_config
|
@@ -150,6 +150,10 @@ from localstack.services.stepfunctions.backend.store import SFNStore, sfn_stores
|
|
150
150
|
from localstack.services.stepfunctions.backend.test_state.execution import (
|
151
151
|
TestStateExecution,
|
152
152
|
)
|
153
|
+
from localstack.services.stepfunctions.mocking.mock_config import (
|
154
|
+
MockTestCase,
|
155
|
+
load_mock_test_case_for,
|
156
|
+
)
|
153
157
|
from localstack.services.stepfunctions.stepfunctions_utils import (
|
154
158
|
assert_pagination_parameters_valid,
|
155
159
|
get_next_page_token_from_arn,
|
@@ -180,7 +184,7 @@ class StepFunctionsProvider(StepfunctionsApi, ServiceLifecycleHook):
|
|
180
184
|
visitor.visit(sfn_stores)
|
181
185
|
|
182
186
|
_STATE_MACHINE_ARN_REGEX: Final[re.Pattern] = re.compile(
|
183
|
-
rf"{ARN_PARTITION_REGEX}:states:[a-z0-9-]+:[0-9]{{12}}:stateMachine:[a-zA-Z0-9-_.]+(:\d+)?(:[a-zA-Z0-9-_.]+)
|
187
|
+
rf"{ARN_PARTITION_REGEX}:states:[a-z0-9-]+:[0-9]{{12}}:stateMachine:[a-zA-Z0-9-_.]+(:\d+)?(:[a-zA-Z0-9-_.]+)*(?:#[a-zA-Z0-9-_]+)?$"
|
184
188
|
)
|
185
189
|
|
186
190
|
_STATE_MACHINE_EXECUTION_ARN_REGEX: Final[re.Pattern] = re.compile(
|
@@ -779,6 +783,12 @@ class StepFunctionsProvider(StepfunctionsApi, ServiceLifecycleHook):
|
|
779
783
|
) -> StartExecutionOutput:
|
780
784
|
self._validate_state_machine_arn(state_machine_arn)
|
781
785
|
|
786
|
+
state_machine_arn_parts = state_machine_arn.split("#")
|
787
|
+
state_machine_arn = state_machine_arn_parts[0]
|
788
|
+
mock_test_case_name = (
|
789
|
+
state_machine_arn_parts[1] if len(state_machine_arn_parts) == 2 else None
|
790
|
+
)
|
791
|
+
|
782
792
|
store = self.get_store(context=context)
|
783
793
|
|
784
794
|
alias: Optional[Alias] = store.aliases.get(state_machine_arn)
|
@@ -832,6 +842,18 @@ class StepFunctionsProvider(StepfunctionsApi, ServiceLifecycleHook):
|
|
832
842
|
configuration=state_machine_clone.cloud_watch_logging_configuration,
|
833
843
|
)
|
834
844
|
|
845
|
+
mock_test_case: Optional[MockTestCase] = None
|
846
|
+
if mock_test_case_name is not None:
|
847
|
+
state_machine_name = state_machine_clone.name
|
848
|
+
mock_test_case = load_mock_test_case_for(
|
849
|
+
state_machine_name=state_machine_name, test_case_name=mock_test_case_name
|
850
|
+
)
|
851
|
+
if mock_test_case is None:
|
852
|
+
raise InvalidName(
|
853
|
+
f"Invalid mock test case name '{mock_test_case_name}' "
|
854
|
+
f"for state machine '{state_machine_name}'"
|
855
|
+
)
|
856
|
+
|
835
857
|
execution = Execution(
|
836
858
|
name=exec_name,
|
837
859
|
sm_type=state_machine_clone.sm_type,
|
@@ -846,6 +868,7 @@ class StepFunctionsProvider(StepfunctionsApi, ServiceLifecycleHook):
|
|
846
868
|
input_data=input_data,
|
847
869
|
trace_header=trace_header,
|
848
870
|
activity_store=self.get_store(context).activities,
|
871
|
+
mock_test_case=mock_test_case,
|
849
872
|
)
|
850
873
|
|
851
874
|
store.executions[exec_arn] = execution
|
@@ -383,6 +383,7 @@ def create_state_machine_with_iam_role(
|
|
383
383
|
snapshot,
|
384
384
|
definition: Definition,
|
385
385
|
logging_configuration: Optional[LoggingConfiguration] = None,
|
386
|
+
state_machine_name: Optional[str] = None,
|
386
387
|
):
|
387
388
|
snf_role_arn = create_state_machine_iam_role(target_aws_client=target_aws_client)
|
388
389
|
snapshot.add_transformer(RegexTransformer(snf_role_arn, "snf_role_arn"))
|
@@ -396,7 +397,7 @@ def create_state_machine_with_iam_role(
|
|
396
397
|
RegexTransformer("Request ID: [a-zA-Z0-9-]+", "Request ID: <request_id>")
|
397
398
|
)
|
398
399
|
|
399
|
-
sm_name: str = f"statemachine_create_and_record_execution_{short_uid()}"
|
400
|
+
sm_name: str = state_machine_name or f"statemachine_create_and_record_execution_{short_uid()}"
|
400
401
|
create_arguments = {
|
401
402
|
"name": sm_name,
|
402
403
|
"definition": definition,
|
@@ -450,6 +451,42 @@ def launch_and_record_execution(
|
|
450
451
|
return execution_arn
|
451
452
|
|
452
453
|
|
454
|
+
def launch_and_record_mocked_execution(
|
455
|
+
target_aws_client,
|
456
|
+
sfn_snapshot,
|
457
|
+
state_machine_arn,
|
458
|
+
execution_input,
|
459
|
+
test_name,
|
460
|
+
) -> LongArn:
|
461
|
+
stepfunctions_client = target_aws_client.stepfunctions
|
462
|
+
exec_resp = stepfunctions_client.start_execution(
|
463
|
+
stateMachineArn=f"{state_machine_arn}#{test_name}", input=execution_input
|
464
|
+
)
|
465
|
+
sfn_snapshot.add_transformer(sfn_snapshot.transform.sfn_sm_exec_arn(exec_resp, 0))
|
466
|
+
execution_arn = exec_resp["executionArn"]
|
467
|
+
|
468
|
+
await_execution_terminated(
|
469
|
+
stepfunctions_client=stepfunctions_client, execution_arn=execution_arn
|
470
|
+
)
|
471
|
+
|
472
|
+
get_execution_history = stepfunctions_client.get_execution_history(executionArn=execution_arn)
|
473
|
+
|
474
|
+
# Transform all map runs if any.
|
475
|
+
try:
|
476
|
+
map_run_arns = extract_json("$..mapRunArn", get_execution_history)
|
477
|
+
if isinstance(map_run_arns, str):
|
478
|
+
map_run_arns = [map_run_arns]
|
479
|
+
for i, map_run_arn in enumerate(list(set(map_run_arns))):
|
480
|
+
sfn_snapshot.add_transformer(sfn_snapshot.transform.sfn_map_run_arn(map_run_arn, i))
|
481
|
+
except NoSuchJsonPathError:
|
482
|
+
# No mapRunArns
|
483
|
+
pass
|
484
|
+
|
485
|
+
sfn_snapshot.match("get_execution_history", get_execution_history)
|
486
|
+
|
487
|
+
return execution_arn
|
488
|
+
|
489
|
+
|
453
490
|
def launch_and_record_logs(
|
454
491
|
target_aws_client,
|
455
492
|
state_machine_arn,
|
@@ -513,6 +550,29 @@ def create_and_record_execution(
|
|
513
550
|
)
|
514
551
|
|
515
552
|
|
553
|
+
def create_and_record_mocked_execution(
|
554
|
+
target_aws_client,
|
555
|
+
create_state_machine_iam_role,
|
556
|
+
create_state_machine,
|
557
|
+
sfn_snapshot,
|
558
|
+
definition,
|
559
|
+
execution_input,
|
560
|
+
state_machine_name,
|
561
|
+
test_name,
|
562
|
+
):
|
563
|
+
state_machine_arn = create_state_machine_with_iam_role(
|
564
|
+
target_aws_client,
|
565
|
+
create_state_machine_iam_role,
|
566
|
+
create_state_machine,
|
567
|
+
sfn_snapshot,
|
568
|
+
definition,
|
569
|
+
state_machine_name=state_machine_name,
|
570
|
+
)
|
571
|
+
launch_and_record_mocked_execution(
|
572
|
+
target_aws_client, sfn_snapshot, state_machine_arn, execution_input, test_name
|
573
|
+
)
|
574
|
+
|
575
|
+
|
516
576
|
def create_and_record_logs(
|
517
577
|
target_aws_client,
|
518
578
|
create_state_machine_iam_role,
|
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.dev64'
|
21
|
+
__version_tuple__ = version_tuple = (4, 3, 1, 'dev64')
|
@@ -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=WYz10QKNJCWgTjRGKhMUpUosiKRp_GH_FZt8jkS5rtA,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
|
@@ -786,7 +786,7 @@ localstack/services/ssm/resource_providers/aws_ssm_patchbaseline_plugin.py,sha25
|
|
786
786
|
localstack/services/stepfunctions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
787
787
|
localstack/services/stepfunctions/packages.py,sha256=RZblddr9VARCXqtCeFn_Z6FmyLerWP1-REkJ-spi1Ko,1705
|
788
788
|
localstack/services/stepfunctions/plugins.py,sha256=oY-qlTgrZHUalqoeIV4v9mkpC5cpMRUN_PX4YMPFMMI,324
|
789
|
-
localstack/services/stepfunctions/provider.py,sha256=
|
789
|
+
localstack/services/stepfunctions/provider.py,sha256=oeezfdzX_6tCVMUqdq7McD3Kb1Ij1wBc9PrVTLqbpXo,69964
|
790
790
|
localstack/services/stepfunctions/quotas.py,sha256=FprfsAD-_IziguWQnR-b3VA7QYhFdQzItuMLOwl9_FU,484
|
791
791
|
localstack/services/stepfunctions/stepfunctions_utils.py,sha256=8LUfXJ3N1LC_y2QIe_TgHIVIkoQLhS0R4i6aXiSMink,2340
|
792
792
|
localstack/services/stepfunctions/usage.py,sha256=rcn58eYuAEb8KRmj4YMcjO4eXryqUo8bV9wvo7xyhjg,349
|
@@ -1028,13 +1028,14 @@ localstack/services/stepfunctions/asl/component/state/state_execution/state_para
|
|
1028
1028
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1029
1029
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/credentials.py,sha256=Q1YMVbcVe8k5QLwarwjIzCXqP0KdUQ35uBFU2FLXH54,1071
|
1030
1030
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/lambda_eval_utils.py,sha256=IwDqRb5Nbwofp6kTsji3ww4d6IBuWrFrCBJET1K7oGU,2765
|
1031
|
+
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/mock_eval_utils.py,sha256=GGAQDDno38i5AoXJ1sz_QGX0YYlr0UpUmbXZ2dLyagE,1883
|
1031
1032
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task.py,sha256=eKy-fDc-xOgDYnBHKobSLpnC2U2kRLMKJ2lCuj__ZVk,3766
|
1032
1033
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task_activitiy.py,sha256=GQ1CGe9PUOVOF2k2h7ORxAeTL4nYlg7RjVJuYsXyX0M,8858
|
1033
1034
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task_factory.py,sha256=0k5_0BJ2d-wQn6VbvGcAXh6vIZT1IhAF92BmyD6AZNM,1337
|
1034
1035
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task_lambda.py,sha256=cR2_JVaIiCdInzlLEssOoHUK7t9RXl7alTc5jLOGhac,7467
|
1035
1036
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1036
1037
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/resource.py,sha256=Z1pe7EVQe5lmU9A25iZEx20ovmnJJ8DARDg46NWfdAs,5272
|
1037
|
-
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service.py,sha256=
|
1038
|
+
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service.py,sha256=SYZDmGli8dJMT-ASqpV0hGd8ymBaGu_w4AwB18fi1gc,16187
|
1038
1039
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_api_gateway.py,sha256=YCAmxhDaLMuWQwzOkou3ruX_0w7uNtOkz4M4qkBRPdw,11254
|
1039
1040
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_aws_sdk.py,sha256=VO68Yw75_efYlJbFkMI6zUPGQFaHXjd5k55RXyyboBU,5851
|
1040
1041
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_batch.py,sha256=z3JlCNsiLdWs_R8zAiA8-MmDr9kQYzZ6DO3UZ_iFYOg,8164
|
@@ -1073,7 +1074,7 @@ localstack/services/stepfunctions/asl/component/test_state/state/test_state_stat
|
|
1073
1074
|
localstack/services/stepfunctions/asl/eval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1074
1075
|
localstack/services/stepfunctions/asl/eval/contex_object.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1075
1076
|
localstack/services/stepfunctions/asl/eval/count_down_latch.py,sha256=Ls1iaL0gRznuEj9pf17EwQL1DFMWj7n9UA2GkwTtg5o,498
|
1076
|
-
localstack/services/stepfunctions/asl/eval/environment.py,sha256=
|
1077
|
+
localstack/services/stepfunctions/asl/eval/environment.py,sha256=ixZ7KB1th3G5y7iAYC-MqXYjn5h0_h-hbq2FcXLxmg4,11523
|
1077
1078
|
localstack/services/stepfunctions/asl/eval/evaluation_details.py,sha256=uBWzdUEXdXFnLqvLsGyT12gbUnZo_556W6tG8JsS7UQ,1675
|
1078
1079
|
localstack/services/stepfunctions/asl/eval/program_state.py,sha256=gJtr8cazw_mS0BhkEFEjV9NXgxuoSt5K6UneytRzXtI,1829
|
1079
1080
|
localstack/services/stepfunctions/asl/eval/states.py,sha256=uLQd9j94NKzKs-JsbqSVLYYLBtWzVnrYaMNLCWcQz4k,5373
|
@@ -1117,8 +1118,8 @@ localstack/services/stepfunctions/asl/utils/json_path.py,sha256=Its-8J-JCd9hvam9
|
|
1117
1118
|
localstack/services/stepfunctions/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1118
1119
|
localstack/services/stepfunctions/backend/activity.py,sha256=O0mPxXtSSg04-enVIL7e62qB4PYwiidoy0NymHOc9Dk,1371
|
1119
1120
|
localstack/services/stepfunctions/backend/alias.py,sha256=5u7yugVzFUs6lcaomVAOh2tsZHk2mbm5YzCLWLrJatg,4566
|
1120
|
-
localstack/services/stepfunctions/backend/execution.py,sha256=
|
1121
|
-
localstack/services/stepfunctions/backend/execution_worker.py,sha256=
|
1121
|
+
localstack/services/stepfunctions/backend/execution.py,sha256=1Jy1ir3dGGxwpLwy07A_94dwYQQQtD7UdhZ_aQoVdUI,16854
|
1122
|
+
localstack/services/stepfunctions/backend/execution_worker.py,sha256=f_b8QUArn0C51P_f0XUjcDS3EFhAZ2RFGKBjk2xn6co,5190
|
1122
1123
|
localstack/services/stepfunctions/backend/execution_worker_comm.py,sha256=61yq2i_KAPFZj-f6kd5TETR0VT2xkOLmaOUkwxnuIvw,387
|
1123
1124
|
localstack/services/stepfunctions/backend/state_machine.py,sha256=14KdKg6ugJoVrrbH5X47uUh3tODtWdWc5_MWX5Qc_vs,9581
|
1124
1125
|
localstack/services/stepfunctions/backend/store.py,sha256=eslh4iDAyXzBqZ0cN40GVQKdAzh1I0Sp-Jf8K2upk6o,1127
|
@@ -1126,7 +1127,8 @@ localstack/services/stepfunctions/backend/test_state/__init__.py,sha256=47DEQpj8
|
|
1126
1127
|
localstack/services/stepfunctions/backend/test_state/execution.py,sha256=LPhZZqtWDbzucmeBqv4CrSF4rnERBnbtG4zZWhtCkxs,5359
|
1127
1128
|
localstack/services/stepfunctions/backend/test_state/execution_worker.py,sha256=aVUEriNB9GwU4nG5VE2PsSBbxQfMFq_4Xu4ZfkvaT0Y,2222
|
1128
1129
|
localstack/services/stepfunctions/mocking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1129
|
-
localstack/services/stepfunctions/mocking/mock_config.py,sha256=
|
1130
|
+
localstack/services/stepfunctions/mocking/mock_config.py,sha256=c4SenwX-IOGGLaENM8vUbHub229WdzkNzkosTE5Mnmw,8497
|
1131
|
+
localstack/services/stepfunctions/mocking/mock_config_file.py,sha256=vz2kx1ucfDWjaXKyAqmTH0dwrKlZeiKqI7-V6q07Aoc,4669
|
1130
1132
|
localstack/services/stepfunctions/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1131
1133
|
localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity.py,sha256=L25dn8_OwbwJ6zl_ILU52mmZYzZBhBnxJ1x9pxrfzKc,3106
|
1132
1134
|
localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity.schema.json,sha256=WDwzo5Nduv6UxSPqG-bL26lgXH-qSNYuSQcVpop20ls,1864
|
@@ -1178,7 +1180,7 @@ localstack/testing/pytest/cloudformation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5
|
|
1178
1180
|
localstack/testing/pytest/cloudformation/fixtures.py,sha256=0R7SFKkSrYvdjt5bC8VjutfJgXO1M9lALwPYdrrfP8U,6434
|
1179
1181
|
localstack/testing/pytest/stepfunctions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1180
1182
|
localstack/testing/pytest/stepfunctions/fixtures.py,sha256=m9gdU7opK1LoDKuUDTJKcuUfWi4LWHw0idL0_GNlkfo,32817
|
1181
|
-
localstack/testing/pytest/stepfunctions/utils.py,sha256=
|
1183
|
+
localstack/testing/pytest/stepfunctions/utils.py,sha256=aechTLBRPsek6VhnfC5j6IYDzz-9UcwZ5ojroYneP8Y,29281
|
1182
1184
|
localstack/testing/scenario/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1183
1185
|
localstack/testing/scenario/cdk_lambda_helper.py,sha256=FdFDOTykrtqfP_FRJftijkUjwMbIY-DL9ovAtQwPBb4,8609
|
1184
1186
|
localstack/testing/scenario/provisioning.py,sha256=yo8E-fyspL6gG_46yZhmNce9nryf1oSZ4CiXteJMY14,18527
|
@@ -1277,13 +1279,13 @@ localstack/utils/server/tcp_proxy.py,sha256=rR6d5jR0ozDvIlpHiqW0cfyY9a2fRGdOzyA8
|
|
1277
1279
|
localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1278
1280
|
localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
|
1279
1281
|
localstack/utils/xray/traceid.py,sha256=SQSsMV2rhbTNK6ceIoozZYuGU7Fg687EXcgqxoDl1Fw,1106
|
1280
|
-
localstack_core-4.3.1.
|
1281
|
-
localstack_core-4.3.1.
|
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.
|
1282
|
+
localstack_core-4.3.1.dev64.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
|
1283
|
+
localstack_core-4.3.1.dev64.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
|
1284
|
+
localstack_core-4.3.1.dev64.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
|
1285
|
+
localstack_core-4.3.1.dev64.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
|
1286
|
+
localstack_core-4.3.1.dev64.dist-info/METADATA,sha256=ZCowZF2Hm01sorcpWBD46mM2l6kOhmwx0c8JMVbPcZo,5499
|
1287
|
+
localstack_core-4.3.1.dev64.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
1288
|
+
localstack_core-4.3.1.dev64.dist-info/entry_points.txt,sha256=UqGFR0MPKa2sfresdqiCpqBZuWyRxCb3UG77oPVMzVA,20564
|
1289
|
+
localstack_core-4.3.1.dev64.dist-info/plux.json,sha256=j6D_smBuJw23QaL0IJI9mz-ZhLfPnjqJ4a9QGZ_3KbE,20786
|
1290
|
+
localstack_core-4.3.1.dev64.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
|
1291
|
+
localstack_core-4.3.1.dev64.dist-info/RECORD,,
|
@@ -0,0 +1 @@
|
|
1
|
+
{"localstack.cloudformation.resource_providers": ["AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "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::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "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::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "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::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::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::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "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::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin"], "localstack.hooks.on_infra_start": ["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", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.hooks.on_infra_shutdown": ["stop_server=localstack.dns.plugins:stop_server", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "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", "publish_metrics=localstack.utils.analytics.metrics:publish_metrics"], "localstack.packages": ["elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_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", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "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.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"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"localstack.cloudformation.resource_providers": ["AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "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::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"], "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.hooks.on_infra_start": ["_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_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "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", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches"], "localstack.packages": ["ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package"], "localstack.hooks.on_infra_shutdown": ["remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "run_on_after_service_shutdown_handlers=localstack.runtime.shutdown:run_on_after_service_shutdown_handlers", "run_shutdown_handlers=localstack.runtime.shutdown:run_shutdown_handlers", "shutdown_services=localstack.runtime.shutdown:shutdown_services", "stop_server=localstack.dns.plugins:stop_server", "aggregate_and_send=localstack.utils.analytics.usage:aggregate_and_send", "publish_metrics=localstack.utils.analytics.metrics: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.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.aws.provider": ["acm:default=localstack.services.providers:acm", "apigateway:default=localstack.services.providers:apigateway", "apigateway:legacy=localstack.services.providers:apigateway_legacy", "apigateway:next_gen=localstack.services.providers:apigateway_next_gen", "config:default=localstack.services.providers:awsconfig", "cloudformation:default=localstack.services.providers:cloudformation", "cloudformation:engine-v2=localstack.services.providers:cloudformation_v2", "cloudwatch:default=localstack.services.providers:cloudwatch", "cloudwatch:v1=localstack.services.providers:cloudwatch_v1", "cloudwatch:v2=localstack.services.providers:cloudwatch_v2", "dynamodb:default=localstack.services.providers:dynamodb", "dynamodb:v2=localstack.services.providers:dynamodb_v2", "dynamodbstreams:default=localstack.services.providers:dynamodbstreams", "dynamodbstreams:v2=localstack.services.providers:dynamodbstreams_v2", "ec2:default=localstack.services.providers:ec2", "es:default=localstack.services.providers:es", "events:default=localstack.services.providers:events", "events:legacy=localstack.services.providers:events_legacy", "events:v1=localstack.services.providers:events_v1", "events:v2=localstack.services.providers:events_v2", "firehose:default=localstack.services.providers:firehose", "iam:default=localstack.services.providers:iam", "kinesis:default=localstack.services.providers:kinesis", "kms:default=localstack.services.providers:kms", "lambda:default=localstack.services.providers:lambda_", "lambda:asf=localstack.services.providers:lambda_asf", "lambda:v2=localstack.services.providers:lambda_v2", "logs:default=localstack.services.providers:logs", "opensearch:default=localstack.services.providers:opensearch", "redshift:default=localstack.services.providers:redshift", "resource-groups:default=localstack.services.providers:resource_groups", "resourcegroupstaggingapi:default=localstack.services.providers:resourcegroupstaggingapi", "route53:default=localstack.services.providers:route53", "route53resolver:default=localstack.services.providers:route53resolver", "s3:default=localstack.services.providers:s3", "s3control:default=localstack.services.providers:s3control", "scheduler:default=localstack.services.providers:scheduler", "secretsmanager:default=localstack.services.providers:secretsmanager", "ses:default=localstack.services.providers:ses", "sns:default=localstack.services.providers:sns", "sqs:default=localstack.services.providers:sqs", "ssm:default=localstack.services.providers:ssm", "stepfunctions:default=localstack.services.providers:stepfunctions", "stepfunctions:v2=localstack.services.providers:stepfunctions_v2", "sts:default=localstack.services.providers:sts", "support:default=localstack.services.providers:support", "swf:default=localstack.services.providers:swf", "transcribe:default=localstack.services.providers:transcribe"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"]}
|
File without changes
|
{localstack_core-4.3.1.dev63.data → localstack_core-4.3.1.dev64.data}/scripts/localstack-supervisor
RENAMED
File without changes
|
{localstack_core-4.3.1.dev63.data → localstack_core-4.3.1.dev64.data}/scripts/localstack.bat
RENAMED
File without changes
|
File without changes
|
{localstack_core-4.3.1.dev63.dist-info → localstack_core-4.3.1.dev64.dist-info}/entry_points.txt
RENAMED
File without changes
|
{localstack_core-4.3.1.dev63.dist-info → localstack_core-4.3.1.dev64.dist-info}/licenses/LICENSE.txt
RENAMED
File without changes
|
{localstack_core-4.3.1.dev63.dist-info → localstack_core-4.3.1.dev64.dist-info}/top_level.txt
RENAMED
File without changes
|