localstack-core 4.8.2.dev17__py3-none-any.whl → 4.8.2.dev19__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.
Potentially problematic release.
This version of localstack-core might be problematic. Click here for more details.
- localstack/aws/protocol/parser.py +11 -0
- localstack/aws/protocol/serializer.py +149 -70
- localstack/services/cloudwatch/provider_v2.py +10 -10
- localstack/services/events/models.py +4 -5
- localstack/version.py +2 -2
- {localstack_core-4.8.2.dev17.dist-info → localstack_core-4.8.2.dev19.dist-info}/METADATA +1 -1
- {localstack_core-4.8.2.dev17.dist-info → localstack_core-4.8.2.dev19.dist-info}/RECORD +15 -15
- localstack_core-4.8.2.dev19.dist-info/plux.json +1 -0
- localstack_core-4.8.2.dev17.dist-info/plux.json +0 -1
- {localstack_core-4.8.2.dev17.data → localstack_core-4.8.2.dev19.data}/scripts/localstack +0 -0
- {localstack_core-4.8.2.dev17.data → localstack_core-4.8.2.dev19.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.8.2.dev17.data → localstack_core-4.8.2.dev19.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.8.2.dev17.dist-info → localstack_core-4.8.2.dev19.dist-info}/WHEEL +0 -0
- {localstack_core-4.8.2.dev17.dist-info → localstack_core-4.8.2.dev19.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.8.2.dev17.dist-info → localstack_core-4.8.2.dev19.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.8.2.dev17.dist-info → localstack_core-4.8.2.dev19.dist-info}/top_level.txt +0 -0
|
@@ -1174,6 +1174,17 @@ class BaseCBORRequestParser(RequestParser, ABC):
|
|
|
1174
1174
|
return node
|
|
1175
1175
|
return super()._parse_timestamp(_, shape, node, ___)
|
|
1176
1176
|
|
|
1177
|
+
@_text_content
|
|
1178
|
+
def _parse_boolean(self, _, __, node: str | bool, ___) -> bool:
|
|
1179
|
+
if isinstance(node, str):
|
|
1180
|
+
value = node.lower()
|
|
1181
|
+
if value == "true":
|
|
1182
|
+
return True
|
|
1183
|
+
if value == "false":
|
|
1184
|
+
return False
|
|
1185
|
+
raise ValueError(f"cannot parse boolean value {node}")
|
|
1186
|
+
return node
|
|
1187
|
+
|
|
1177
1188
|
# This helper method is intended for use when parsing indefinite length items.
|
|
1178
1189
|
# It does nothing if the next byte is not the break code. If the next byte is
|
|
1179
1190
|
# the break code, it advances past that byte and returns True so the calling
|
|
@@ -94,7 +94,6 @@ be sent back to the calling client.
|
|
|
94
94
|
|
|
95
95
|
import abc
|
|
96
96
|
import base64
|
|
97
|
-
import copy
|
|
98
97
|
import datetime
|
|
99
98
|
import functools
|
|
100
99
|
import json
|
|
@@ -117,6 +116,7 @@ from botocore.model import (
|
|
|
117
116
|
OperationModel,
|
|
118
117
|
ServiceModel,
|
|
119
118
|
Shape,
|
|
119
|
+
ShapeResolver,
|
|
120
120
|
StringShape,
|
|
121
121
|
StructureShape,
|
|
122
122
|
)
|
|
@@ -293,7 +293,11 @@ class ResponseSerializer(abc.ABC):
|
|
|
293
293
|
f"Error to serialize ({error.__class__.__name__ if error else None}) is not a ServiceException."
|
|
294
294
|
)
|
|
295
295
|
shape = operation_model.service_model.shape_for_error_code(error.code)
|
|
296
|
-
serialized_response.status_code =
|
|
296
|
+
serialized_response.status_code = self._get_error_status_code(
|
|
297
|
+
error=error,
|
|
298
|
+
headers=headers,
|
|
299
|
+
service_model=operation_model.service_model,
|
|
300
|
+
)
|
|
297
301
|
|
|
298
302
|
self._serialize_error(
|
|
299
303
|
error, serialized_response, shape, operation_model, mime_type, request_id
|
|
@@ -614,6 +618,34 @@ class ResponseSerializer(abc.ABC):
|
|
|
614
618
|
def _get_error_message(self, error: Exception) -> str | None:
|
|
615
619
|
return str(error) if error is not None and str(error) != "None" else None
|
|
616
620
|
|
|
621
|
+
def _get_error_status_code(
|
|
622
|
+
self, error: ServiceException, headers: Headers, service_model: ServiceModel
|
|
623
|
+
) -> int:
|
|
624
|
+
return error.status_code
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
class QueryCompatibleProtocolMixin:
|
|
628
|
+
def _get_error_status_code(
|
|
629
|
+
self, error: ServiceException, headers: dict | Headers | None, service_model: ServiceModel
|
|
630
|
+
) -> int:
|
|
631
|
+
# by default, some protocols (namely `json` and `smithy-rpc-v2-cbor`) might not define exception status code in
|
|
632
|
+
# their specs, so they are not defined in the `ServiceException` object and will use the default value of `400`
|
|
633
|
+
# But Query compatible service always do define them, so we get the wrong code for service that are
|
|
634
|
+
# multi-protocols like CloudWatch
|
|
635
|
+
# we need to verify if the service is compatible, and if the client has requested the query compatible error
|
|
636
|
+
# code to return the right value
|
|
637
|
+
if not service_model.is_query_compatible:
|
|
638
|
+
return error.status_code
|
|
639
|
+
|
|
640
|
+
if headers and headers.get("x-amzn-query-mode") == "true":
|
|
641
|
+
return error.status_code
|
|
642
|
+
|
|
643
|
+
# we only want to override status code 4XX
|
|
644
|
+
if 400 < error.status_code <= 499:
|
|
645
|
+
return 400
|
|
646
|
+
|
|
647
|
+
return error.status_code
|
|
648
|
+
|
|
617
649
|
def _add_query_compatible_error_header(self, response: Response, error: ServiceException):
|
|
618
650
|
"""
|
|
619
651
|
Add an `x-amzn-query-error` header for client to translate errors codes from former `query` services
|
|
@@ -623,6 +655,23 @@ class ResponseSerializer(abc.ABC):
|
|
|
623
655
|
sender_fault = "Sender" if error.sender_fault else "Receiver"
|
|
624
656
|
response.headers["x-amzn-query-error"] = f"{error.code};{sender_fault}"
|
|
625
657
|
|
|
658
|
+
def _get_error_code(
|
|
659
|
+
self, is_query_compatible: bool, error: ServiceException, shape: Shape | None = None
|
|
660
|
+
):
|
|
661
|
+
# if the operation is query compatible, we need to add to use shape name
|
|
662
|
+
if is_query_compatible:
|
|
663
|
+
if shape:
|
|
664
|
+
code = shape.name
|
|
665
|
+
else:
|
|
666
|
+
# if the shape is not defined, we are using the Exception named to derive the `Code`, like you would
|
|
667
|
+
# from the shape. This allows us to have Exception that are valid in multi-protocols by defining its
|
|
668
|
+
# code and its name to be different
|
|
669
|
+
code = error.__class__.__name__
|
|
670
|
+
else:
|
|
671
|
+
code = error.code
|
|
672
|
+
|
|
673
|
+
return code
|
|
674
|
+
|
|
626
675
|
|
|
627
676
|
class BaseXMLResponseSerializer(ResponseSerializer):
|
|
628
677
|
"""
|
|
@@ -1236,7 +1285,7 @@ class EC2ResponseSerializer(QueryResponseSerializer):
|
|
|
1236
1285
|
request_id_element.text = request_id
|
|
1237
1286
|
|
|
1238
1287
|
|
|
1239
|
-
class JSONResponseSerializer(ResponseSerializer):
|
|
1288
|
+
class JSONResponseSerializer(QueryCompatibleProtocolMixin, ResponseSerializer):
|
|
1240
1289
|
"""
|
|
1241
1290
|
The ``JSONResponseSerializer`` is responsible for the serialization of responses from services with the ``json``
|
|
1242
1291
|
protocol. It implements the JSON response body serialization, which is also used by the
|
|
@@ -1267,15 +1316,12 @@ class JSONResponseSerializer(ResponseSerializer):
|
|
|
1267
1316
|
# com.amazon.coral.service#ExceptionName
|
|
1268
1317
|
# if json-1.1, it should only be the name
|
|
1269
1318
|
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
# as the exception code.
|
|
1273
|
-
if shape and operation_model.service_model.is_query_compatible:
|
|
1274
|
-
code = shape.name
|
|
1275
|
-
else:
|
|
1276
|
-
code = error.code
|
|
1319
|
+
is_query_compatible = operation_model.service_model.is_query_compatible
|
|
1320
|
+
code = self._get_error_code(is_query_compatible, error, shape)
|
|
1277
1321
|
|
|
1278
1322
|
response.headers["X-Amzn-Errortype"] = code
|
|
1323
|
+
|
|
1324
|
+
# the `__type` field is not defined in default botocore error shapes
|
|
1279
1325
|
body["__type"] = code
|
|
1280
1326
|
|
|
1281
1327
|
if shape:
|
|
@@ -1283,17 +1329,25 @@ class JSONResponseSerializer(ResponseSerializer):
|
|
|
1283
1329
|
# TODO add a possibility to serialize simple non-modelled errors (like S3 NoSuchBucket#BucketName)
|
|
1284
1330
|
for member in shape.members:
|
|
1285
1331
|
if hasattr(error, member):
|
|
1286
|
-
|
|
1332
|
+
value = getattr(error, member)
|
|
1333
|
+
|
|
1287
1334
|
# Default error message fields can sometimes have different casing in the specs
|
|
1288
1335
|
elif member.lower() in ["code", "message"] and hasattr(error, member.lower()):
|
|
1289
|
-
|
|
1336
|
+
value = getattr(error, member.lower())
|
|
1337
|
+
|
|
1338
|
+
else:
|
|
1339
|
+
continue
|
|
1340
|
+
|
|
1341
|
+
if value:
|
|
1342
|
+
remaining_params[member] = value
|
|
1343
|
+
|
|
1290
1344
|
self._serialize(body, remaining_params, shape, None, mime_type)
|
|
1291
1345
|
|
|
1292
|
-
#
|
|
1346
|
+
# this is a workaround, some Error Shape do not define a `Message` field, but it is always returned
|
|
1347
|
+
# this could be solved at the same time as the `__type` field
|
|
1293
1348
|
if "message" not in body and "Message" not in body:
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
body["message"] = message
|
|
1349
|
+
if error_message := self._get_error_message(error):
|
|
1350
|
+
body["message"] = error_message
|
|
1297
1351
|
|
|
1298
1352
|
if mime_type in self.CBOR_TYPES:
|
|
1299
1353
|
response.set_response(cbor2_dumps(body, datetime_as_timestamp=True))
|
|
@@ -1301,7 +1355,7 @@ class JSONResponseSerializer(ResponseSerializer):
|
|
|
1301
1355
|
else:
|
|
1302
1356
|
response.set_json(body)
|
|
1303
1357
|
|
|
1304
|
-
if
|
|
1358
|
+
if is_query_compatible:
|
|
1305
1359
|
self._add_query_compatible_error_header(response, error)
|
|
1306
1360
|
|
|
1307
1361
|
def _serialize_response(
|
|
@@ -1476,6 +1530,11 @@ class BaseCBORResponseSerializer(ResponseSerializer):
|
|
|
1476
1530
|
required at the end.
|
|
1477
1531
|
AWS, for both Kinesis and `smithy-rpc-v2-cbor` services, is using indefinite data structures when returning
|
|
1478
1532
|
responses.
|
|
1533
|
+
|
|
1534
|
+
The CBOR serializer cannot serialize an exception if it is not defined in our specs.
|
|
1535
|
+
LocalStack defines a way to have user-defined exception by subclassing `CommonServiceException`, so it needs to be
|
|
1536
|
+
able to encode those, as well as InternalError
|
|
1537
|
+
We are creating a default botocore structure shape (`_DEFAULT_ERROR_STRUCTURE_SHAPE`) to be used in such cases.
|
|
1479
1538
|
"""
|
|
1480
1539
|
|
|
1481
1540
|
SUPPORTED_MIME_TYPES = [APPLICATION_CBOR, APPLICATION_AMZ_CBOR_1_1]
|
|
@@ -1493,6 +1552,27 @@ class BaseCBORResponseSerializer(ResponseSerializer):
|
|
|
1493
1552
|
BREAK_CODE = b"\xff"
|
|
1494
1553
|
USE_INDEFINITE_DATA_STRUCTURE = True
|
|
1495
1554
|
|
|
1555
|
+
_ERROR_TYPE_SHAPE = StringShape(shape_name="__type", shape_model={"type": "string"})
|
|
1556
|
+
|
|
1557
|
+
_DEFAULT_ERROR_STRUCTURE_SHAPE = StructureShape(
|
|
1558
|
+
shape_name="DefaultErrorStructure",
|
|
1559
|
+
shape_model={
|
|
1560
|
+
"type": "structure",
|
|
1561
|
+
"members": {
|
|
1562
|
+
"message": {"shape": "ErrorMessage"},
|
|
1563
|
+
"__type": {"shape": "ErrorType"},
|
|
1564
|
+
},
|
|
1565
|
+
"error": {"code": "DefaultErrorStructure", "httpStatusCode": 400, "senderFault": True},
|
|
1566
|
+
"exception": True,
|
|
1567
|
+
},
|
|
1568
|
+
shape_resolver=ShapeResolver(
|
|
1569
|
+
shape_map={
|
|
1570
|
+
"ErrorMessage": {"type": "string"},
|
|
1571
|
+
"ErrorType": {"type": "string"},
|
|
1572
|
+
},
|
|
1573
|
+
),
|
|
1574
|
+
)
|
|
1575
|
+
|
|
1496
1576
|
def _serialize_data_item(
|
|
1497
1577
|
self, serialized: bytearray, value: Any, shape: Shape | None, name: str | None = None
|
|
1498
1578
|
) -> None:
|
|
@@ -1590,8 +1670,18 @@ class BaseCBORResponseSerializer(ResponseSerializer):
|
|
|
1590
1670
|
serialized.extend(closing_bytes)
|
|
1591
1671
|
|
|
1592
1672
|
def _serialize_type_structure(
|
|
1593
|
-
self,
|
|
1673
|
+
self,
|
|
1674
|
+
serialized: bytearray,
|
|
1675
|
+
value: dict,
|
|
1676
|
+
shape: Shape | None,
|
|
1677
|
+
name: str | None = None,
|
|
1678
|
+
shape_members: dict[str, Shape] | None = None,
|
|
1594
1679
|
) -> None:
|
|
1680
|
+
# `_serialize_type_structure` has a different signature other `_serialize_type_*` methods as it accepts
|
|
1681
|
+
# `shape_members`. This is because sometimes, the `StructureShape` does not have some members defined in the
|
|
1682
|
+
# specs, and we want to be able to pass arbitrary members to serialize undocumented members.
|
|
1683
|
+
# see `_serialize_error_structure` for its specific usage
|
|
1684
|
+
|
|
1595
1685
|
if name is not None:
|
|
1596
1686
|
# For nested structures, we need to serialize the key first
|
|
1597
1687
|
self._serialize_data_item(serialized, name, shape.key_shape)
|
|
@@ -1603,8 +1693,7 @@ class BaseCBORResponseSerializer(ResponseSerializer):
|
|
|
1603
1693
|
value, self.MAP_MAJOR_TYPE
|
|
1604
1694
|
)
|
|
1605
1695
|
serialized.extend(initial_bytes)
|
|
1606
|
-
|
|
1607
|
-
members = shape.members
|
|
1696
|
+
members = shape_members or shape.members
|
|
1608
1697
|
for member_key, member_value in value.items():
|
|
1609
1698
|
member_shape = members[member_key]
|
|
1610
1699
|
if "name" in member_shape.serialization:
|
|
@@ -1729,6 +1818,38 @@ class BaseCBORResponseSerializer(ResponseSerializer):
|
|
|
1729
1818
|
|
|
1730
1819
|
return initial_byte, None
|
|
1731
1820
|
|
|
1821
|
+
def _serialize_error_structure(
|
|
1822
|
+
self, body: bytearray, shape: Shape | None, error: ServiceException, code: str
|
|
1823
|
+
):
|
|
1824
|
+
if not shape:
|
|
1825
|
+
shape = self._DEFAULT_ERROR_STRUCTURE_SHAPE
|
|
1826
|
+
shape_members = shape.members
|
|
1827
|
+
else:
|
|
1828
|
+
# we need to manually add the `__type` field to the shape members as it is not part of the specs
|
|
1829
|
+
# we do a shallow copy of the shape members
|
|
1830
|
+
shape_members = shape.members.copy()
|
|
1831
|
+
shape_members["__type"] = self._ERROR_TYPE_SHAPE
|
|
1832
|
+
|
|
1833
|
+
# Error responses in the rpcv2Cbor protocol MUST be serialized identically to standard responses with one
|
|
1834
|
+
# additional component to distinguish which error is contained: a body field named __type.
|
|
1835
|
+
params = {"__type": code}
|
|
1836
|
+
|
|
1837
|
+
for member in shape_members:
|
|
1838
|
+
if hasattr(error, member):
|
|
1839
|
+
value = getattr(error, member)
|
|
1840
|
+
|
|
1841
|
+
# Default error message fields can sometimes have different casing in the specs
|
|
1842
|
+
elif member.lower() in ["code", "message"] and hasattr(error, member.lower()):
|
|
1843
|
+
value = getattr(error, member.lower())
|
|
1844
|
+
|
|
1845
|
+
else:
|
|
1846
|
+
continue
|
|
1847
|
+
|
|
1848
|
+
if value:
|
|
1849
|
+
params[member] = value
|
|
1850
|
+
|
|
1851
|
+
self._serialize_type_structure(body, params, shape, None, shape_members=shape_members)
|
|
1852
|
+
|
|
1732
1853
|
|
|
1733
1854
|
class CBORResponseSerializer(BaseCBORResponseSerializer):
|
|
1734
1855
|
"""
|
|
@@ -1752,25 +1873,7 @@ class CBORResponseSerializer(BaseCBORResponseSerializer):
|
|
|
1752
1873
|
response.content_type = mime_type
|
|
1753
1874
|
response.headers["X-Amzn-Errortype"] = error.code
|
|
1754
1875
|
|
|
1755
|
-
|
|
1756
|
-
# FIXME: we need to manually add the `__type` field to the shape as it is not part of the specs
|
|
1757
|
-
# think about a better way, this is very hacky
|
|
1758
|
-
shape_copy = copy.deepcopy(shape)
|
|
1759
|
-
shape_copy.members["__type"] = StringShape(
|
|
1760
|
-
shape_name="__type", shape_model={"type": "string"}
|
|
1761
|
-
)
|
|
1762
|
-
remaining_params = {"__type": error.code}
|
|
1763
|
-
|
|
1764
|
-
for member_name in shape_copy.members:
|
|
1765
|
-
if hasattr(error, member_name):
|
|
1766
|
-
remaining_params[member_name] = getattr(error, member_name)
|
|
1767
|
-
# Default error message fields can sometimes have different casing in the specs
|
|
1768
|
-
elif member_name.lower() in ["code", "message"] and hasattr(
|
|
1769
|
-
error, member_name.lower()
|
|
1770
|
-
):
|
|
1771
|
-
remaining_params[member_name] = getattr(error, member_name.lower())
|
|
1772
|
-
|
|
1773
|
-
self._serialize_data_item(body, remaining_params, shape_copy, None)
|
|
1876
|
+
self._serialize_error_structure(body, shape, error, code=error.code)
|
|
1774
1877
|
|
|
1775
1878
|
response.set_response(bytes(body))
|
|
1776
1879
|
|
|
@@ -1846,7 +1949,9 @@ class BaseRpcV2ResponseSerializer(ResponseSerializer):
|
|
|
1846
1949
|
raise NotImplementedError
|
|
1847
1950
|
|
|
1848
1951
|
|
|
1849
|
-
class RpcV2CBORResponseSerializer(
|
|
1952
|
+
class RpcV2CBORResponseSerializer(
|
|
1953
|
+
QueryCompatibleProtocolMixin, BaseRpcV2ResponseSerializer, BaseCBORResponseSerializer
|
|
1954
|
+
):
|
|
1850
1955
|
"""
|
|
1851
1956
|
The RpcV2CBORResponseSerializer implements the CBOR body serialization part for the RPC v2 protocol, and implements the
|
|
1852
1957
|
specific exception serialization.
|
|
@@ -1885,40 +1990,14 @@ class RpcV2CBORResponseSerializer(BaseRpcV2ResponseSerializer, BaseCBORResponseS
|
|
|
1885
1990
|
|
|
1886
1991
|
# Responses for the rpcv2Cbor protocol SHOULD NOT contain the X-Amzn-ErrorType header.
|
|
1887
1992
|
# Type information is always serialized in the payload. This is different from the `json` protocol
|
|
1993
|
+
is_query_compatible = operation_model.service_model.is_query_compatible
|
|
1994
|
+
code = self._get_error_code(is_query_compatible, error, shape)
|
|
1888
1995
|
|
|
1889
|
-
|
|
1890
|
-
# when we create `CommonServiceException` and they don't exist in the spec, we give already give the error name
|
|
1891
|
-
# as the exception code.
|
|
1892
|
-
if shape and operation_model.service_model.is_query_compatible:
|
|
1893
|
-
code = shape.name
|
|
1894
|
-
else:
|
|
1895
|
-
code = error.code
|
|
1896
|
-
|
|
1897
|
-
if shape:
|
|
1898
|
-
# FIXME: we need to manually add the `__type` field to the shape as it is not part of the specs
|
|
1899
|
-
# think about a better way, this is very hacky
|
|
1900
|
-
# Error responses in the rpcv2Cbor protocol MUST be serialized identically to standard responses with one
|
|
1901
|
-
# additional component to distinguish which error is contained: a body field named __type.
|
|
1902
|
-
shape_copy = copy.deepcopy(shape)
|
|
1903
|
-
shape_copy.members["__type"] = StringShape(
|
|
1904
|
-
shape_name="__type", shape_model={"type": "string"}
|
|
1905
|
-
)
|
|
1906
|
-
remaining_params = {"__type": code}
|
|
1907
|
-
|
|
1908
|
-
for member_name in shape_copy.members:
|
|
1909
|
-
if hasattr(error, member_name):
|
|
1910
|
-
remaining_params[member_name] = getattr(error, member_name)
|
|
1911
|
-
# Default error message fields can sometimes have different casing in the specs
|
|
1912
|
-
elif member_name.lower() in ["code", "message"] and hasattr(
|
|
1913
|
-
error, member_name.lower()
|
|
1914
|
-
):
|
|
1915
|
-
remaining_params[member_name] = getattr(error, member_name.lower())
|
|
1916
|
-
|
|
1917
|
-
self._serialize_data_item(body, remaining_params, shape_copy, None)
|
|
1996
|
+
self._serialize_error_structure(body, shape, error, code=code)
|
|
1918
1997
|
|
|
1919
1998
|
response.set_response(bytes(body))
|
|
1920
1999
|
|
|
1921
|
-
if
|
|
2000
|
+
if is_query_compatible:
|
|
1922
2001
|
self._add_query_compatible_error_header(response, error)
|
|
1923
2002
|
|
|
1924
2003
|
def _prepare_additional_traits_in_response(
|
|
@@ -108,8 +108,7 @@ _STORE_LOCK = threading.RLock()
|
|
|
108
108
|
AWS_MAX_DATAPOINTS_ACCEPTED: int = 1440
|
|
109
109
|
|
|
110
110
|
|
|
111
|
-
class
|
|
112
|
-
# TODO: check this error against AWS (doesn't exist in the API)
|
|
111
|
+
class ValidationException(CommonServiceException):
|
|
113
112
|
def __init__(self, message: str):
|
|
114
113
|
super().__init__("ValidationError", message, 400, True)
|
|
115
114
|
|
|
@@ -315,6 +314,11 @@ class CloudwatchProvider(CloudwatchApi, ServiceLifecycleHook):
|
|
|
315
314
|
state_reason_data: StateReasonData = None,
|
|
316
315
|
**kwargs,
|
|
317
316
|
) -> None:
|
|
317
|
+
if state_value not in ("OK", "ALARM", "INSUFFICIENT_DATA"):
|
|
318
|
+
raise ValidationException(
|
|
319
|
+
f"1 validation error detected: Value '{state_value}' at 'stateValue' failed to satisfy constraint: Member must satisfy enum value set: [INSUFFICIENT_DATA, ALARM, OK]"
|
|
320
|
+
)
|
|
321
|
+
|
|
318
322
|
try:
|
|
319
323
|
if state_reason_data:
|
|
320
324
|
state_reason_data = json.loads(state_reason_data)
|
|
@@ -333,10 +337,6 @@ class CloudwatchProvider(CloudwatchApi, ServiceLifecycleHook):
|
|
|
333
337
|
raise ResourceNotFound()
|
|
334
338
|
|
|
335
339
|
old_state = alarm.alarm["StateValue"]
|
|
336
|
-
if state_value not in ("OK", "ALARM", "INSUFFICIENT_DATA"):
|
|
337
|
-
raise ValidationError(
|
|
338
|
-
f"1 validation error detected: Value '{state_value}' at 'stateValue' failed to satisfy constraint: Member must satisfy enum value set: [INSUFFICIENT_DATA, ALARM, OK]"
|
|
339
|
-
)
|
|
340
340
|
|
|
341
341
|
old_state_reason = alarm.alarm["StateReason"]
|
|
342
342
|
old_state_update_timestamp = alarm.alarm["StateUpdatedTimestamp"]
|
|
@@ -416,7 +416,7 @@ class CloudwatchProvider(CloudwatchApi, ServiceLifecycleHook):
|
|
|
416
416
|
"ignore",
|
|
417
417
|
"missing",
|
|
418
418
|
]:
|
|
419
|
-
raise
|
|
419
|
+
raise ValidationException(
|
|
420
420
|
f"The value {request['TreatMissingData']} is not supported for TreatMissingData parameter. Supported values are [breaching, notBreaching, ignore, missing]."
|
|
421
421
|
)
|
|
422
422
|
# do some sanity checks:
|
|
@@ -425,7 +425,7 @@ class CloudwatchProvider(CloudwatchApi, ServiceLifecycleHook):
|
|
|
425
425
|
value = request.get("Period")
|
|
426
426
|
if value not in (10, 30):
|
|
427
427
|
if value % 60 != 0:
|
|
428
|
-
raise
|
|
428
|
+
raise ValidationException("Period must be 10, 30 or a multiple of 60")
|
|
429
429
|
if request.get("Statistic"):
|
|
430
430
|
if request.get("Statistic") not in [
|
|
431
431
|
"SampleCount",
|
|
@@ -434,7 +434,7 @@ class CloudwatchProvider(CloudwatchApi, ServiceLifecycleHook):
|
|
|
434
434
|
"Minimum",
|
|
435
435
|
"Maximum",
|
|
436
436
|
]:
|
|
437
|
-
raise
|
|
437
|
+
raise ValidationException(
|
|
438
438
|
f"Value '{request.get('Statistic')}' at 'statistic' failed to satisfy constraint: Member must satisfy enum value set: [Maximum, SampleCount, Sum, Minimum, Average]"
|
|
439
439
|
)
|
|
440
440
|
|
|
@@ -448,7 +448,7 @@ class CloudwatchProvider(CloudwatchApi, ServiceLifecycleHook):
|
|
|
448
448
|
"evaluate",
|
|
449
449
|
"ignore",
|
|
450
450
|
):
|
|
451
|
-
raise
|
|
451
|
+
raise ValidationException(
|
|
452
452
|
f"Option {evaluate_low_sample_count_percentile} is not supported. "
|
|
453
453
|
"Supported options for parameter EvaluateLowSampleCountPercentile are evaluate and ignore."
|
|
454
454
|
)
|
|
@@ -4,7 +4,7 @@ from datetime import UTC, datetime
|
|
|
4
4
|
from enum import Enum
|
|
5
5
|
from typing import Literal, TypeAlias, TypedDict
|
|
6
6
|
|
|
7
|
-
from localstack.aws.api
|
|
7
|
+
from localstack.aws.api import CommonServiceException
|
|
8
8
|
from localstack.aws.api.events import (
|
|
9
9
|
ApiDestinationDescription,
|
|
10
10
|
ApiDestinationHttpMethod,
|
|
@@ -66,10 +66,9 @@ from localstack.utils.tagging import TaggingService
|
|
|
66
66
|
TargetDict = dict[TargetId, Target]
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
class ValidationException(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
status_code: int = 400
|
|
69
|
+
class ValidationException(CommonServiceException):
|
|
70
|
+
def __init__(self, message: str):
|
|
71
|
+
super().__init__("ValidationException", message, 400, True)
|
|
73
72
|
|
|
74
73
|
|
|
75
74
|
class InvalidEventPatternException(Exception):
|
localstack/version.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '4.8.2.
|
|
32
|
-
__version_tuple__ = version_tuple = (4, 8, 2, '
|
|
31
|
+
__version__ = version = '4.8.2.dev19'
|
|
32
|
+
__version_tuple__ = version_tuple = (4, 8, 2, 'dev19')
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -4,7 +4,7 @@ localstack/deprecations.py,sha256=78Sf99fgH3ckJ20a9SMqsu01r1cm5GgcomkuY4yDMDo,15
|
|
|
4
4
|
localstack/openapi.yaml,sha256=B803NmpwsxG8PHpHrdZYBrUYjnrRh7B_JX0XuNynuFs,30237
|
|
5
5
|
localstack/plugins.py,sha256=BIJC9dlo0WbP7lLKkCiGtd_2q5oeqiHZohvoRTcejXM,2457
|
|
6
6
|
localstack/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
localstack/version.py,sha256=
|
|
7
|
+
localstack/version.py,sha256=IE_bve7M8qjTQjTuS4PoilNZ6QgbOvL8JedTm97JHf8,719
|
|
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
|
|
@@ -83,9 +83,9 @@ localstack/aws/handlers/tracing.py,sha256=y_BUJKjNgaRGebm88NSqni4GFCQ_ZgB2JBRnEt
|
|
|
83
83
|
localstack/aws/handlers/validation.py,sha256=4iyHdJx3ijd49rySwMQNx2UW0XNN5fnkFQxdUO7-AQM,4386
|
|
84
84
|
localstack/aws/protocol/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
85
85
|
localstack/aws/protocol/op_router.py,sha256=2nSpL6H9seK1h_AuIZlBG1yYa_ykARIgJJrKm4Hkc0s,12039
|
|
86
|
-
localstack/aws/protocol/parser.py,sha256=
|
|
86
|
+
localstack/aws/protocol/parser.py,sha256=0flIeZEYI2ZqyyHIIaFkGLbjzj2xpU1fGhnj2sdf2qM,71128
|
|
87
87
|
localstack/aws/protocol/routing.py,sha256=x9AFpMQsVHD7JadtLHR7zjfBw3AJBayITNAYiUtnlwQ,3217
|
|
88
|
-
localstack/aws/protocol/serializer.py,sha256=
|
|
88
|
+
localstack/aws/protocol/serializer.py,sha256=pLj-ExqDghjHx6af23saG-SqiHh_YMxdGezoVL9bqLs,107004
|
|
89
89
|
localstack/aws/protocol/service_router.py,sha256=M5iQ8XKUaPV65DyKewlVYHYNmu4k17Zn_p6_Jdj2Bw8,20705
|
|
90
90
|
localstack/aws/protocol/validate.py,sha256=j3HJAQEKS6V_arrmvlPmP2jbge3LutxwEXDNabDlDdY,5285
|
|
91
91
|
localstack/aws/serving/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -344,7 +344,7 @@ localstack/services/cloudwatch/alarm_scheduler.py,sha256=HPzQgZvDVXIXaEkjJ39L-jB
|
|
|
344
344
|
localstack/services/cloudwatch/cloudwatch_database_helper.py,sha256=IK_MgxG3xTkpKbBe-Buv_6wUuHEc3MGQOqMAqHoEOzk,17270
|
|
345
345
|
localstack/services/cloudwatch/models.py,sha256=y3JPWSZcDofSbkr2orW9pWD1cC4meP7mQ4YbYkVfGx8,3957
|
|
346
346
|
localstack/services/cloudwatch/provider.py,sha256=naHmJCEwNr_dmU3s__H1ru1S6C-OGuNn1TUd59n5W5Y,19479
|
|
347
|
-
localstack/services/cloudwatch/provider_v2.py,sha256=
|
|
347
|
+
localstack/services/cloudwatch/provider_v2.py,sha256=aKbGRS38YE-hb22Zf3SwVjYdzZ9nmgnkZB6ZcYXA010,45117
|
|
348
348
|
localstack/services/cloudwatch/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
349
349
|
localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm.py,sha256=T0P5uTDjQO3lNw5w4wcdBgzFthGDjJXUkPtHo1BP13I,5172
|
|
350
350
|
localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm.schema.json,sha256=8Nam5WqGfyW85m55UVCwJF17Re4tPOIJY_m6Wq37y8k,3829
|
|
@@ -448,7 +448,7 @@ localstack/services/events/archive.py,sha256=4m6zrik4I4Hp5bhbN_F4l0lUHXlgg1mBnw8
|
|
|
448
448
|
localstack/services/events/connection.py,sha256=O6-r8egH1nrTF195UwkMTP5oppPKInhOBBFKG-etz9I,13337
|
|
449
449
|
localstack/services/events/event_bus.py,sha256=KVaQmsCQDQP6YCyABj0NHUhRhEeFM5lllJ7A7d5neIY,4136
|
|
450
450
|
localstack/services/events/event_rule_engine.py,sha256=y00JStGykaVwqtsuYlgLnEVs0m5zAzrCrVWnJJIuyLs,27360
|
|
451
|
-
localstack/services/events/models.py,sha256=
|
|
451
|
+
localstack/services/events/models.py,sha256=Myw_uQU8SR20Hj6or2_92KaxciuzF1f0GpMAfboeoOY,9722
|
|
452
452
|
localstack/services/events/provider.py,sha256=g9lavX3Lr002ymjHoYihly3X5NMQpSOuJQ8ZQunf9jk,76679
|
|
453
453
|
localstack/services/events/replay.py,sha256=FcX5L89Gb-wNJwjdynPZYWT0TyHgRJLUKIoZ2OAW8NU,2958
|
|
454
454
|
localstack/services/events/rule.py,sha256=XfRLThIB3iy7YhW80HcCExjKRqgrOMmHeDjaxr7OtqY,10144
|
|
@@ -1294,13 +1294,13 @@ localstack/utils/server/tcp_proxy.py,sha256=rR6d5jR0ozDvIlpHiqW0cfyY9a2fRGdOzyA8
|
|
|
1294
1294
|
localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1295
1295
|
localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
|
|
1296
1296
|
localstack/utils/xray/traceid.py,sha256=GKO-R2sMMjlrH2UaLPXlQlZ6flbE7ZKb6IZMtMu_M5U,1110
|
|
1297
|
-
localstack_core-4.8.2.
|
|
1298
|
-
localstack_core-4.8.2.
|
|
1299
|
-
localstack_core-4.8.2.
|
|
1300
|
-
localstack_core-4.8.2.
|
|
1301
|
-
localstack_core-4.8.2.
|
|
1302
|
-
localstack_core-4.8.2.
|
|
1303
|
-
localstack_core-4.8.2.
|
|
1304
|
-
localstack_core-4.8.2.
|
|
1305
|
-
localstack_core-4.8.2.
|
|
1306
|
-
localstack_core-4.8.2.
|
|
1297
|
+
localstack_core-4.8.2.dev19.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
|
|
1298
|
+
localstack_core-4.8.2.dev19.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
|
|
1299
|
+
localstack_core-4.8.2.dev19.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
|
|
1300
|
+
localstack_core-4.8.2.dev19.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
|
|
1301
|
+
localstack_core-4.8.2.dev19.dist-info/METADATA,sha256=A-KbaMujdV7E7jY-iYHpiKKArjivsdx3OgweqUGwUtM,5538
|
|
1302
|
+
localstack_core-4.8.2.dev19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
1303
|
+
localstack_core-4.8.2.dev19.dist-info/entry_points.txt,sha256=5IoyjalZoY-PWY5Lk_AeEjEEQ-rKQJhijLe697GVlnM,20953
|
|
1304
|
+
localstack_core-4.8.2.dev19.dist-info/plux.json,sha256=q01U4ZDNUYzkKwv0ex6WclIi4moBeERUoDO9pUeBeRA,21181
|
|
1305
|
+
localstack_core-4.8.2.dev19.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
|
|
1306
|
+
localstack_core-4.8.2.dev19.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"localstack.cloudformation.resource_providers": ["AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "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::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "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::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "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::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "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::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::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "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::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "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::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "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::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin"], "localstack.packages": ["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", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package"], "localstack.hooks.on_infra_start": ["_patch_botocore_endpoint_in_memory=localstack.aws.client:_patch_botocore_endpoint_in_memory", "_patch_botocore_json_parser=localstack.aws.client:_patch_botocore_json_parser", "_patch_cbor2=localstack.aws.client:_patch_cbor2", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "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", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "init_response_mutation_handler=localstack.aws.handlers.response:init_response_mutation_handler", "eager_load_services=localstack.services.plugins:eager_load_services", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches"], "localstack.hooks.on_infra_ready": ["publish_provider_assignment=localstack.utils.analytics.service_providers:publish_provider_assignment", "_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.hooks.configure_localstack_container": ["_mount_machine_file=localstack.utils.analytics.metadata:_mount_machine_file"], "localstack.hooks.prepare_host": ["prepare_host_machine_id=localstack.utils.analytics.metadata:prepare_host_machine_id"], "localstack.hooks.on_infra_shutdown": ["remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "run_on_after_service_shutdown_handlers=localstack.runtime.shutdown:run_on_after_service_shutdown_handlers", "run_shutdown_handlers=localstack.runtime.shutdown:run_shutdown_handlers", "shutdown_services=localstack.runtime.shutdown:shutdown_services", "stop_server=localstack.dns.plugins:stop_server", "publish_metrics=localstack.utils.analytics.metrics.publisher:publish_metrics"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.utils.catalog": ["aws-catalog-remote-state=localstack.utils.catalog.catalog:AwsCatalogRemoteStatePlugin", "aws-catalog-runtime-only=localstack.utils.catalog.catalog:AwsCatalogRuntimePlugin"], "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:engine-legacy=localstack.services.providers:cloudformation", "cloudformation:default=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", "sns:v2=localstack.services.providers:sns_v2", "sqs:default=localstack.services.providers:sqs", "ssm:default=localstack.services.providers:ssm", "stepfunctions:default=localstack.services.providers:stepfunctions", "stepfunctions:v2=localstack.services.providers:stepfunctions_v2", "sts:default=localstack.services.providers:sts", "support:default=localstack.services.providers:support", "swf:default=localstack.services.providers:swf", "transcribe:default=localstack.services.providers:transcribe"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"localstack.cloudformation.resource_providers": ["AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "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::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "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::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "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::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "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", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "_patch_botocore_endpoint_in_memory=localstack.aws.client:_patch_botocore_endpoint_in_memory", "_patch_botocore_json_parser=localstack.aws.client:_patch_botocore_json_parser", "_patch_cbor2=localstack.aws.client:_patch_cbor2", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "init_response_mutation_handler=localstack.aws.handlers.response:init_response_mutation_handler", "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", "eager_load_services=localstack.services.plugins:eager_load_services", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger"], "localstack.packages": ["dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package"], "localstack.hooks.on_infra_shutdown": ["stop_server=localstack.dns.plugins:stop_server", "publish_metrics=localstack.utils.analytics.metrics.publisher:publish_metrics", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "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"], "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", "publish_provider_assignment=localstack.utils.analytics.service_providers:publish_provider_assignment"], "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:engine-legacy=localstack.services.providers:cloudformation", "cloudformation:default=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", "sns:v2=localstack.services.providers:sns_v2", "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.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.utils.catalog": ["aws-catalog-remote-state=localstack.utils.catalog.catalog:AwsCatalogRemoteStatePlugin", "aws-catalog-runtime-only=localstack.utils.catalog.catalog:AwsCatalogRuntimePlugin"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"]}
|
|
File without changes
|
{localstack_core-4.8.2.dev17.data → localstack_core-4.8.2.dev19.data}/scripts/localstack-supervisor
RENAMED
|
File without changes
|
{localstack_core-4.8.2.dev17.data → localstack_core-4.8.2.dev19.data}/scripts/localstack.bat
RENAMED
|
File without changes
|
|
File without changes
|
{localstack_core-4.8.2.dev17.dist-info → localstack_core-4.8.2.dev19.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{localstack_core-4.8.2.dev17.dist-info → localstack_core-4.8.2.dev19.dist-info}/licenses/LICENSE.txt
RENAMED
|
File without changes
|
{localstack_core-4.8.2.dev17.dist-info → localstack_core-4.8.2.dev19.dist-info}/top_level.txt
RENAMED
|
File without changes
|