localstack-core 4.2.1.dev19__py3-none-any.whl → 4.2.1.dev21__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.
Files changed (20) hide show
  1. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/distributed_iteration_component.py +25 -65
  2. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/inline_iteration_component.py +16 -18
  3. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/distributed_item_processor.py +12 -11
  4. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/inline_item_processor.py +10 -8
  5. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_component.py +3 -0
  6. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/distributed_iterator.py +11 -10
  7. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator.py +10 -5
  8. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/state_map.py +28 -19
  9. localstack/version.py +2 -2
  10. {localstack_core-4.2.1.dev19.dist-info → localstack_core-4.2.1.dev21.dist-info}/METADATA +1 -1
  11. {localstack_core-4.2.1.dev19.dist-info → localstack_core-4.2.1.dev21.dist-info}/RECORD +19 -19
  12. localstack_core-4.2.1.dev21.dist-info/plux.json +1 -0
  13. localstack_core-4.2.1.dev19.dist-info/plux.json +0 -1
  14. {localstack_core-4.2.1.dev19.data → localstack_core-4.2.1.dev21.data}/scripts/localstack +0 -0
  15. {localstack_core-4.2.1.dev19.data → localstack_core-4.2.1.dev21.data}/scripts/localstack-supervisor +0 -0
  16. {localstack_core-4.2.1.dev19.data → localstack_core-4.2.1.dev21.data}/scripts/localstack.bat +0 -0
  17. {localstack_core-4.2.1.dev19.dist-info → localstack_core-4.2.1.dev21.dist-info}/LICENSE.txt +0 -0
  18. {localstack_core-4.2.1.dev19.dist-info → localstack_core-4.2.1.dev21.dist-info}/WHEEL +0 -0
  19. {localstack_core-4.2.1.dev19.dist-info → localstack_core-4.2.1.dev21.dist-info}/entry_points.txt +0 -0
  20. {localstack_core-4.2.1.dev19.dist-info → localstack_core-4.2.1.dev21.dist-info}/top_level.txt +0 -0
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import abc
4
4
  import json
5
- import threading
6
5
  from typing import Any, Final, Optional
7
6
 
