localstack-core 4.4.1.dev42__py3-none-any.whl → 4.4.1.dev43__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.
@@ -20,10 +20,18 @@ from localstack.aws.api.dynamodb import (
20
20
  TableName,
21
21
  Update,
22
22
  )
23
+ from localstack.aws.api.dynamodbstreams import (
24
+ ResourceNotFoundException as DynamoDBStreamsResourceNotFoundException,
25
+ )
23
26
  from localstack.aws.connect import connect_to
24
27
  from localstack.constants import INTERNAL_AWS_SECRET_ACCESS_KEY
25
28
  from localstack.http import Response
26
- from localstack.utils.aws.arns import dynamodb_table_arn, get_partition
29
+ from localstack.utils.aws.arns import (
30
+ dynamodb_stream_arn,
31
+ dynamodb_table_arn,
32
+ get_partition,
33
+ parse_arn,
34
+ )
27
35
  from localstack.utils.json import canonical_json
28
36
  from localstack.utils.testutil import list_all_resources
29
37
 
@@ -348,3 +356,32 @@ def modify_ddblocal_arns(chain, context: RequestContext, response: Response):
348
356
 
349
357
  # update x-amz-crc32 header required by some clients
350
358
  response.headers["x-amz-crc32"] = crc32(response.data) & 0xFFFFFFFF
359
+
360
+
361
+ def change_region_in_ddb_stream_arn(arn: str, region: str) -> str:
362
+ """
363
+ Modify the ARN or a DynamoDB Stream by changing its region.
364
+ We need this logic when dealing with global tables, as we create a stream only in the originating region, and we
365
+ need to modify the ARN to mimic the stream of the replica regions.
366
+ """
367
+ arn_data = parse_arn(arn)
368
+ if arn_data["region"] == region:
369
+ return arn
370
+
371
+ if arn_data["service"] != "dynamodb":
372
+ raise Exception(f"{arn} is not a DynamoDB Streams ARN")
373
+
374
+ # Note: a DynamoDB Streams ARN has the following pattern:
375
+ # arn:aws:dynamodb:<region>:<account>:table/<table_name>/stream/<latest_stream_label>
376
+ resource_splits = arn_data["resource"].split("/")
377
+ if len(resource_splits) != 4:
378
+ raise DynamoDBStreamsResourceNotFoundException(
379
+ f"The format of the '{arn}' ARN is not valid"
380
+ )
381
+
382
+ return dynamodb_stream_arn(
383
+ table_name=resource_splits[1],
384
+ latest_stream_label=resource_splits[-1],
385
+ account_id=arn_data["account"],
386
+ region_name=region,
387
+ )
@@ -5,8 +5,10 @@ from typing import TYPE_CHECKING, Dict
5
5
  from bson.json_util import dumps
6
6
 
7
7
  from localstack import config
8
+ from localstack.aws.api import RequestContext
8
9
  from localstack.aws.api.dynamodbstreams import StreamStatus, StreamViewType, TableName
9
10
  from localstack.aws.connect import connect_to
11
+ from localstack.services.dynamodb.v2.provider import DynamoDBProvider
10
12
  from localstack.services.dynamodbstreams.models import DynamoDbStreamsStore, dynamodbstreams_stores
11
13
  from localstack.utils.aws import arns, resources
12
14
  from localstack.utils.common import now_utc
@@ -211,3 +213,23 @@ def get_shard_id(stream: Dict, kinesis_shard_id: str) -> str:
211
213
  stream["shards_id_map"][kinesis_shard_id] = ddb_stream_shard_id
212
214
 
213
215
  return ddb_stream_shard_id
216
+
217
+
218
+ def get_original_region(
219
+ context: RequestContext, stream_arn: str | None = None, table_name: str | None = None
220
+ ) -> str:
221
+ """
222
+ In DDB Global tables, we forward all the requests to the original region, instead of really replicating the data.
223
+ Since each table has a separate stream associated, we need to have a similar forwarding logic for DDB Streams.
224
+ To determine the original region, we need the table name, that can be either provided here or determined from the
225
+ ARN of the stream.
226
+ """
227
+ if not stream_arn and not table_name:
228
+ LOG.debug(
229
+ "No Stream ARN or table name provided. Returning region '%s' from the request",
230
+ context.region,
231
+ )
232
+ return context.region
233
+
234
+ table_name = table_name or table_name_from_stream_arn(stream_arn)
235
+ return DynamoDBProvider.get_global_table_region(context=context, table_name=table_name)
@@ -24,10 +24,12 @@ from localstack.aws.api.dynamodbstreams import (
24
24
  TableName,
25
25
  )