8
7
  from localstack.aws.api.stepfunctions import (
@@ -36,9 +35,6 @@ from localstack.services.stepfunctions.asl.component.state.state_execution.state
36
35
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.itemprocessor.processor_config import (
37
36
  ProcessorConfig,
38
37
  )
39
- from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.iteration_worker import (
40
- IterationWorker,
41
- )
42
38
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.job import (
43
39
  JobClosed,
44
40
  JobPool,
@@ -56,6 +52,7 @@ from localstack.services.stepfunctions.asl.eval.event.event_manager import (
56
52
  class DistributedIterationComponentEvalInput(InlineIterationComponentEvalInput):
57
53
  item_reader: Final[Optional[ItemReader]]
58
54
  label: Final[Optional[str]]
55
+ map_run_record: Final[MapRunRecord]
59
56
 
60
57
  def __init__(
61
58
  self,
@@ -68,6 +65,7 @@ class DistributedIterationComponentEvalInput(InlineIterationComponentEvalInput):
68
65
  tolerated_failure_count: int,
69
66
  tolerated_failure_percentage: float,
70
67
  label: Optional[str],
68
+ map_run_record: MapRunRecord,
71
69
  ):
72
70
  super().__init__(
73
71
  state_name=state_name,
@@ -80,14 +78,10 @@ class DistributedIterationComponentEvalInput(InlineIterationComponentEvalInput):
80
78
  self.tolerated_failure_count = tolerated_failure_count
81
79
  self.tolerated_failure_percentage = tolerated_failure_percentage
82
80
  self.label = label
81
+ self.map_run_record = map_run_record
83
82
 
84
83
 
85
84
  class DistributedIterationComponent(InlineIterationComponent, abc.ABC):
86
- _eval_input: Optional[DistributedIterationComponentEvalInput]
87
- _mutex: Final[threading.Lock]
88
- _map_run_record: Optional[MapRunRecord]
89
- _workers: list[IterationWorker]
90
-
91
85
  def __init__(
92
86
  self,
93
87
  query_language: QueryLanguage,
@@ -103,89 +97,59 @@ class DistributedIterationComponent(InlineIterationComponent, abc.ABC):
103
97
  comment=comment,
104
98
  processor_config=processor_config,
105
99
  )
106
- self._mutex = threading.Lock()
107
- self._map_run_record = None
108
- self._workers = list()
109
-
110
- @abc.abstractmethod
111
- def _create_worker(self, env: Environment) -> IterationWorker: ...
112
-
113
- def _launch_worker(self, env: Environment) -> IterationWorker:
114
- worker = super()._launch_worker(env=env)
115
- self._workers.append(worker)
116
- return worker
117
-
118
- def _set_active_workers(self, workers_number: int, env: Environment) -> None:
119
- with self._mutex:
120
- current_workers_number = len(self._workers)
121
- workers_diff = workers_number - current_workers_number
122
- if workers_diff > 0:
123
- for _ in range(workers_diff):
124
- self._launch_worker(env=env)
125
- elif workers_diff < 0:
126
- deletion_workers = list(self._workers)[workers_diff:]
127
- for worker in deletion_workers:
128
- worker.sig_stop()
129
- self._workers.remove(worker)
130
-
131
- def _map_run(self, env: Environment) -> None:
100
+
101
+ def _map_run(
102
+ self, env: Environment, eval_input: DistributedIterationComponentEvalInput
103
+ ) -> None:
132
104
  input_items: list[json] = env.stack.pop()
133
105
 
134
106
  input_item_program: Final[Program] = self._get_iteration_program()
135
- self._job_pool = JobPool(job_program=input_item_program, job_inputs=input_items)
107
+ job_pool = JobPool(job_program=input_item_program, job_inputs=input_items)
136
108
 
137
109
  # TODO: add watch on map_run_record update event and adjust the number of running workers accordingly.
138
- max_concurrency = self._map_run_record.max_concurrency
110
+ max_concurrency = eval_input.map_run_record.max_concurrency
139
111
  workers_number = (
140
112
  len(input_items)
141
113
  if max_concurrency == DEFAULT_MAX_CONCURRENCY_VALUE
142
114
  else max_concurrency
143
115
  )
144
- self._set_active_workers(workers_number=workers_number, env=env)
116
+ for _ in range(workers_number):
117
+ self._launch_worker(env=env, eval_input=eval_input, job_pool=job_pool)
145
118
 
146
- self._job_pool.await_jobs()
119
+ job_pool.await_jobs()
147
120
 
148
- worker_exception: Optional[Exception] = self._job_pool.get_worker_exception()
121
+ worker_exception: Optional[Exception] = job_pool.get_worker_exception()
149
122
  if worker_exception is not None:
150
123
  raise worker_exception
151
124
 
152
- closed_jobs: list[JobClosed] = self._job_pool.get_closed_jobs()
125
+ closed_jobs: list[JobClosed] = job_pool.get_closed_jobs()
153
126
  outputs: list[Any] = [closed_job.job_output for closed_job in closed_jobs]
154
127
 
155
128
  env.stack.append(outputs)
156
129
 
157
130
  def _eval_body(self, env: Environment) -> None:
158
- self._eval_input = env.stack.pop()
159
-
160
- self._map_run_record = MapRunRecord(
161
- state_machine_arn=env.states.context_object.context_object_data["StateMachine"]["Id"],
162
- execution_arn=env.states.context_object.context_object_data["Execution"]["Id"],
163
- max_concurrency=self._eval_input.max_concurrency,
164
- tolerated_failure_count=self._eval_input.tolerated_failure_count,
165
- tolerated_failure_percentage=self._eval_input.tolerated_failure_percentage,
166
- label=self._eval_input.label,
167
- )
168
- env.map_run_record_pool_manager.add(self._map_run_record)
131
+ eval_input: DistributedIterationComponentEvalInput = env.stack.pop()
132
+ map_run_record = eval_input.map_run_record
169
133
 
170
134
  env.event_manager.add_event(
171
135
  context=env.event_history_context,
172
136
  event_type=HistoryEventType.MapRunStarted,
173
137
  event_details=EventDetails(
174
138
  mapRunStartedEventDetails=MapRunStartedEventDetails(
175
- mapRunArn=self._map_run_record.map_run_arn
139
+ mapRunArn=map_run_record.map_run_arn
176
140
  )
177
141
  ),
178
142
  )
179
143
 
180
144
  parent_event_manager = env.event_manager
181
145
  try:
182
- if self._eval_input.item_reader:
183
- self._eval_input.item_reader.eval(env=env)
146
+ if eval_input.item_reader:
147
+ eval_input.item_reader.eval(env=env)
184
148
  else:
185
- env.stack.append(self._eval_input.input_items)
149
+ env.stack.append(eval_input.input_items)
186
150
 
187
151
  env.event_manager = EventManager()
188
- self._map_run(env=env)
152
+ self._map_run(env=env, eval_input=eval_input)
189
153
 
190
154
  except FailureEventException as failure_event_ex:
191
155
  map_run_fail_event_detail = MapRunFailedEventDetails()
@@ -204,7 +168,7 @@ class DistributedIterationComponent(InlineIterationComponent, abc.ABC):
204
168
  event_type=HistoryEventType.MapRunFailed,
205
169
  event_details=EventDetails(mapRunFailedEventDetails=map_run_fail_event_detail),
206
170
  )
207
- self._map_run_record.set_stop(status=MapRunStatus.FAILED)
171
+ map_run_record.set_stop(status=MapRunStatus.FAILED)
208
172
  raise failure_event_ex
209
173
 
210
174
  except Exception as ex:
@@ -214,17 +178,13 @@ class DistributedIterationComponent(InlineIterationComponent, abc.ABC):
214
178
  event_type=HistoryEventType.MapRunFailed,
215
179
  event_details=EventDetails(mapRunFailedEventDetails=MapRunFailedEventDetails()),
216
180
  )
217
- self._map_run_record.set_stop(status=MapRunStatus.FAILED)
181
+ map_run_record.set_stop(status=MapRunStatus.FAILED)
218
182
  raise ex
219
183
  finally:
220
184
  env.event_manager = parent_event_manager
221
- self._eval_input = None
222
- self._workers.clear()
223
185
 
224
- # TODO: review workflow of program stops and maprunstops
225
- # program_state = env.program_state()
226
- # if isinstance(program_state, ProgramSucceeded)
186
+ # TODO: review workflow of program stops and map run stops
227
187
  env.event_manager.add_event(
228
188
  context=env.event_history_context, event_type=HistoryEventType.MapRunSucceeded
229
189
  )
230
- self._map_run_record.set_stop(status=MapRunStatus.SUCCEEDED)
190
+ map_run_record.set_stop(status=MapRunStatus.SUCCEEDED)
@@ -58,8 +58,6 @@ class InlineIterationComponentEvalInput:
58
58
 
59
59
  class InlineIterationComponent(IterationComponent, abc.ABC):
60
60
  _processor_config: Final[ProcessorConfig]
61
- _eval_input: Optional[InlineIterationComponentEvalInput]
62
- _job_pool: Optional[JobPool]
63
61
 
64
62
  def __init__(
65
63
  self,
@@ -73,29 +71,29 @@ class InlineIterationComponent(IterationComponent, abc.ABC):
73
71
  query_language=query_language, start_at=start_at, states=states, comment=comment
74
72
  )
75
73
  self._processor_config = processor_config
76
- self._eval_input = None
77
- self._job_pool = None
78
74
 
79
75
  @abc.abstractmethod
80
- def _create_worker(self, env: Environment) -> IterationWorker: ...
81
-
82
- def _launch_worker(self, env: Environment) -> IterationWorker:
83
- worker = self._create_worker(env=env)
76
+ def _create_worker(
77
+ self, env: Environment, eval_input: InlineIterationComponentEvalInput, job_pool: JobPool
78
+ ) -> IterationWorker: ...
79
+
80
+ def _launch_worker(
81
+ self, env: Environment, eval_input: InlineIterationComponentEvalInput, job_pool: JobPool
82
+ ) -> IterationWorker:
83
+ worker = self._create_worker(env=env, eval_input=eval_input, job_pool=job_pool)
84
84
  worker_thread = threading.Thread(target=worker.eval, daemon=True)
85
85
  TMP_THREADS.append(worker_thread)
86
86
  worker_thread.start()
87
87
  return worker
88
88
 
89
89
  def _eval_body(self, env: Environment) -> None:
90
- self._eval_input = env.stack.pop()
90
+ eval_input = env.stack.pop()
91
91
 
92
- max_concurrency: int = self._eval_input.max_concurrency
93
- input_items: list[json] = self._eval_input.input_items
92
+ max_concurrency: int = eval_input.max_concurrency
93
+ input_items: list[json] = eval_input.input_items
94
94
 
95
95
  input_item_program: Final[Program] = self._get_iteration_program()
96
- self._job_pool = JobPool(
97
- job_program=input_item_program, job_inputs=self._eval_input.input_items
98
- )
96
+ job_pool = JobPool(job_program=input_item_program, job_inputs=eval_input.input_items)
99
97
 
100
98
  number_of_workers = (
101
99
  len(input_items)
@@ -103,15 +101,15 @@ class InlineIterationComponent(IterationComponent, abc.ABC):
103
101
  else max_concurrency
104
102
  )
105
103
  for _ in range(number_of_workers):
106
- self._launch_worker(env=env)
104
+ self._launch_worker(env=env, eval_input=eval_input, job_pool=job_pool)
107
105
 
108
- self._job_pool.await_jobs()
106
+ job_pool.await_jobs()
109
107
 
110
- worker_exception: Optional[Exception] = self._job_pool.get_worker_exception()
108
+ worker_exception: Optional[Exception] = job_pool.get_worker_exception()
111
109
  if worker_exception is not None:
112
110
  raise worker_exception
113
111
 
114
- closed_jobs: list[JobClosed] = self._job_pool.get_closed_jobs()
112
+ closed_jobs: list[JobClosed] = job_pool.get_closed_jobs()
115
113
  outputs: list[Any] = [closed_job.job_output for closed_job in closed_jobs]
116
114
 
117
115
  env.stack.append(outputs)
@@ -1,7 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Optional
4
-
5
3
  from localstack.services.stepfunctions.asl.component.common.comment import Comment
6
4
  from localstack.services.stepfunctions.asl.component.common.flow.start_at import StartAt
7
5
  from localstack.services.stepfunctions.asl.component.common.query_language import QueryLanguage
@@ -16,6 +14,9 @@ from localstack.services.stepfunctions.asl.component.state.state_execution.state
16
14
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.itemprocessor.processor_config import (
17
15
  ProcessorConfig,
18
16
  )
17
+ from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.job import (
18
+ JobPool,
19
+ )
19
20
  from localstack.services.stepfunctions.asl.eval.environment import Environment
20
21
  from localstack.services.stepfunctions.asl.parse.typed_props import TypedProps
21
22
 
@@ -25,8 +26,6 @@ class DistributedItemProcessorEvalInput(DistributedIterationComponentEvalInput):
25
26
 
26
27
 
27
28
  class DistributedItemProcessor(DistributedIterationComponent):
28
- _eval_input: Optional[DistributedItemProcessorEvalInput]
29
-
30
29
  @classmethod
31
30
  def from_props(cls, props: TypedProps) -> DistributedItemProcessor:
32
31
  item_processor = cls(
@@ -44,13 +43,15 @@ class DistributedItemProcessor(DistributedIterationComponent):
44
43
  )
45
44
  return item_processor
46
45
 
47
- def _create_worker(self, env: Environment) -> DistributedItemProcessorWorker:
46
+ def _create_worker(
47
+ self, env: Environment, eval_input: DistributedItemProcessorEvalInput, job_pool: JobPool
48
+ ) -> DistributedItemProcessorWorker:
48
49
  return DistributedItemProcessorWorker(
49
- work_name=self._eval_input.state_name,
50
- job_pool=self._job_pool,
50
+ work_name=eval_input.state_name,
51
+ job_pool=job_pool,
51
52
  env=env,
52
- item_reader=self._eval_input.item_reader,
53
- parameters=self._eval_input.parameters,
54
- item_selector=self._eval_input.item_selector,
55
- map_run_record=self._map_run_record,
53
+ item_reader=eval_input.item_reader,
54
+ parameters=eval_input.parameters,
55
+ item_selector=eval_input.item_selector,
56
+ map_run_record=eval_input.map_run_record,
56
57
  )
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import logging
4
- from typing import Optional
5
4
 
6
5
  from localstack.services.stepfunctions.asl.component.common.comment import Comment
7
6
  from localstack.services.stepfunctions.asl.component.common.flow.start_at import StartAt
@@ -17,6 +16,9 @@ from localstack.services.stepfunctions.asl.component.state.state_execution.state
17
16
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.itemprocessor.processor_config import (
18
17
  ProcessorConfig,
19
18
  )
19
+ from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.job import (
20
+ JobPool,
21
+ )
20
22
  from localstack.services.stepfunctions.asl.eval.environment import Environment
21
23
  from localstack.services.stepfunctions.asl.parse.typed_props import TypedProps
22
24
 
@@ -28,8 +30,6 @@ class InlineItemProcessorEvalInput(InlineIterationComponentEvalInput):
28
30
 
29
31
 
30
32
  class InlineItemProcessor(InlineIterationComponent):
31
- _eval_input: Optional[InlineItemProcessorEvalInput]
32
-
33
33
  @classmethod
34
34
  def from_props(cls, props: TypedProps) -> InlineItemProcessor:
35
35
  if not props.get(States):
@@ -45,11 +45,13 @@ class InlineItemProcessor(InlineIterationComponent):
45
45
  )
46
46
  return item_processor
47
47
 
48
- def _create_worker(self, env: Environment) -> InlineItemProcessorWorker:
48
+ def _create_worker(
49
+ self, env: Environment, eval_input: InlineItemProcessorEvalInput, job_pool: JobPool
50
+ ) -> InlineItemProcessorWorker:
49
51
  return InlineItemProcessorWorker(
50
- work_name=self._eval_input.state_name,
51
- job_pool=self._job_pool,
52
+ work_name=eval_input.state_name,
53
+ job_pool=job_pool,
52
54
  env=env,
53
- item_selector=self._eval_input.item_selector,
54
- parameters=self._eval_input.parameters,
55
+ item_selector=eval_input.item_selector,
56
+ parameters=eval_input.parameters,
55
57
  )
@@ -12,6 +12,9 @@ from localstack.services.stepfunctions.asl.component.program.states import State
12
12
 
13
13
 
14
14
  class IterationComponent(EvalComponent, abc.ABC):
15
+ # Ensure no member variables are used to keep track of the state of
16
+ # iteration components: the evaluation must be stateless as for all
17
+ # EvalComponents to ensure they can be reused or used concurrently.
15
18
  _query_language: Final[QueryLanguage]
16
19
  _start_at: Final[StartAt]
17
20
  _states: Final[States]
@@ -1,7 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Optional
4
-
5
3
  from localstack.services.stepfunctions.asl.component.common.comment import Comment
6
4
  from localstack.services.stepfunctions.asl.component.common.flow.start_at import StartAt
7
5
  from localstack.services.stepfunctions.asl.component.common.query_language import QueryLanguage
@@ -16,6 +14,9 @@ from localstack.services.stepfunctions.asl.component.state.state_execution.state
16
14
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.iterator.distributed_iterator_worker import (
17
15
  DistributedIteratorWorker,
18
16
  )
17
+ from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.job import (
18
+ JobPool,
19
+ )
19
20
  from localstack.services.stepfunctions.asl.eval.environment import Environment
20
21
  from localstack.services.stepfunctions.asl.parse.typed_props import TypedProps
21
22
 
@@ -25,8 +26,6 @@ class DistributedIteratorEvalInput(DistributedIterationComponentEvalInput):
25
26
 
26
27
 
27
28
  class DistributedIterator(DistributedIterationComponent):
28
- _eval_input: Optional[DistributedIteratorEvalInput]
29
-
30
29
  @classmethod
31
30
  def from_props(cls, props: TypedProps) -> DistributedIterator:
32
31
  item_processor = cls(
@@ -44,12 +43,14 @@ class DistributedIterator(DistributedIterationComponent):
44
43
  )
45
44
  return item_processor
46
45
 
47
- def _create_worker(self, env: Environment) -> DistributedIteratorWorker:
46
+ def _create_worker(
47
+ self, env: Environment, eval_input: DistributedIteratorEvalInput, job_pool: JobPool
48
+ ) -> DistributedIteratorWorker:
48
49
  return DistributedIteratorWorker(
49
- work_name=self._eval_input.state_name,
50
- job_pool=self._job_pool,
50
+ work_name=eval_input.state_name,
51
+ job_pool=job_pool,
51
52
  env=env,
52
- parameters=self._eval_input.parameters,
53
- map_run_record=self._map_run_record,
54
- item_selector=self._eval_input.item_selector,
53
+ parameters=eval_input.parameters,
54
+ map_run_record=eval_input.map_run_record,
55
+ item_selector=eval_input.item_selector,
55
56
  )
@@ -13,6 +13,9 @@ from localstack.services.stepfunctions.asl.component.state.state_execution.state
13
13
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.iterator.iterator_decl import (
14
14
  IteratorDecl,
15
15
  )
16
+ from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.job import (
17
+ JobPool,
18
+ )
16
19
  from localstack.services.stepfunctions.asl.eval.environment import Environment
17
20
 
18
21
  LOG = logging.getLogger(__name__)
@@ -25,13 +28,15 @@ class InlineIteratorEvalInput(InlineIterationComponentEvalInput):
25
28
  class InlineIterator(InlineIterationComponent):
26
29
  _eval_input: Optional[InlineIteratorEvalInput]
27
30
 
28
- def _create_worker(self, env: Environment) -> InlineIteratorWorker:
31
+ def _create_worker(
32
+ self, env: Environment, eval_input: InlineIteratorEvalInput, job_pool: JobPool
33
+ ) -> InlineIteratorWorker:
29
34
  return InlineIteratorWorker(
30
- work_name=self._eval_input.state_name,
31
- job_pool=self._job_pool,
35
+ work_name=eval_input.state_name,
36
+ job_pool=job_pool,
32
37
  env=env,
33
- parameters=self._eval_input.parameters,
34
- item_selector=self._eval_input.item_selector,
38
+ parameters=eval_input.parameters,
39
+ item_selector=eval_input.item_selector,
35
40
  )
36
41
 
37
42
  @classmethod
@@ -57,6 +57,9 @@ from localstack.services.stepfunctions.asl.component.state.state_execution.state
57
57
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.itemprocessor.item_processor_factory import (
58
58
  from_item_processor_decl,
59
59
  )
60
+ from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.itemprocessor.map_run_record import (
61
+ MapRunRecord,
62
+ )
60
63
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.iteration_component import (
61
64
  IterationComponent,
62
65
  )
@@ -241,41 +244,47 @@ class StateMap(ExecutionState):
241
244
  parameters=self.parameters,
242
245
  item_selector=self.item_selector,
243
246
  )
244
- elif isinstance(self.iteration_component, DistributedIterator):
245
- eval_input = DistributedIteratorEvalInput(
247
+ elif isinstance(self.iteration_component, InlineItemProcessor):
248
+ eval_input = InlineItemProcessorEvalInput(
246
249
  state_name=self.name,
247
250
  max_concurrency=max_concurrency_num,
248
251
  input_items=input_items,
249
- parameters=self.parameters,
250
252
  item_selector=self.item_selector,
251
- item_reader=self.item_reader,
253
+ parameters=self.parameters,
254
+ )
255
+ else:
256
+ map_run_record = MapRunRecord(
257
+ state_machine_arn=env.states.context_object.context_object_data["StateMachine"][
258
+ "Id"
259
+ ],
260
+ execution_arn=env.states.context_object.context_object_data["Execution"]["Id"],
261
+ max_concurrency=max_concurrency_num,
252
262
  tolerated_failure_count=tolerated_failure_count,
253
263
  tolerated_failure_percentage=tolerated_failure_percentage,
254
264
  label=label,
255
265
  )
256
- elif isinstance(self.iteration_component, InlineItemProcessor):
257
- eval_input = InlineItemProcessorEvalInput(
266
+ env.map_run_record_pool_manager.add(map_run_record)
267
+ # Choose the distributed input type depending on whether the definition
268
+ # asks for the legacy Iterator component or an ItemProcessor
269
+ if isinstance(self.iteration_component, DistributedIterator):
270
+ distributed_eval_input_class = DistributedIteratorEvalInput
271
+ elif isinstance(self.iteration_component, DistributedItemProcessor):
272
+ distributed_eval_input_class = DistributedItemProcessorEvalInput
273
+ else:
274
+ raise RuntimeError(
275
+ f"Unknown iteration component of type '{type(self.iteration_component)}' '{self.iteration_component}'."
276
+ )
277
+ eval_input = distributed_eval_input_class(
258
278
  state_name=self.name,
259
279
  max_concurrency=max_concurrency_num,
260
280
  input_items=input_items,
261
- item_selector=self.item_selector,
262
281
  parameters=self.parameters,
263
- )
264
- elif isinstance(self.iteration_component, DistributedItemProcessor):
265
- eval_input = DistributedItemProcessorEvalInput(
266
- state_name=self.name,
267
- max_concurrency=max_concurrency_num,
268
- input_items=input_items,
269
- item_reader=self.item_reader,
270
282
  item_selector=self.item_selector,
271
- parameters=self.parameters,
283
+ item_reader=self.item_reader,
272
284
  tolerated_failure_count=tolerated_failure_count,
273
285
  tolerated_failure_percentage=tolerated_failure_percentage,
274
286
  label=label,
275
- )
276
- else:
277
- raise RuntimeError(
278
- f"Unknown iteration component of type '{type(self.iteration_component)}' '{self.iteration_component}'."
287
+ map_run_record=map_run_record,
279
288
  )
280
289
 
281
290
  env.stack.append(eval_input)
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.2.1.dev19'
21
- __version_tuple__ = version_tuple = (4, 2, 1, 'dev19')
20
+ __version__ = version = '4.2.1.dev21'
21
+ __version_tuple__ = version_tuple = (4, 2, 1, 'dev21')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: localstack-core
3
- Version: 4.2.1.dev19
3
+ Version: 4.2.1.dev21
4
4
  Summary: The core library and runtime of LocalStack
5
5
  Author-email: LocalStack Contributors <info@localstack.cloud>
6
6
  Project-URL: Homepage, https://localstack.cloud
@@ -3,7 +3,7 @@ localstack/constants.py,sha256=tWRSYsqdPahvbDAV864wsumkOuXrc58gb0HdQhB00WQ,6767
3
3
  localstack/deprecations.py,sha256=t3zeaZaHhKYM8snP1wRZhpvAy6MbB12Vqv5hK78bwJ0,15162
4
4
  localstack/openapi.yaml,sha256=B803NmpwsxG8PHpHrdZYBrUYjnrRh7B_JX0XuNynuFs,30237
5
5
  localstack/plugins.py,sha256=BIJC9dlo0WbP7lLKkCiGtd_2q5oeqiHZohvoRTcejXM,2457
6
- localstack/version.py,sha256=bx7FBaYx9JRJLtFw0ZmnffWMajmVlgvO03WTBRUspvo,526
6
+ localstack/version.py,sha256=Qc1pU9GRVFnBTi57jFlCd2-Am3YbW4EG15b7tasnn1M,526
7
7
  localstack/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  localstack/aws/accounts.py,sha256=102zpGowOxo0S6UGMpfjw14QW7WCLVAGsnFK5xFMLoo,3043
9
9
  localstack/aws/app.py,sha256=3IrwF_53sThRChWjmlFyhHDZtuoq40ZmY8YEh-l67UA,5156
@@ -958,7 +958,7 @@ localstack/services/stepfunctions/asl/component/state/state_execution/state_map/
958
958
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/label.py,sha256=xQtlJEk7x-JJB4yFkIltCEVrTsv4nYTQiQUAp_VEyC0,825
959
959
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/max_concurrency.py,sha256=tYqDuhammY5GiIIOg1fZW1iK_WmxfcHSnmEvmvSxe5g,3996
960
960
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/mode.py,sha256=CZ-CxaQjnYKZrb93E7QXSjTOg2w41fzB2JGcesJA6Ug,193
961
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/state_map.py,sha256=uO28o0o0qMlLwxr0DkAgWYC4SjHqebGnN2urXlPIvyE,15871
961
+ localstack/services/stepfunctions/asl/component/state/state_execution/state_map/state_map.py,sha256=3SWTyIyIahPStCKG1X9dIFIehTVGLndcQKm9AXlQldY,16486
962
962
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/tolerated_failure.py,sha256=NBzw8JM8ye0M5zEPTT-42FvQ97zYHkoGyhqBrHFWzSg,7948
963
963
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
964
964
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/item_reader_decl.py,sha256=N4XsnjRZ6Gnwg7VbeH34taaHavHZq-TY-N65K2gGS40,2904
@@ -981,25 +981,25 @@ localstack/services/stepfunctions/asl/component/state/state_execution/state_map/
981
981
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/items/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
982
982
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/items/items.py,sha256=iCiPt5WfoYToDbvJJvwUSPQyuTAc0lPVeX1CrxDAV-4,3828
983
983
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
984
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/distributed_iteration_component.py,sha256=8fvsazTYaltpyP6SFbEqJ9q1z6HPNwfXb5O6jBtbYuE,9277
985
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/inline_iteration_component.py,sha256=o-gVOp568dUJ7gOminuCegixN6PGsjgjc2REvCoSzfw,4381
986
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_component.py,sha256=dUtJRdd1yEuJygzRTOmzwGpgf0H2RJWe0Z12xe01tPQ,1376
984
+ localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/distributed_iteration_component.py,sha256=Jm3VQNjHPPORutit04SAwlR7w2rCycV0jhpbG_5MOsU,7489
985
+ localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/inline_iteration_component.py,sha256=ga2bXPrLtDpfnXR9E7Odp3KPEOdNxG5U3rMajwFwVg4,4399
986
+ localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_component.py,sha256=VtJSo0NcHjBD-tUgBJZqm2Tner3_9ftXCf0ZqYJIyXo,1592
987
987
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_declaration.py,sha256=kF_RBD2VCFiQA1C5ZoJSprLUf7nXkV2s7Iix1dfhxGw,1233
988
988
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_worker.py,sha256=DR1t5VXQaLbDg8ZCJv3NgMQKRushOtMTNwK3LPbSRz4,8465
989
989
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/job.py,sha256=i7T4Sf13Mu7VM0erXhs8lQwU9pHyyyjtpOe9RdfrYac,3276
990
990
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
991
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/distributed_item_processor.py,sha256=GfohOEdGVgJwJ5a60-2QrZ5RxvGtWfIGuiFis1uSYnc,2510
991
+ localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/distributed_item_processor.py,sha256=uGIajokSe4cOWqQmS9-ArpiSQUlxC6AovfQvDU0ZFoU,2597
992
992
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/distributed_item_processor_worker.py,sha256=wgYKn-3GttbiJqtiOG07s9blGCIKMNEdHs12ODKZXbE,6182
993
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/inline_item_processor.py,sha256=CJCna5V_iFLko2IXrdz-qrcbUFM3XR2mGZb_HyfXZzY,2359
993
+ localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/inline_item_processor.py,sha256=LLTjdQZj9ZGqV6BJCh59T4qHKpA_UdKKwTQlz3Tx88U,2448
994
994
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/inline_item_processor_worker.py,sha256=AfXjdBCort1RSkSkatVlLDI1_zKRvdFwF4kKmDQLOUU,1708
995
995
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/item_processor_decl.py,sha256=T09nEEVRtUktT4zxW0R9U_KNHwRmosoKjr1skSFiQMI,198
996
996
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/item_processor_factory.py,sha256=JDpN3twDpMRdWcxq4cdpaZjgOrlf2suu-osGaYKuhWE,1782
997
997
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/map_run_record.py,sha256=rYXD1wzPE2XbzkGuWG9tDaW0KXvOxrUZXB97YzeyFyI,6906
998
998
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/processor_config.py,sha256=2ZCjApsgK1ces_0ceBS7dAvArr26DGUnRvIRY4tD-SY,820
999
999
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1000
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/distributed_iterator.py,sha256=hY7onD9rUM0YxgWOht5Wz7Pqj7-v560xef2n_BAgmW4,2389
1000
+ localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/distributed_iterator.py,sha256=KJH7QcIAyno6Cw_Xp2BEr67EBdjHIzRa6-4doL6LtKQ,2482
1001
1001
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/distributed_iterator_worker.py,sha256=QJpuilG8srN65Go316eMrYiubQuxurmr0z-asES4UNE,5166
1002
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator.py,sha256=l_0_axgzRTRYThWGvYs3iy6GTIqKgjjV6VmvHywEjxk,1579
1002
+ localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator.py,sha256=hgvyBldI8zTHc0r0PIJFwGhAaOabeeqz0MlQi2ujIek,1748
1003
1003
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator_worker.py,sha256=HNcJUP-SmLJS9iiGMbL7Ceetfa5FwNw86b_zmoJ330w,1680
1004
1004
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/iterator_decl.py,sha256=LeNtYWFYw2uBAI66HhZw0pj4-iIH6UB3VyxrxFjqF8k,193
1005
1005
  localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/iterator_factory.py,sha256=oyE34D1Tuj1e8NCWtBJFi4rAZZ1PxIsALbdd8FPjPg8,1641
@@ -1259,13 +1259,13 @@ localstack/utils/server/tcp_proxy.py,sha256=rR6d5jR0ozDvIlpHiqW0cfyY9a2fRGdOzyA8
1259
1259
  localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1260
1260
  localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
1261
1261
  localstack/utils/xray/traceid.py,sha256=SQSsMV2rhbTNK6ceIoozZYuGU7Fg687EXcgqxoDl1Fw,1106
1262
- localstack_core-4.2.1.dev19.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
1263
- localstack_core-4.2.1.dev19.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1264
- localstack_core-4.2.1.dev19.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
1265
- localstack_core-4.2.1.dev19.dist-info/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1266
- localstack_core-4.2.1.dev19.dist-info/METADATA,sha256=5MfAv3-Gt3mPB4aobgCcSpRh_vsME3Xk9e52iwQbBe0,5481
1267
- localstack_core-4.2.1.dev19.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
1268
- localstack_core-4.2.1.dev19.dist-info/entry_points.txt,sha256=JSxo5YPv4XEemz1lJfLl6xIDDPhN9cSwEDywSfPTrTc,20489
1269
- localstack_core-4.2.1.dev19.dist-info/plux.json,sha256=_oIk8AJfYAnbtlTKdlJVO3DLq-q307hUx-Ka7b7dq_4,20710
1270
- localstack_core-4.2.1.dev19.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1271
- localstack_core-4.2.1.dev19.dist-info/RECORD,,
1262
+ localstack_core-4.2.1.dev21.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
1263
+ localstack_core-4.2.1.dev21.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1264
+ localstack_core-4.2.1.dev21.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
1265
+ localstack_core-4.2.1.dev21.dist-info/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1266
+ localstack_core-4.2.1.dev21.dist-info/METADATA,sha256=3oef2QBUXPUg1EoQvP4ZncA43NBVDlxHsImC2U5v384,5481
1267
+ localstack_core-4.2.1.dev21.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
1268
+ localstack_core-4.2.1.dev21.dist-info/entry_points.txt,sha256=JSxo5YPv4XEemz1lJfLl6xIDDPhN9cSwEDywSfPTrTc,20489
1269
+ localstack_core-4.2.1.dev21.dist-info/plux.json,sha256=FpvnU9Zj9NtaT0AlZGXVjRxq-fJoqW-tgrID6T8N09A,20710
1270
+ localstack_core-4.2.1.dev21.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1271
+ localstack_core-4.2.1.dev21.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ {"localstack.cloudformation.resource_providers": ["AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "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::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "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::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "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::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "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::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin"], "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", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_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.hooks.on_infra_shutdown": ["aggregate_and_send=localstack.utils.analytics.usage:aggregate_and_send", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "run_on_after_service_shutdown_handlers=localstack.runtime.shutdown:run_on_after_service_shutdown_handlers", "run_shutdown_handlers=localstack.runtime.shutdown:run_shutdown_handlers", "shutdown_services=localstack.runtime.shutdown:shutdown_services", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "stop_server=localstack.dns.plugins:stop_server", "publish_metrics=localstack.utils.analytics.metrics:publish_metrics"], "localstack.hooks.on_infra_start": ["apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "_patch_botocore_endpoint_in_memory=localstack.aws.client:_patch_botocore_endpoint_in_memory", "_patch_botocore_json_parser=localstack.aws.client:_patch_botocore_json_parser", "_patch_cbor2=localstack.aws.client:_patch_cbor2", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "_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", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info"], "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", "cloudwatch:default=localstack.services.providers:cloudwatch", "cloudwatch:v1=localstack.services.providers:cloudwatch_v1", "cloudwatch:v2=localstack.services.providers:cloudwatch_v2", "dynamodb:default=localstack.services.providers:dynamodb", "dynamodb:v2=localstack.services.providers:dynamodb_v2", "dynamodbstreams:default=localstack.services.providers:dynamodbstreams", "dynamodbstreams:v2=localstack.services.providers:dynamodbstreams_v2", "ec2:default=localstack.services.providers:ec2", "es:default=localstack.services.providers:es", "events:default=localstack.services.providers:events", "events:legacy=localstack.services.providers:events_legacy", "events:v1=localstack.services.providers:events_v1", "events:v2=localstack.services.providers:events_v2", "firehose:default=localstack.services.providers:firehose", "iam:default=localstack.services.providers:iam", "kinesis:default=localstack.services.providers:kinesis", "kms:default=localstack.services.providers:kms", "lambda:default=localstack.services.providers:lambda_", "lambda:asf=localstack.services.providers:lambda_asf", "lambda:v2=localstack.services.providers:lambda_v2", "logs:default=localstack.services.providers:logs", "opensearch:default=localstack.services.providers:opensearch", "redshift:default=localstack.services.providers:redshift", "resource-groups:default=localstack.services.providers:resource_groups", "resourcegroupstaggingapi:default=localstack.services.providers:resourcegroupstaggingapi", "route53:default=localstack.services.providers:route53", "route53resolver:default=localstack.services.providers:route53resolver", "s3:default=localstack.services.providers:s3", "s3control:default=localstack.services.providers:s3control", "scheduler:default=localstack.services.providers:scheduler", "secretsmanager:default=localstack.services.providers:secretsmanager", "ses:default=localstack.services.providers:ses", "sns:default=localstack.services.providers:sns", "sqs:default=localstack.services.providers:sqs", "ssm:default=localstack.services.providers:ssm", "stepfunctions:default=localstack.services.providers:stepfunctions", "stepfunctions:v2=localstack.services.providers:stepfunctions_v2", "sts:default=localstack.services.providers:sts", "support:default=localstack.services.providers:support", "swf:default=localstack.services.providers:swf", "transcribe:default=localstack.services.providers:transcribe"], "localstack.hooks.configure_localstack_container": ["_mount_machine_file=localstack.utils.analytics.metadata:_mount_machine_file"], "localstack.hooks.prepare_host": ["prepare_host_machine_id=localstack.utils.analytics.metadata:prepare_host_machine_id"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.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.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"]}
@@ -1 +0,0 @@
1
- {"localstack.cloudformation.resource_providers": ["AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "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::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "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::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "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::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin"], "localstack.hooks.on_infra_start": ["conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "_patch_botocore_endpoint_in_memory=localstack.aws.client:_patch_botocore_endpoint_in_memory", "_patch_botocore_json_parser=localstack.aws.client:_patch_botocore_json_parser", "_patch_cbor2=localstack.aws.client:_patch_cbor2", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches"], "localstack.packages": ["jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "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", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package"], "localstack.hooks.on_infra_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", "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", "stop_server=localstack.dns.plugins:stop_server"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "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"], "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", "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.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.hooks.on_infra_ready": ["_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"]}