26
26
  from localstack.aws.connect import connect_to
27
+ from localstack.services.dynamodb.utils import change_region_in_ddb_stream_arn
27
28
  from localstack.services.dynamodbstreams.dynamodbstreams_api import (
28
29
  get_dynamodbstreams_store,
29
30
  get_kinesis_client,
30
31
  get_kinesis_stream_name,
32
+ get_original_region,
31
33
  get_shard_id,
32
34
  kinesis_shard_id,
33
35
  stream_name_from_stream_arn,
@@ -47,6 +49,13 @@ STREAM_STATUS_MAP = {
47
49
 
48
50
 
49
51
  class DynamoDBStreamsProvider(DynamodbstreamsApi, ServiceLifecycleHook):
52
+ shard_to_region: dict[str, str]
53
+ """Map a shard iterator to the originating region. This is used in case of replica tables, as LocalStack keeps the
54
+ data in one region only, redirecting all the requests from replica regions."""
55
+
56
+ def __init__(self):
57
+ self.shard_to_region = {}
58
+
50
59
  def describe_stream(
51
60
  self,
52
61
  context: RequestContext,
@@ -55,13 +64,17 @@ class DynamoDBStreamsProvider(DynamodbstreamsApi, ServiceLifecycleHook):
55
64
  exclusive_start_shard_id: ShardId = None,
56
65
  **kwargs,
57
66
  ) -> DescribeStreamOutput:
58
- store = get_dynamodbstreams_store(context.account_id, context.region)
59
- kinesis = get_kinesis_client(account_id=context.account_id, region_name=context.region)
67
+ og_region = get_original_region(context=context, stream_arn=stream_arn)
68
+ store = get_dynamodbstreams_store(context.account_id, og_region)
69
+ kinesis = get_kinesis_client(account_id=context.account_id, region_name=og_region)
60
70
  for stream in store.ddb_streams.values():
61
- if stream["StreamArn"] == stream_arn:
71
+ _stream_arn = stream_arn
72
+ if context.region != og_region:
73
+ _stream_arn = change_region_in_ddb_stream_arn(_stream_arn, og_region)
74
+ if stream["StreamArn"] == _stream_arn:
62
75
  # get stream details
63
76
  dynamodb = connect_to(
64
- aws_access_key_id=context.account_id, region_name=context.region
77
+ aws_access_key_id=context.account_id, region_name=og_region
65
78
  ).dynamodb
66
79
  table_name = table_name_from_stream_arn(stream["StreamArn"])
67
80
  stream_name = get_kinesis_stream_name(table_name)
@@ -90,6 +103,7 @@ class DynamoDBStreamsProvider(DynamodbstreamsApi, ServiceLifecycleHook):
90
103
 
91
104
  stream["Shards"] = stream_shards
92
105
  stream_description = select_from_typed_dict(StreamDescription, stream)
106
+ stream_description["StreamArn"] = _stream_arn
93
107
  return DescribeStreamOutput(StreamDescription=stream_description)
94
108
 
95
109
  raise ResourceNotFoundException(
@@ -98,11 +112,17 @@ class DynamoDBStreamsProvider(DynamodbstreamsApi, ServiceLifecycleHook):
98
112
 
99
113
  @handler("GetRecords", expand=False)
100
114
  def get_records(self, context: RequestContext, payload: GetRecordsInput) -> GetRecordsOutput:
101
- kinesis = get_kinesis_client(account_id=context.account_id, region_name=context.region)
102
- prefix, _, payload["ShardIterator"] = payload["ShardIterator"].rpartition("|")
115
+ _shard_iterator = payload["ShardIterator"]
116
+ region_name = context.region
117
+ if payload["ShardIterator"] in self.shard_to_region:
118
+ region_name = self.shard_to_region[_shard_iterator]
119
+
120
+ kinesis = get_kinesis_client(account_id=context.account_id, region_name=region_name)
121
+ prefix, _, payload["ShardIterator"] = _shard_iterator.rpartition("|")
103
122
  try:
104
123
  kinesis_records = kinesis.get_records(**payload)
105
124
  except kinesis.exceptions.ExpiredIteratorException:
125
+ self.shard_to_region.pop(_shard_iterator, None)
106
126
  LOG.debug("Shard iterator for underlying kinesis stream expired")
107
127
  raise ExpiredIteratorException("Shard iterator has expired")
108
128
  result = {
@@ -113,6 +133,11 @@ class DynamoDBStreamsProvider(DynamodbstreamsApi, ServiceLifecycleHook):
113
133
  record_data = loads(record["Data"])
114
134
  record_data["dynamodb"]["SequenceNumber"] = record["SequenceNumber"]
115
135
  result["Records"].append(record_data)
136
+
137
+ # Similar as the logic in GetShardIterator, we need to track the originating region when we get the
138
+ # NextShardIterator in the results.
139
+ if region_name != context.region and "NextShardIterator" in result:
140
+ self.shard_to_region[result["NextShardIterator"]] = region_name
116
141
  return GetRecordsOutput(**result)
117
142
 
118
143
  def get_shard_iterator(
@@ -125,8 +150,9 @@ class DynamoDBStreamsProvider(DynamodbstreamsApi, ServiceLifecycleHook):
125
150
  **kwargs,
126
151
  ) -> GetShardIteratorOutput:
127
152
  stream_name = stream_name_from_stream_arn(stream_arn)
153
+ og_region = get_original_region(context=context, stream_arn=stream_arn)
128
154
  stream_shard_id = kinesis_shard_id(shard_id)
129
- kinesis = get_kinesis_client(account_id=context.account_id, region_name=context.region)
155
+ kinesis = get_kinesis_client(account_id=context.account_id, region_name=og_region)
130
156
 
131
157
  kwargs = {"StartingSequenceNumber": sequence_number} if sequence_number else {}
132
158
  result = kinesis.get_shard_iterator(
@@ -138,6 +164,11 @@ class DynamoDBStreamsProvider(DynamodbstreamsApi, ServiceLifecycleHook):
138
164
  del result["ResponseMetadata"]
139
165
  # TODO not quite clear what the |1| exactly denotes, because at AWS it's sometimes other numbers
140
166
  result["ShardIterator"] = f"{stream_arn}|1|{result['ShardIterator']}"
167
+
168
+ # In case of a replica table, we need to keep track of the real region originating the shard iterator.
169
+ # This region will be later used in GetRecords to redirect to the originating region, holding the data.
170
+ if og_region != context.region:
171
+ self.shard_to_region[result["ShardIterator"]] = og_region
141
172
  return GetShardIteratorOutput(**result)
142
173
 
143
174
  def list_streams(
@@ -148,8 +179,17 @@ class DynamoDBStreamsProvider(DynamodbstreamsApi, ServiceLifecycleHook):
148
179
  exclusive_start_stream_arn: StreamArn = None,
149
180
  **kwargs,
150
181
  ) -> ListStreamsOutput:
151
- store = get_dynamodbstreams_store(context.account_id, context.region)
182
+ og_region = get_original_region(context=context, table_name=table_name)
183
+ store = get_dynamodbstreams_store(context.account_id, og_region)
152
184
  result = [select_from_typed_dict(Stream, res) for res in store.ddb_streams.values()]
153
185
  if table_name:
154
- result = [res for res in result if res["TableName"] == table_name]
186
+ result: list[Stream] = [res for res in result if res["TableName"] == table_name]
187
+ # If this is a stream from a table replica, we need to change the region in the stream ARN, as LocalStack
188
+ # keeps a stream only in the originating region.
189
+ if context.region != og_region:
190
+ for stream in result:
191
+ stream["StreamArn"] = change_region_in_ddb_stream_arn(
192
+ stream["StreamArn"], context.region
193
+ )
194
+
155
195
  return ListStreamsOutput(Streams=result)
@@ -15,7 +15,8 @@ from localstack.aws.api.dynamodbstreams import (
15
15
  )
16
16
  from localstack.services.dynamodb.server import DynamodbServer
17
17
  from localstack.services.dynamodb.utils import modify_ddblocal_arns
18
- from localstack.services.dynamodb.v2.provider import DynamoDBProvider
18
+ from localstack.services.dynamodb.v2.provider import DynamoDBProvider, modify_context_region
19
+ from localstack.services.dynamodbstreams.dynamodbstreams_api import get_original_region
19
20
  from localstack.services.plugins import ServiceLifecycleHook
20
21
  from localstack.utils.aws.arns import parse_arn
21
22
 
@@ -23,8 +24,13 @@ LOG = logging.getLogger(__name__)
23
24
 
24
25
 
25
26
  class DynamoDBStreamsProvider(DynamodbstreamsApi, ServiceLifecycleHook):
27
+ shard_to_region: dict[str, str]
28
+ """Map a shard iterator to the originating region. This is used in case of replica tables, as LocalStack keeps the
29
+ data in one region only, redirecting all the requests from replica regions."""
30
+
26
31
  def __init__(self):
27
32
  self.server = DynamodbServer.get()
33
+ self.shard_to_region = {}
28
34
 
29
35
  def on_after_init(self):
30
36
  # add response processor specific to ddblocal
@@ -33,6 +39,20 @@ class DynamoDBStreamsProvider(DynamodbstreamsApi, ServiceLifecycleHook):
33
39
  def on_before_start(self):
34
40
  self.server.start_dynamodb()
35
41
 
42
+ def _forward_request(
43
+ self, context: RequestContext, region: str | None, service_request: ServiceRequest
44
+ ) -> ServiceResponse:
45
+ """
46
+ Modify the context region and then forward request to DynamoDB Local.
47
+
48
+ This is used for operations impacted by global tables. In LocalStack, a single copy of global table
49
+ is kept, and any requests to replicated tables are forwarded to this original table.
50
+ """
51
+ if region:
52
+ with modify_context_region(context, region):
53
+ return self.forward_request(context, service_request=service_request)
54
+ return self.forward_request(context, service_request=service_request)
55
+
36
56
  def forward_request(
37
57
  self, context: RequestContext, service_request: ServiceRequest = None
38
58
  ) -> ServiceResponse:
@@ -55,9 +75,12 @@ class DynamoDBStreamsProvider(DynamodbstreamsApi, ServiceLifecycleHook):
55
75
  context: RequestContext,
56
76
  payload: DescribeStreamInput,
57
77
  ) -> DescribeStreamOutput:
78
+ global_table_region = get_original_region(context=context, stream_arn=payload["StreamArn"])
58
79
  request = payload.copy()
59
80
  request["StreamArn"] = self.modify_stream_arn_for_ddb_local(request.get("StreamArn", ""))
60
- return self.forward_request(context, request)
81
+ return self._forward_request(
82
+ context=context, service_request=request, region=global_table_region
83
+ )
61
84
 
62
85
  @handler("GetRecords", expand=False)
63
86
  def get_records(self, context: RequestContext, payload: GetRecordsInput) -> GetRecordsOutput:
@@ -65,17 +88,43 @@ class DynamoDBStreamsProvider(DynamodbstreamsApi, ServiceLifecycleHook):
65
88
  request["ShardIterator"] = self.modify_stream_arn_for_ddb_local(
66
89
  request.get("ShardIterator", "")
67
90
  )
68
- return self.forward_request(context, request)
91
+ region = self.shard_to_region.pop(request["ShardIterator"], None)
92
+ response = self._forward_request(context=context, region=region, service_request=request)
93
+ # Similar as the logic in GetShardIterator, we need to track the originating region when we get the
94
+ # NextShardIterator in the results.
95
+ if (
96
+ region
97
+ and region != context.region
98
+ and (next_shard := response.get("NextShardIterator"))
99
+ ):
100
+ self.shard_to_region[next_shard] = region
101
+ return response
69
102
 
70
103
  @handler("GetShardIterator", expand=False)
71
104
  def get_shard_iterator(
72
105
  self, context: RequestContext, payload: GetShardIteratorInput
73
106
  ) -> GetShardIteratorOutput:
107
+ global_table_region = get_original_region(context=context, stream_arn=payload["StreamArn"])
74
108
  request = payload.copy()
75
109
  request["StreamArn"] = self.modify_stream_arn_for_ddb_local(request.get("StreamArn", ""))
76
- return self.forward_request(context, request)
110
+ response = self._forward_request(
111
+ context=context, service_request=request, region=global_table_region
112
+ )
113
+
114
+ # In case of a replica table, we need to keep track of the real region originating the shard iterator.
115
+ # This region will be later used in GetRecords to redirect to the originating region, holding the data.
116
+ if global_table_region != context.region and (
117
+ shard_iterator := response.get("ShardIterator")
118
+ ):
119
+ self.shard_to_region[shard_iterator] = global_table_region
120
+ return response
77
121
 
78
122
  @handler("ListStreams", expand=False)
79
123
  def list_streams(self, context: RequestContext, payload: ListStreamsInput) -> ListStreamsOutput:
124
+ global_table_region = get_original_region(
125
+ context=context, stream_arn=payload.get("TableName")
126
+ )
80
127
  # TODO: look into `ExclusiveStartStreamArn` param
81
- return self.forward_request(context, payload)
128
+ return self._forward_request(
129
+ context=context, service_request=payload, region=global_table_region
130
+ )
@@ -792,11 +792,10 @@ def wait_for_delivery_stream_ready(aws_client):
792
792
 
793
793
  @pytest.fixture
794
794
  def wait_for_dynamodb_stream_ready(aws_client):
795
- def _wait_for_stream_ready(stream_arn: str):
795
+ def _wait_for_stream_ready(stream_arn: str, client=None):
796
796
  def is_stream_ready():
797
- describe_stream_response = aws_client.dynamodbstreams.describe_stream(
798
- StreamArn=stream_arn
799
- )
797
+ ddb_client = client or aws_client.dynamodbstreams
798
+ describe_stream_response = ddb_client.describe_stream(StreamArn=stream_arn)
800
799
  return describe_stream_response["StreamDescription"]["StreamStatus"] == "ENABLED"
801
800
 
802
801
  return poll_condition(is_stream_ready)
@@ -327,6 +327,9 @@ class TransformerUtility:
327
327
  @staticmethod
328
328
  def dynamodb_streams_api():
329
329
  return [
330
+ RegexTransformer(
331
+ r"^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}$", replacement="<stream-label>"
332
+ ),
330
333
  TransformerUtility.key_value("TableName"),
331
334
  TransformerUtility.key_value("TableStatus"),
332
335
  TransformerUtility.key_value("LatestStreamLabel"),
localstack/version.py CHANGED
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '4.4.1.dev42'
21
- __version_tuple__ = version_tuple = (4, 4, 1, 'dev42')
20
+ __version__ = version = '4.4.1.dev43'
21
+ __version_tuple__ = version_tuple = (4, 4, 1, 'dev43')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: localstack-core
3
- Version: 4.4.1.dev42
3
+ Version: 4.4.1.dev43
4
4
  Summary: The core library and runtime of LocalStack
5
5
  Author-email: LocalStack Contributors <info@localstack.cloud>
6
6
  License-Expression: Apache-2.0
@@ -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=StL3ER5NHZZzlThbW4RnMq6JllxXmrSvPWUzpYtBX9k,526
7
+ localstack/version.py,sha256=JM1wxm3jy2edRR2tAeO6cH4saRoBIXjyyd3kOM4tA94,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
@@ -356,7 +356,7 @@ localstack/services/dynamodb/packages.py,sha256=nUDlVQsrtF-gBUkWwnpKyRz42HXaqVXH
356
356
  localstack/services/dynamodb/plugins.py,sha256=DraVGanzrytMltMMrDTg8CiDUosbnIuujjrT25Y7H3E,234
357
357
  localstack/services/dynamodb/provider.py,sha256=Ox0k9PDdQqa3oZ6Ve-1A13CY6-cCXzlLLZ7Wuaj-JDo,91653
358
358
  localstack/services/dynamodb/server.py,sha256=d4jQPWUmtLar3T3hl5oE9OyuT7dSDXHfWIxg_RvQfUA,7755
359
- localstack/services/dynamodb/utils.py,sha256=3PwYNv5dUDk_iCz1QUW7E7RJDJsgIUFxieC0Jr3soFo,13613
359
+ localstack/services/dynamodb/utils.py,sha256=ioVVqUovmGNCRHR_QFe1TFWM72PA3UEvl6gwwLeo1xI,14884
360
360
  localstack/services/dynamodb/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
361
361
  localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable.py,sha256=vWoJybf-1xlmmkmKgVc2edCZ6vu06cZxjothufgapqA,14674
362
362
  localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable.schema.json,sha256=KcLt6HdY1oED_othlOemHOL1AxoulAWfDI5UvRcBJEU,14592
@@ -367,11 +367,11 @@ localstack/services/dynamodb/resource_providers/aws_dynamodb_table_plugin.py,sha
367
367
  localstack/services/dynamodb/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
368
368
  localstack/services/dynamodb/v2/provider.py,sha256=MO_gEKjqhM3KlXvFVkX4-hsolnVrp6MSgIt_ngWQLjc,58546
369
369
  localstack/services/dynamodbstreams/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
370
- localstack/services/dynamodbstreams/dynamodbstreams_api.py,sha256=0tw32jlPjslEmtfiFpdIa33pONO6iUoUhWuRsvla9Tc,8059
370
+ localstack/services/dynamodbstreams/dynamodbstreams_api.py,sha256=SAo8_rYBLTFNKE8nA0j5GHBziHZfzrj5vyR8pNbA58w,9076
371
371
  localstack/services/dynamodbstreams/models.py,sha256=1bfyLooE-Xi4XtrB5u5sCg2jsRmEQA9EgZKDfisHeM8,359
372
- localstack/services/dynamodbstreams/provider.py,sha256=2HYSEiCNRAoC0qly0KNNr_YptFfS5YKCB_UIVrJtpsg,6459
372
+ localstack/services/dynamodbstreams/provider.py,sha256=-otgceXQK2TfKNzbTdtO9LG8_YKkWg0BtKgcZXpVuNs,8640
373
373
  localstack/services/dynamodbstreams/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
374
- localstack/services/dynamodbstreams/v2/provider.py,sha256=aVnmycseMTUiSrtuuqd_aOEe2owesTkF0lkplV-e6ms,3091
374
+ localstack/services/dynamodbstreams/v2/provider.py,sha256=67MD4YNPT4ZQkXCvx-ht_f1VjG_42fCF54WFOZ7xyis,5661
375
375
  localstack/services/ec2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
376
376
  localstack/services/ec2/exceptions.py,sha256=jQruPNmhYF_C1JeTmCQSKwpNeUXw9aI2hgYZhenmI5U,2617
377
377
  localstack/services/ec2/models.py,sha256=rwRcMsk3tZ1lySyz2IJu-ew21jTSKnuEdgiivyu1IcM,553
@@ -1169,7 +1169,7 @@ localstack/testing/pytest/detect_thread_leakage.py,sha256=iV2qFm4sQ7AkoqRfSZgoAU
1169
1169
  localstack/testing/pytest/filters.py,sha256=wlD-rir8TDCH94YNo_PdTU2ZnZd2DyRib2ML3TNBC_s,1174
1170
1170
  localstack/testing/pytest/find_orphaned_snapshots.py,sha256=-abDUtXa2-9PkZBDjU9XxQkT7i0dATXnFR2GzsX0TFc,1336
1171
1171
  localstack/testing/pytest/fixture_conflicts.py,sha256=cCWOEwO5clVRFseFS0_9wH5v47n_x4OQeIfVXHJvSOU,1497
1172
- localstack/testing/pytest/fixtures.py,sha256=zIDSygDgUzhGox3TbEVNxKO4yk8ngkI2RSOGVTV_V4c,89684
1172
+ localstack/testing/pytest/fixtures.py,sha256=lfrBvlmvtH8goFtnt5vbIkSdttenxgt3okkfB1F0qo0,89713
1173
1173
  localstack/testing/pytest/in_memory_localstack.py,sha256=RVSbgCbKl19ldcanyp-tKKhDhofT4ggKDY4rRQxedb8,3267
1174
1174
  localstack/testing/pytest/marker_report.py,sha256=_GOdUQQ5e-FUdw-26rHJ3B13qHrM9m4qGuzKvW2CdsE,5549
1175
1175
  localstack/testing/pytest/marking.py,sha256=60LtgBT3A1re9IraY_wjc_ixS5qpskdcYPlxwew236k,7432
@@ -1186,7 +1186,7 @@ localstack/testing/scenario/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
1186
1186
  localstack/testing/scenario/cdk_lambda_helper.py,sha256=FdFDOTykrtqfP_FRJftijkUjwMbIY-DL9ovAtQwPBb4,8609
1187
1187
  localstack/testing/scenario/provisioning.py,sha256=yo8E-fyspL6gG_46yZhmNce9nryf1oSZ4CiXteJMY14,18527
1188
1188
  localstack/testing/snapshots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1189
- localstack/testing/snapshots/transformer_utility.py,sha256=s-2T8YfzIQeQoX-X-BWQ4t4JCK8BLRo54XkKGcrVIYg,36085
1189
+ localstack/testing/snapshots/transformer_utility.py,sha256=XErSklnfO8rBBFZhjOlweRrznqgNazy8ROLIHyideVs,36224
1190
1190
  localstack/testing/testselection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1191
1191
  localstack/testing/testselection/git.py,sha256=siKcuqyiJOjkzeXxAtHUD6WUmd5H6VtgE08guSpThAg,997
1192
1192
  localstack/testing/testselection/github.py,sha256=6Q_mIJ_UqCn13vcHbMdjNhguR-wrNYYFzQ_BtOquSMI,2071
@@ -1279,13 +1279,13 @@ localstack/utils/server/tcp_proxy.py,sha256=rR6d5jR0ozDvIlpHiqW0cfyY9a2fRGdOzyA8
1279
1279
  localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1280
1280
  localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
1281
1281
  localstack/utils/xray/traceid.py,sha256=SQSsMV2rhbTNK6ceIoozZYuGU7Fg687EXcgqxoDl1Fw,1106
1282
- localstack_core-4.4.1.dev42.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
1283
- localstack_core-4.4.1.dev42.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1284
- localstack_core-4.4.1.dev42.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
1285
- localstack_core-4.4.1.dev42.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1286
- localstack_core-4.4.1.dev42.dist-info/METADATA,sha256=kbNG66YUrULFvqdzx1Gzz-FPI7gEliNcBp1Rloyy5ak,5539
1287
- localstack_core-4.4.1.dev42.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1288
- localstack_core-4.4.1.dev42.dist-info/entry_points.txt,sha256=K5M7il9Vwev64SlQiOaZVUhYpVNIE6IFHiWJ0znpbHQ,20491
1289
- localstack_core-4.4.1.dev42.dist-info/plux.json,sha256=R2HVpnnIfhz8XQM1do_zPwN0LDbHBY3cJi-HbppInLY,20712
1290
- localstack_core-4.4.1.dev42.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1291
- localstack_core-4.4.1.dev42.dist-info/RECORD,,
1282
+ localstack_core-4.4.1.dev43.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
1283
+ localstack_core-4.4.1.dev43.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1284
+ localstack_core-4.4.1.dev43.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
1285
+ localstack_core-4.4.1.dev43.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1286
+ localstack_core-4.4.1.dev43.dist-info/METADATA,sha256=jW-LN1C1USspwAlaKuJUyKfxSlZrX0HrsqN4XFleus0,5539
1287
+ localstack_core-4.4.1.dev43.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1288
+ localstack_core-4.4.1.dev43.dist-info/entry_points.txt,sha256=K5M7il9Vwev64SlQiOaZVUhYpVNIE6IFHiWJ0znpbHQ,20491
1289
+ localstack_core-4.4.1.dev43.dist-info/plux.json,sha256=yOtqjjpFNllHD7U9AZkoXIhi7G4tS-_DdcXY29M72fQ,20712
1290
+ localstack_core-4.4.1.dev43.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1291
+ localstack_core-4.4.1.dev43.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ {"localstack.cloudformation.resource_providers": ["AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "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::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "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::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "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::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "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::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin"], "localstack.hooks.on_infra_start": ["conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "_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_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "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", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches"], "localstack.packages": ["elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_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"], "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", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "stop_server=localstack.dns.plugins:stop_server", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "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.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.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "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.hooks.on_infra_start": ["_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "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", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "_patch_botocore_endpoint_in_memory=localstack.aws.client:_patch_botocore_endpoint_in_memory", "_patch_botocore_json_parser=localstack.aws.client:_patch_botocore_json_parser", "_patch_cbor2=localstack.aws.client:_patch_cbor2", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches"], "localstack.cloudformation.resource_providers": ["AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "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::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin"], "localstack.hooks.on_infra_shutdown": ["stop_server=localstack.dns.plugins:stop_server", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "publish_metrics=localstack.utils.analytics.metrics:publish_metrics", "run_on_after_service_shutdown_handlers=localstack.runtime.shutdown:run_on_after_service_shutdown_handlers", "run_shutdown_handlers=localstack.runtime.shutdown:run_shutdown_handlers", "shutdown_services=localstack.runtime.shutdown:shutdown_services", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.packages": ["elasticsearch/community=localstack.services.es.plugins:elasticsearch_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", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.hooks.on_infra_ready": ["_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.hooks.configure_localstack_container": ["_mount_machine_file=localstack.utils.analytics.metadata:_mount_machine_file"], "localstack.hooks.prepare_host": ["prepare_host_machine_id=localstack.utils.analytics.metadata:prepare_host_machine_id"], "localstack.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"]}