localstack-core 4.4.1.dev19__py3-none-any.whl → 4.4.1.dev21__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- localstack/config.py +14 -0
- localstack/services/apigateway/next_gen/execute_api/context.py +5 -1
- localstack/services/apigateway/next_gen/execute_api/handlers/integration_request.py +12 -8
- localstack/services/apigateway/next_gen/execute_api/handlers/integration_response.py +2 -1
- localstack/services/apigateway/next_gen/execute_api/handlers/parse.py +11 -1
- localstack/services/apigateway/next_gen/execute_api/template_mapping.py +16 -11
- localstack/services/apigateway/next_gen/execute_api/test_invoke.py +9 -1
- localstack/services/apigateway/next_gen/execute_api/variables.py +5 -0
- localstack/services/kinesis/kinesis_mock_server.py +81 -18
- localstack/services/kinesis/packages.py +67 -13
- localstack/services/kinesis/plugins.py +9 -1
- localstack/version.py +2 -2
- {localstack_core-4.4.1.dev19.dist-info → localstack_core-4.4.1.dev21.dist-info}/METADATA +1 -1
- {localstack_core-4.4.1.dev19.dist-info → localstack_core-4.4.1.dev21.dist-info}/RECORD +22 -22
- localstack_core-4.4.1.dev21.dist-info/plux.json +1 -0
- localstack_core-4.4.1.dev19.dist-info/plux.json +0 -1
- {localstack_core-4.4.1.dev19.data → localstack_core-4.4.1.dev21.data}/scripts/localstack +0 -0
- {localstack_core-4.4.1.dev19.data → localstack_core-4.4.1.dev21.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.4.1.dev19.data → localstack_core-4.4.1.dev21.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.4.1.dev19.dist-info → localstack_core-4.4.1.dev21.dist-info}/WHEEL +0 -0
- {localstack_core-4.4.1.dev19.dist-info → localstack_core-4.4.1.dev21.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.4.1.dev19.dist-info → localstack_core-4.4.1.dev21.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.4.1.dev19.dist-info → localstack_core-4.4.1.dev21.dist-info}/top_level.txt +0 -0
localstack/config.py
CHANGED
@@ -896,6 +896,20 @@ KINESIS_MOCK_LOG_LEVEL = os.environ.get("KINESIS_MOCK_LOG_LEVEL", "").strip()
|
|
896
896
|
# randomly inject faults to Kinesis
|
897
897
|
KINESIS_ERROR_PROBABILITY = float(os.environ.get("KINESIS_ERROR_PROBABILITY", "").strip() or 0.0)
|
898
898
|
|
899
|
+
# SEMI-PUBLIC: "node" (default); not actively communicated
|
900
|
+
# Select whether to use the node or scala build when running Kinesis Mock
|
901
|
+
KINESIS_MOCK_PROVIDER_ENGINE = os.environ.get("KINESIS_MOCK_PROVIDER_ENGINE", "").strip() or "node"
|
902
|
+
|
903
|
+
# set the maximum Java heap size corresponding to the '-Xmx<size>' flag
|
904
|
+
KINESIS_MOCK_MAXIMUM_HEAP_SIZE = (
|
905
|
+
os.environ.get("KINESIS_MOCK_MAXIMUM_HEAP_SIZE", "").strip() or "512m"
|
906
|
+
)
|
907
|
+
|
908
|
+
# set the initial Java heap size corresponding to the '-Xms<size>' flag
|
909
|
+
KINESIS_MOCK_INITIAL_HEAP_SIZE = (
|
910
|
+
os.environ.get("KINESIS_MOCK_INITIAL_HEAP_SIZE", "").strip() or "256m"
|
911
|
+
)
|
912
|
+
|
899
913
|
# randomly inject faults to DynamoDB
|
900
914
|
DYNAMODB_ERROR_PROBABILITY = float(os.environ.get("DYNAMODB_ERROR_PROBABILITY", "").strip() or 0.0)
|
901
915
|
DYNAMODB_READ_ERROR_PROBABILITY = float(
|
@@ -8,7 +8,7 @@ from werkzeug.datastructures import Headers
|
|
8
8
|
from localstack.aws.api.apigateway import Integration, Method, Resource
|
9
9
|
from localstack.services.apigateway.models import RestApiDeployment
|
10
10
|
|
11
|
-
from .variables import ContextVariables, LoggingContextVariables
|
11
|
+
from .variables import ContextVariableOverrides, ContextVariables, LoggingContextVariables
|
12
12
|
|
13
13
|
|
14
14
|
class InvocationRequest(TypedDict, total=False):
|
@@ -98,6 +98,9 @@ class RestApiInvocationContext(RequestContext):
|
|
98
98
|
"""The Stage variables, also used in parameters mapping and mapping templates"""
|
99
99
|
context_variables: Optional[ContextVariables]
|
100
100
|
"""The $context used in data models, authorizers, mapping templates, and CloudWatch access logging"""
|
101
|
+
context_variable_overrides: Optional[ContextVariableOverrides]
|
102
|
+
"""requestOverrides and responseOverrides are passed from request templates to response templates but are
|
103
|
+
not in the integration context"""
|
101
104
|
logging_context_variables: Optional[LoggingContextVariables]
|
102
105
|
"""Additional $context variables available only for access logging, not yet implemented"""
|
103
106
|
invocation_request: Optional[InvocationRequest]
|
@@ -129,3 +132,4 @@ class RestApiInvocationContext(RequestContext):
|
|
129
132
|
self.endpoint_response = None
|
130
133
|
self.invocation_response = None
|
131
134
|
self.trace_id = None
|
135
|
+
self.context_variable_overrides = None
|
@@ -22,7 +22,7 @@ from ..template_mapping import (
|
|
22
22
|
MappingTemplateParams,
|
23
23
|
MappingTemplateVariables,
|
24
24
|
)
|
25
|
-
from ..variables import ContextVarsRequestOverride
|
25
|
+
from ..variables import ContextVariableOverrides, ContextVarsRequestOverride
|
26
26
|
|
27
27
|
LOG = logging.getLogger(__name__)
|
28
28
|
|
@@ -119,13 +119,16 @@ class IntegrationRequestHandler(RestApiGatewayHandler):
|
|
119
119
|
|
120
120
|
converted_body = self.convert_body(context)
|
121
121
|
|
122
|
-
body,
|
122
|
+
body, mapped_overrides = self.render_request_template_mapping(
|
123
123
|
context=context, body=converted_body, template=request_template
|
124
124
|
)
|
125
|
+
# Update the context with the returned mapped overrides
|
126
|
+
context.context_variable_overrides = mapped_overrides
|
125
127
|
# mutate the ContextVariables with the requestOverride result, as we copy the context when rendering the
|
126
128
|
# template to avoid mutation on other fields
|
127
|
-
|
128
|
-
|
129
|
+
request_override: ContextVarsRequestOverride = mapped_overrides.get(
|
130
|
+
"requestOverride", {}
|
131
|
+
)
|
129
132
|
# TODO: log every override that happens afterwards (in a loop on `request_override`)
|
130
133
|
merge_recursive(request_override, request_data_mapping, overwrite=True)
|
131
134
|
|
@@ -180,18 +183,18 @@ class IntegrationRequestHandler(RestApiGatewayHandler):
|
|
180
183
|
context: RestApiInvocationContext,
|
181
184
|
body: str | bytes,
|
182
185
|
template: str,
|
183
|
-
) -> tuple[bytes,
|
186
|
+
) -> tuple[bytes, ContextVariableOverrides]:
|
184
187
|
request: InvocationRequest = context.invocation_request
|
185
188
|
|
186
189
|
if not template:
|
187
|
-
return to_bytes(body),
|
190
|
+
return to_bytes(body), context.context_variable_overrides
|
188
191
|
|
189
192
|
try:
|
190
193
|
body_utf8 = to_str(body)
|
191
194
|
except UnicodeError:
|
192
195
|
raise InternalServerError("Internal server error")
|
193
196
|
|
194
|
-
body,
|
197
|
+
body, mapped_overrides = self._vtl_template.render_request(
|
195
198
|
template=template,
|
196
199
|
variables=MappingTemplateVariables(
|
197
200
|
context=context.context_variables,
|
@@ -205,8 +208,9 @@ class IntegrationRequestHandler(RestApiGatewayHandler):
|
|
205
208
|
),
|
206
209
|
),
|
207
210
|
),
|
211
|
+
context_overrides=context.context_variable_overrides,
|
208
212
|
)
|
209
|
-
return to_bytes(body),
|
213
|
+
return to_bytes(body), mapped_overrides
|
210
214
|
|
211
215
|
@staticmethod
|
212
216
|
def get_request_template(integration: Integration, request: InvocationRequest) -> str:
|
@@ -263,7 +263,7 @@ class IntegrationResponseHandler(RestApiGatewayHandler):
|
|
263
263
|
self, context: RestApiInvocationContext, template: str, body: bytes | str
|
264
264
|
) -> tuple[bytes, ContextVarsResponseOverride]:
|
265
265
|
if not template:
|
266
|
-
return to_bytes(body),
|
266
|
+
return to_bytes(body), context.context_variable_overrides["responseOverride"]
|
267
267
|
|
268
268
|
# if there are no template, we can pass binary data through
|
269
269
|
if not isinstance(body, str):
|
@@ -284,6 +284,7 @@ class IntegrationResponseHandler(RestApiGatewayHandler):
|
|
284
284
|
),
|
285
285
|
),
|
286
286
|
),
|
287
|
+
context_overrides=context.context_variable_overrides,
|
287
288
|
)
|
288
289
|
|
289
290
|
# AWS ignores the status if the override isn't an integer between 100 and 599
|
@@ -18,7 +18,13 @@ from ..context import InvocationRequest, RestApiInvocationContext
|
|
18
18
|
from ..header_utils import should_drop_header_from_invocation
|
19
19
|
from ..helpers import generate_trace_id, generate_trace_parent, parse_trace_id
|
20
20
|
from ..moto_helpers import get_stage_variables
|
21
|
-
from ..variables import
|
21
|
+
from ..variables import (
|
22
|
+
ContextVariableOverrides,
|
23
|
+
ContextVariables,
|
24
|
+
ContextVarsIdentity,
|
25
|
+
ContextVarsRequestOverride,
|
26
|
+
ContextVarsResponseOverride,
|
27
|
+
)
|
22
28
|
|
23
29
|
LOG = logging.getLogger(__name__)
|
24
30
|
|
@@ -40,6 +46,10 @@ class InvocationRequestParser(RestApiGatewayHandler):
|
|
40
46
|
# then we can create the ContextVariables, used throughout the invocation as payload and to render authorizer
|
41
47
|
# payload, mapping templates and such.
|
42
48
|
context.context_variables = self.create_context_variables(context)
|
49
|
+
context.context_variable_overrides = ContextVariableOverrides(
|
50
|
+
requestOverride=ContextVarsRequestOverride(header={}, querystring={}, path={}),
|
51
|
+
responseOverride=ContextVarsResponseOverride(header={}, status=0),
|
52
|
+
)
|
43
53
|
# TODO: maybe adjust the logging
|
44
54
|
LOG.debug("Initializing $context='%s'", context.context_variables)
|
45
55
|
# then populate the stage variables
|
@@ -26,8 +26,8 @@ from airspeed.operators import dict_to_string
|
|
26
26
|
|
27
27
|
from localstack import config
|
28
28
|
from localstack.services.apigateway.next_gen.execute_api.variables import (
|
29
|
+
ContextVariableOverrides,
|
29
30
|
ContextVariables,
|
30
|
-
ContextVarsRequestOverride,
|
31
31
|
ContextVarsResponseOverride,
|
32
32
|
)
|
33
33
|
from localstack.utils.aws.templating import APIGW_SOURCE, VelocityUtil, VtlTemplate
|
@@ -261,22 +261,27 @@ class ApiGatewayVtlTemplate(VtlTemplate):
|
|
261
261
|
return namespace
|
262
262
|
|
263
263
|
def render_request(
|
264
|
-
self,
|
265
|
-
|
264
|
+
self,
|
265
|
+
template: str,
|
266
|
+
variables: MappingTemplateVariables,
|
267
|
+
context_overrides: ContextVariableOverrides,
|
268
|
+
) -> tuple[str, ContextVariableOverrides]:
|
266
269
|
variables_copy: MappingTemplateVariables = copy.deepcopy(variables)
|
267
|
-
variables_copy["context"]
|
268
|
-
querystring={}, header={}, path={}
|
269
|
-
)
|
270
|
+
variables_copy["context"].update(copy.deepcopy(context_overrides))
|
270
271
|
result = self.render_vtl(template=template.strip(), variables=variables_copy)
|
271
|
-
return result,
|
272
|
+
return result, ContextVariableOverrides(
|
273
|
+
requestOverride=variables_copy["context"]["requestOverride"],
|
274
|
+
responseOverride=variables_copy["context"]["responseOverride"],
|
275
|
+
)
|
272
276
|
|
273
277
|
def render_response(
|
274
|
-
self,
|
278
|
+
self,
|
279
|
+
template: str,
|
280
|
+
variables: MappingTemplateVariables,
|
281
|
+
context_overrides: ContextVariableOverrides,
|
275
282
|
) -> tuple[str, ContextVarsResponseOverride]:
|
276
283
|
variables_copy: MappingTemplateVariables = copy.deepcopy(variables)
|
277
|
-
variables_copy["context"]
|
278
|
-
header={}, status=0
|
279
|
-
)
|
284
|
+
variables_copy["context"].update(copy.deepcopy(context_overrides))
|
280
285
|
result = self.render_vtl(template=template.strip(), variables=variables_copy)
|
281
286
|
return result, variables_copy["context"]["responseOverride"]
|
282
287
|
|
@@ -16,6 +16,11 @@ from .context import InvocationRequest, RestApiInvocationContext
|
|
16
16
|
from .handlers.resource_router import RestAPIResourceRouter
|
17
17
|
from .header_utils import build_multi_value_headers
|
18
18
|
from .template_mapping import dict_to_string
|
19
|
+
from .variables import (
|
20
|
+
ContextVariableOverrides,
|
21
|
+
ContextVarsRequestOverride,
|
22
|
+
ContextVarsResponseOverride,
|
23
|
+
)
|
19
24
|
|
20
25
|
# TODO: we probably need to write and populate those logs as part of the handler chain itself
|
21
26
|
# and store it in the InvocationContext. That way, we could also retrieve in when calling TestInvoke
|
@@ -150,8 +155,11 @@ def create_test_invocation_context(
|
|
150
155
|
invocation_context.context_variables = parse_handler.create_context_variables(
|
151
156
|
invocation_context
|
152
157
|
)
|
158
|
+
invocation_context.context_variable_overrides = ContextVariableOverrides(
|
159
|
+
requestOverride=ContextVarsRequestOverride(header={}, path={}, querystring={}),
|
160
|
+
responseOverride=ContextVarsResponseOverride(header={}, status=0),
|
161
|
+
)
|
153
162
|
invocation_context.trace_id = parse_handler.populate_trace_id({})
|
154
|
-
|
155
163
|
resource = deployment.rest_api.resources[test_request["resourceId"]]
|
156
164
|
resource_method = resource["resourceMethods"][http_method]
|
157
165
|
invocation_context.resource = resource
|
@@ -75,6 +75,11 @@ class ContextVarsResponseOverride(TypedDict):
|
|
75
75
|
status: int
|
76
76
|
|
77
77
|
|
78
|
+
class ContextVariableOverrides(TypedDict):
|
79
|
+
requestOverride: ContextVarsRequestOverride
|
80
|
+
responseOverride: ContextVarsResponseOverride
|
81
|
+
|
82
|
+
|
78
83
|
class GatewayResponseContextVarsError(TypedDict, total=False):
|
79
84
|
# This variable can only be used for simple variable substitution in a GatewayResponse body-mapping template,
|
80
85
|
# which is not processed by the Velocity Template Language engine, and in access logging.
|
@@ -1,11 +1,16 @@
|
|
1
1
|
import logging
|
2
2
|
import os
|
3
3
|
import threading
|
4
|
+
from abc import abstractmethod
|
4
5
|
from pathlib import Path
|
5
6
|
from typing import Dict, List, Optional, Tuple
|
6
7
|
|
7
8
|
from localstack import config
|
8
|
-
from localstack.services.kinesis.packages import
|
9
|
+
from localstack.services.kinesis.packages import (
|
10
|
+
KinesisMockEngine,
|
11
|
+
kinesismock_package,
|
12
|
+
kinesismock_scala_package,
|
13
|
+
)
|
9
14
|
from localstack.utils.common import TMP_THREADS, ShellCommandThread, get_free_tcp_port, mkdir
|
10
15
|
from localstack.utils.run import FuncThread
|
11
16
|
from localstack.utils.serving import Server
|
@@ -21,7 +26,7 @@ class KinesisMockServer(Server):
|
|
21
26
|
def __init__(
|
22
27
|
self,
|
23
28
|
port: int,
|
24
|
-
|
29
|
+
exe_path: Path,
|
25
30
|
latency: str,
|
26
31
|
account_id: str,
|
27
32
|
host: str = "localhost",
|
@@ -32,7 +37,7 @@ class KinesisMockServer(Server):
|
|
32
37
|
self._latency = latency
|
33
38
|
self._data_dir = data_dir
|
34
39
|
self._data_filename = f"{self._account_id}.json"
|
35
|
-
self.
|
40
|
+
self._exe_path = exe_path
|
36
41
|
self._log_level = log_level
|
37
42
|
super().__init__(port, host)
|
38
43
|
|
@@ -51,15 +56,9 @@ class KinesisMockServer(Server):
|
|
51
56
|
t.start()
|
52
57
|
return t
|
53
58
|
|
54
|
-
|
55
|
-
|
56
|
-
Helper method for creating kinesis mock invocation command
|
57
|
-
:return: returns a tuple containing the command list and a dictionary with the environment variables
|
58
|
-
"""
|
59
|
-
|
59
|
+
@property
|
60
|
+
def _environment_variables(self) -> Dict:
|
60
61
|
env_vars = {
|
61
|
-
# Use the `server.json` packaged next to the main.js
|
62
|
-
"KINESIS_MOCK_CERT_PATH": str((self._js_path.parent / "server.json").absolute()),
|
63
62
|
"KINESIS_MOCK_PLAIN_PORT": self.port,
|
64
63
|
# Each kinesis-mock instance listens to two ports - secure and insecure.
|
65
64
|
# LocalStack uses only one - the insecure one. Block the secure port to avoid conflicts.
|
@@ -91,13 +90,60 @@ class KinesisMockServer(Server):
|
|
91
90
|
env_vars["PERSIST_INTERVAL"] = config.KINESIS_MOCK_PERSIST_INTERVAL
|
92
91
|
|
93
92
|
env_vars["LOG_LEVEL"] = self._log_level
|
94
|
-
|
95
|
-
return
|
93
|
+
|
94
|
+
return env_vars
|
95
|
+
|
96
|
+
@abstractmethod
|
97
|
+
def _create_shell_command(self) -> Tuple[List, Dict]:
|
98
|
+
"""
|
99
|
+
Helper method for creating kinesis mock invocation command
|
100
|
+
:return: returns a tuple containing the command list and a dictionary with the environment variables
|
101
|
+
"""
|
102
|
+
pass
|
96
103
|
|
97
104
|
def _log_listener(self, line, **_kwargs):
|
98
105
|
LOG.info(line.rstrip())
|
99
106
|
|
100
107
|
|
108
|
+
class KinesisMockScalaServer(KinesisMockServer):
|
109
|
+
def _create_shell_command(self) -> Tuple[List, Dict]:
|
110
|
+
cmd = ["java", "-jar", *self._get_java_vm_options(), str(self._exe_path)]
|
111
|
+
return cmd, self._environment_variables
|
112
|
+
|
113
|
+
@property
|
114
|
+
def _environment_variables(self) -> Dict:
|
115
|
+
default_env_vars = super()._environment_variables
|
116
|
+
kinesis_mock_installer = kinesismock_scala_package.get_installer()
|
117
|
+
return {
|
118
|
+
**default_env_vars,
|
119
|
+
**kinesis_mock_installer.get_java_env_vars(),
|
120
|
+
}
|
121
|
+
|
122
|
+
def _get_java_vm_options(self) -> list[str]:
|
123
|
+
return [
|
124
|
+
f"-Xms{config.KINESIS_MOCK_INITIAL_HEAP_SIZE}",
|
125
|
+
f"-Xmx{config.KINESIS_MOCK_MAXIMUM_HEAP_SIZE}",
|
126
|
+
"-XX:MaxGCPauseMillis=500",
|
127
|
+
"-XX:+ExitOnOutOfMemoryError",
|
128
|
+
]
|
129
|
+
|
130
|
+
|
131
|
+
class KinesisMockNodeServer(KinesisMockServer):
|
132
|
+
@property
|
133
|
+
def _environment_variables(self) -> Dict:
|
134
|
+
node_env_vars = {
|
135
|
+
# Use the `server.json` packaged next to the main.js
|
136
|
+
"KINESIS_MOCK_CERT_PATH": str((self._exe_path.parent / "server.json").absolute()),
|
137
|
+
}
|
138
|
+
|
139
|
+
default_env_vars = super()._environment_variables
|
140
|
+
return {**node_env_vars, **default_env_vars}
|
141
|
+
|
142
|
+
def _create_shell_command(self) -> Tuple[List, Dict]:
|
143
|
+
cmd = ["node", self._exe_path]
|
144
|
+
return cmd, self._environment_variables
|
145
|
+
|
146
|
+
|
101
147
|
class KinesisServerManager:
|
102
148
|
default_startup_timeout = 60
|
103
149
|
|
@@ -136,8 +182,6 @@ class KinesisServerManager:
|
|
136
182
|
config.KINESIS_LATENCY -> configure stream latency (in milliseconds)
|
137
183
|
"""
|
138
184
|
port = get_free_tcp_port()
|
139
|
-
kinesismock_package.install()
|
140
|
-
kinesis_mock_js_path = Path(kinesismock_package.get_installer().get_executable_path())
|
141
185
|
|
142
186
|
# kinesis-mock stores state in json files <account_id>.json, so we can dump everything into `kinesis/`
|
143
187
|
persist_path = os.path.join(config.dirs.data, "kinesis")
|
@@ -159,12 +203,31 @@ class KinesisServerManager:
|
|
159
203
|
log_level = "INFO"
|
160
204
|
latency = config.KINESIS_LATENCY + "ms"
|
161
205
|
|
162
|
-
|
206
|
+
# Install the Scala Kinesis Mock build if specified in KINESIS_MOCK_PROVIDER_ENGINE
|
207
|
+
if KinesisMockEngine(config.KINESIS_MOCK_PROVIDER_ENGINE) == KinesisMockEngine.SCALA:
|
208
|
+
kinesismock_scala_package.install()
|
209
|
+
kinesis_mock_path = Path(
|
210
|
+
kinesismock_scala_package.get_installer().get_executable_path()
|
211
|
+
)
|
212
|
+
|
213
|
+
return KinesisMockScalaServer(
|
214
|
+
port=port,
|
215
|
+
exe_path=kinesis_mock_path,
|
216
|
+
log_level=log_level,
|
217
|
+
latency=latency,
|
218
|
+
data_dir=persist_path,
|
219
|
+
account_id=account_id,
|
220
|
+
)
|
221
|
+
|
222
|
+
# Otherwise, install the NodeJS version (default)
|
223
|
+
kinesismock_package.install()
|
224
|
+
kinesis_mock_path = Path(kinesismock_package.get_installer().get_executable_path())
|
225
|
+
|
226
|
+
return KinesisMockNodeServer(
|
163
227
|
port=port,
|
164
|
-
|
228
|
+
exe_path=kinesis_mock_path,
|
165
229
|
log_level=log_level,
|
166
230
|
latency=latency,
|
167
231
|
data_dir=persist_path,
|
168
232
|
account_id=account_id,
|
169
233
|
)
|
170
|
-
return server
|
@@ -1,28 +1,82 @@
|
|
1
1
|
import os
|
2
|
+
from enum import StrEnum
|
2
3
|
from functools import lru_cache
|
3
|
-
from typing import List
|
4
|
+
from typing import Any, List
|
4
5
|
|
5
|
-
from localstack.packages import Package
|
6
|
-
from localstack.packages.core import NodePackageInstaller
|
6
|
+
from localstack.packages import InstallTarget, Package
|
7
|
+
from localstack.packages.core import GitHubReleaseInstaller, NodePackageInstaller
|
8
|
+
from localstack.packages.java import JavaInstallerMixin, java_package
|
7
9
|
|
8
|
-
_KINESIS_MOCK_VERSION = os.environ.get("KINESIS_MOCK_VERSION") or "0.4.
|
10
|
+
_KINESIS_MOCK_VERSION = os.environ.get("KINESIS_MOCK_VERSION") or "0.4.12"
|
9
11
|
|
10
12
|
|
11
|
-
class
|
12
|
-
|
13
|
+
class KinesisMockEngine(StrEnum):
|
14
|
+
NODE = "node"
|
15
|
+
SCALA = "scala"
|
16
|
+
|
17
|
+
@classmethod
|
18
|
+
def _missing_(cls, value: str | Any) -> str:
|
19
|
+
# default to 'node' if invalid enum
|
20
|
+
if not isinstance(value, str):
|
21
|
+
return cls(cls.NODE)
|
22
|
+
return cls.__members__.get(value.upper(), cls.NODE)
|
23
|
+
|
24
|
+
|
25
|
+
class KinesisMockNodePackageInstaller(NodePackageInstaller):
|
26
|
+
def __init__(self, version: str):
|
27
|
+
super().__init__(package_name="kinesis-local", version=version)
|
28
|
+
|
29
|
+
|
30
|
+
class KinesisMockScalaPackageInstaller(JavaInstallerMixin, GitHubReleaseInstaller):
|
31
|
+
def __init__(self, version: str = _KINESIS_MOCK_VERSION):
|
32
|
+
super().__init__(
|
33
|
+
name="kinesis-local", tag=f"v{version}", github_slug="etspaceman/kinesis-mock"
|
34
|
+
)
|
35
|
+
|
36
|
+
# Kinesis Mock requires JRE 21+
|
37
|
+
self.java_version = "21"
|
38
|
+
|
39
|
+
def _get_github_asset_name(self) -> str:
|
40
|
+
return "kinesis-mock.jar"
|
41
|
+
|
42
|
+
def _prepare_installation(self, target: InstallTarget) -> None:
|
43
|
+
java_package.get_installer(self.java_version).install(target)
|
44
|
+
|
45
|
+
def get_java_home(self) -> str | None:
|
46
|
+
"""Override to use the specific Java version"""
|
47
|
+
return java_package.get_installer(self.java_version).get_java_home()
|
48
|
+
|
49
|
+
|
50
|
+
class KinesisMockScalaPackage(Package[KinesisMockScalaPackageInstaller]):
|
51
|
+
def __init__(
|
52
|
+
self,
|
53
|
+
default_version: str = _KINESIS_MOCK_VERSION,
|
54
|
+
):
|
13
55
|
super().__init__(name="Kinesis Mock", default_version=default_version)
|
14
56
|
|
15
57
|
@lru_cache
|
16
|
-
def _get_installer(self, version: str) ->
|
17
|
-
return
|
58
|
+
def _get_installer(self, version: str) -> KinesisMockScalaPackageInstaller:
|
59
|
+
return KinesisMockScalaPackageInstaller(version)
|
18
60
|
|
19
61
|
def get_versions(self) -> List[str]:
|
20
|
-
return [_KINESIS_MOCK_VERSION]
|
62
|
+
return [_KINESIS_MOCK_VERSION] # Only supported on v0.4.12+
|
21
63
|
|
22
64
|
|
23
|
-
class
|
24
|
-
def __init__(
|
25
|
-
|
65
|
+
class KinesisMockNodePackage(Package[KinesisMockNodePackageInstaller]):
|
66
|
+
def __init__(
|
67
|
+
self,
|
68
|
+
default_version: str = _KINESIS_MOCK_VERSION,
|
69
|
+
):
|
70
|
+
super().__init__(name="Kinesis Mock", default_version=default_version)
|
71
|
+
|
72
|
+
@lru_cache
|
73
|
+
def _get_installer(self, version: str) -> KinesisMockNodePackageInstaller:
|
74
|
+
return KinesisMockNodePackageInstaller(version)
|
75
|
+
|
76
|
+
def get_versions(self) -> List[str]:
|
77
|
+
return [_KINESIS_MOCK_VERSION]
|
26
78
|
|
27
79
|
|
28
|
-
kinesismock_package
|
80
|
+
# leave as 'kinesismock_package' for backwards compatability
|
81
|
+
kinesismock_package = KinesisMockNodePackage()
|
82
|
+
kinesismock_scala_package = KinesisMockScalaPackage()
|
@@ -1,8 +1,16 @@
|
|
1
|
+
import localstack.config as config
|
1
2
|
from localstack.packages import Package, package
|
2
3
|
|
3
4
|
|
4
5
|
@package(name="kinesis-mock")
|
5
6
|
def kinesismock_package() -> Package:
|
6
|
-
from localstack.services.kinesis.packages import
|
7
|
+
from localstack.services.kinesis.packages import (
|
8
|
+
KinesisMockEngine,
|
9
|
+
kinesismock_package,
|
10
|
+
kinesismock_scala_package,
|
11
|
+
)
|
12
|
+
|
13
|
+
if KinesisMockEngine(config.KINESIS_MOCK_PROVIDER_ENGINE) == KinesisMockEngine.SCALA:
|
14
|
+
return kinesismock_scala_package
|
7
15
|
|
8
16
|
return kinesismock_package
|
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.
|
21
|
-
__version_tuple__ = version_tuple = (4, 4, 1, '
|
20
|
+
__version__ = version = '4.4.1.dev21'
|
21
|
+
__version_tuple__ = version_tuple = (4, 4, 1, 'dev21')
|
@@ -1,10 +1,10 @@
|
|
1
|
-
localstack/config.py,sha256=
|
1
|
+
localstack/config.py,sha256=4S7-Ct0EF97uvkQsxKqAGu92KbZttjoDhu63WoWF0Qc,65031
|
2
2
|
localstack/constants.py,sha256=riikzAY9WFOnAHJqA9OEG1einNykFyGNVrvr2L4cnQc,6872
|
3
3
|
localstack/deprecations.py,sha256=mNXTebZ8kSbQjFKz0LbT-g1Kdr0CE8bhEgZfHV3IX0s,15912
|
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=rjq1V5W0DDbBjkaTY4u-biiS8eugTxf9fVv7ZPSrZXw,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
|
@@ -199,7 +199,7 @@ localstack/services/apigateway/next_gen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5J
|
|
199
199
|
localstack/services/apigateway/next_gen/provider.py,sha256=iDkrJmfx_4GOk7ixeOx9gOCW78VEgLvZBpv_1VESAAk,11367
|
200
200
|
localstack/services/apigateway/next_gen/execute_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
201
201
|
localstack/services/apigateway/next_gen/execute_api/api.py,sha256=4hBm-VYLhctVocblhap2g9HxbDu2HoMW0LkvxaMVFCA,550
|
202
|
-
localstack/services/apigateway/next_gen/execute_api/context.py,sha256=
|
202
|
+
localstack/services/apigateway/next_gen/execute_api/context.py,sha256=33967H4AtpVzdwLkJ2yEWmsQ_OVh1HkTW-vNGAAA-Wc,5193
|
203
203
|
localstack/services/apigateway/next_gen/execute_api/gateway.py,sha256=8ZOqyrm5BiXpCQd2oxH5THN8WIALM7B-F5xAinDccmU,1791
|
204
204
|
localstack/services/apigateway/next_gen/execute_api/gateway_response.py,sha256=MxBDid0utvBhOPVYDav9eo4biHb-4EhXy9UvNFg3ZMU,10304
|
205
205
|
localstack/services/apigateway/next_gen/execute_api/header_utils.py,sha256=XViyp3Ku6-9LZrN792iROojVWqDSV1iq21C0BOOoGA8,1716
|
@@ -207,19 +207,19 @@ localstack/services/apigateway/next_gen/execute_api/helpers.py,sha256=LeCbwKw9tv
|
|
207
207
|
localstack/services/apigateway/next_gen/execute_api/moto_helpers.py,sha256=TIoKSLAYMNtguXgto2yctSo0VNdJuyTiB1UKj3e_lD0,2547
|
208
208
|
localstack/services/apigateway/next_gen/execute_api/parameters_mapping.py,sha256=iDkI7WIp9xBnKQx--Xpao5bmTNpdDfu6Iz3HRfl6ykc,12173
|
209
209
|
localstack/services/apigateway/next_gen/execute_api/router.py,sha256=VDrfYSulZs5jQVdvBuYOcKlzL_Q0rNIm2cghqVmHEQg,7717
|
210
|
-
localstack/services/apigateway/next_gen/execute_api/template_mapping.py,sha256=
|
211
|
-
localstack/services/apigateway/next_gen/execute_api/test_invoke.py,sha256=
|
212
|
-
localstack/services/apigateway/next_gen/execute_api/variables.py,sha256=
|
210
|
+
localstack/services/apigateway/next_gen/execute_api/template_mapping.py,sha256=i5tysGpcaIQxtXTwaBTkOeXtlqv3OiI3-Sxl3v8IX5o,10147
|
211
|
+
localstack/services/apigateway/next_gen/execute_api/test_invoke.py,sha256=vzaCUu4RdVNdipcl-Iro3IOpoBkm_m-aAI1XxwgbztA,9574
|
212
|
+
localstack/services/apigateway/next_gen/execute_api/variables.py,sha256=ARlPW2Aldg96ft2ufwE9_o-doqyfg68xV-23Sr1D958,7930
|
213
213
|
localstack/services/apigateway/next_gen/execute_api/handlers/__init__.py,sha256=6a7jt0l36AifxHho9WGBBiQZoEtHiiYsSYLBWUSBNJ4,1338
|
214
214
|
localstack/services/apigateway/next_gen/execute_api/handlers/analytics.py,sha256=5vVSXK3fPRiXt4WwuSoH1s8p2lQr27um7Te-jBZobsc,1733
|
215
215
|
localstack/services/apigateway/next_gen/execute_api/handlers/api_key_validation.py,sha256=Kz_1CqIHv4assRWoO_SPCxe1EZqDjH-kxuXqhfi4oXs,4916
|
216
216
|
localstack/services/apigateway/next_gen/execute_api/handlers/gateway_exception.py,sha256=7FQ7rgxBdu6kH49dG8pGB7EDPZX3QRBXi-k7k_NDNn8,3746
|
217
217
|
localstack/services/apigateway/next_gen/execute_api/handlers/integration.py,sha256=kHt1hHHj_y9MpTjs1uIwq9zxDxlVqbLZx0E2tjnz_Fo,1097
|
218
|
-
localstack/services/apigateway/next_gen/execute_api/handlers/integration_request.py,sha256=
|
219
|
-
localstack/services/apigateway/next_gen/execute_api/handlers/integration_response.py,sha256=
|
218
|
+
localstack/services/apigateway/next_gen/execute_api/handlers/integration_request.py,sha256=c0UQ0GRC7_2CdCicqf-_rpBGwG4AOWY89gXQtN_YJzw,15749
|
219
|
+
localstack/services/apigateway/next_gen/execute_api/handlers/integration_response.py,sha256=bBhk6Nokk16DX_nCDyzsI2__4E-TUmBZ_Lzp4MliWnk,13640
|
220
220
|
localstack/services/apigateway/next_gen/execute_api/handlers/method_request.py,sha256=AA8ZxvqUOoyEKxDg-HscE1C7TNn_l2d_PqZq2wpG64Y,5651
|
221
221
|
localstack/services/apigateway/next_gen/execute_api/handlers/method_response.py,sha256=bgBNX1r9ZoZywh9bfx6XuYq5_GvYQGmhcdx-nhMKlGg,3264
|
222
|
-
localstack/services/apigateway/next_gen/execute_api/handlers/parse.py,sha256=
|
222
|
+
localstack/services/apigateway/next_gen/execute_api/handlers/parse.py,sha256=6Dg0wU3aHF_GFG7lmoro-Tp2nrcRTmtxfHNHQyzFZL0,8645
|
223
223
|
localstack/services/apigateway/next_gen/execute_api/handlers/resource_router.py,sha256=uipAChGDPqXssQecUBBxydNgQSLo_0HrRieOY9Tgjug,6540
|
224
224
|
localstack/services/apigateway/next_gen/execute_api/handlers/response_enricher.py,sha256=XNCJQ0OpfxIw_hrPhJ_UKbJuTWbrHe5ZNwbIWDATiGw,1145
|
225
225
|
localstack/services/apigateway/next_gen/execute_api/integrations/__init__.py,sha256=-eU2l2ktfSZoLAXNjsmbsFoDKjSV885Faqr1UHBmy00,562
|
@@ -507,10 +507,10 @@ localstack/services/iam/resource_providers/aws_iam_user.schema.json,sha256=NjcoB
|
|
507
507
|
localstack/services/iam/resource_providers/aws_iam_user_plugin.py,sha256=n0OuJYcG4YhM52YKkpu_LkiBv7_13LLp1n8sYCXx78E,505
|
508
508
|
localstack/services/iam/resources/service_linked_roles.py,sha256=4LWz9vTSTOQTxT4kxqmqm3CnS6GqzN_5BZtxgLPjUNs,21955
|
509
509
|
localstack/services/kinesis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
510
|
-
localstack/services/kinesis/kinesis_mock_server.py,sha256=
|
510
|
+
localstack/services/kinesis/kinesis_mock_server.py,sha256=i6ZNsPQVhqwJYsgrXhLhj5augpnAoOgKCvagLojL12s,8641
|
511
511
|
localstack/services/kinesis/models.py,sha256=Ttmo8o_f9QpIlGX9zKxkLM-ITJSkahCOo6vXs-pT4rc,641
|
512
|
-
localstack/services/kinesis/packages.py,sha256=
|
513
|
-
localstack/services/kinesis/plugins.py,sha256=
|
512
|
+
localstack/services/kinesis/packages.py,sha256=LfIPMwHR0y0ansf6vdmU4eRFcFtflv1PxEaydx9h5i8,2769
|
513
|
+
localstack/services/kinesis/plugins.py,sha256=iPaMbvhroTEHOWZ2io8lerh-TNPATWrb4ZanNGJPwG0,470
|
514
514
|
localstack/services/kinesis/provider.py,sha256=SM8yyrGTL6dq5k1PXRkJPkJZgdWODpE6u20zK954E5g,7630
|
515
515
|
localstack/services/kinesis/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
516
516
|
localstack/services/kinesis/resource_providers/aws_kinesis_stream.py,sha256=P1VBDA4haYcVTGRqoQissKJbkMedx9ps_zhCpT2l2yw,5721
|
@@ -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.
|
1283
|
-
localstack_core-4.4.1.
|
1284
|
-
localstack_core-4.4.1.
|
1285
|
-
localstack_core-4.4.1.
|
1286
|
-
localstack_core-4.4.1.
|
1287
|
-
localstack_core-4.4.1.
|
1288
|
-
localstack_core-4.4.1.
|
1289
|
-
localstack_core-4.4.1.
|
1290
|
-
localstack_core-4.4.1.
|
1291
|
-
localstack_core-4.4.1.
|
1282
|
+
localstack_core-4.4.1.dev21.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
|
1283
|
+
localstack_core-4.4.1.dev21.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
|
1284
|
+
localstack_core-4.4.1.dev21.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
|
1285
|
+
localstack_core-4.4.1.dev21.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
|
1286
|
+
localstack_core-4.4.1.dev21.dist-info/METADATA,sha256=Fc2Ak4nKqVyirndfzZQywcGY84hrI9BDAxIAtyDJwyk,5539
|
1287
|
+
localstack_core-4.4.1.dev21.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
|
1288
|
+
localstack_core-4.4.1.dev21.dist-info/entry_points.txt,sha256=K5M7il9Vwev64SlQiOaZVUhYpVNIE6IFHiWJ0znpbHQ,20491
|
1289
|
+
localstack_core-4.4.1.dev21.dist-info/plux.json,sha256=59BR7LNlJmtHDJLKmVR0_0RHNsyg081WwIDEW0nqV_M,20712
|
1290
|
+
localstack_core-4.4.1.dev21.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
|
1291
|
+
localstack_core-4.4.1.dev21.dist-info/RECORD,,
|
@@ -0,0 +1 @@
|
|
1
|
+
{"localstack.cloudformation.resource_providers": ["AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "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::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin"], "localstack.hooks.on_infra_start": ["register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "apply_runtime_patches=localstack.runtime.patches:apply_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_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "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", "_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", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start"], "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.packages": ["vosk/community=localstack.services.transcribe.plugins:vosk_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_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", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.hooks.on_infra_shutdown": ["stop_server=localstack.dns.plugins:stop_server", "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", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown"], "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"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.hooks.on_infra_ready": ["_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"localstack.cloudformation.resource_providers": ["AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "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::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "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::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::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::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "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::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "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::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.hooks.on_infra_start": ["delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "_patch_botocore_endpoint_in_memory=localstack.aws.client:_patch_botocore_endpoint_in_memory", "_patch_botocore_json_parser=localstack.aws.client:_patch_botocore_json_parser", "_patch_cbor2=localstack.aws.client:_patch_cbor2", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches"], "localstack.packages": ["ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "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", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package"], "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.hooks.on_infra_shutdown": ["_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "stop_server=localstack.dns.plugins:stop_server", "publish_metrics=localstack.utils.analytics.metrics:publish_metrics", "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.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"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"]}
|
File without changes
|
{localstack_core-4.4.1.dev19.data → localstack_core-4.4.1.dev21.data}/scripts/localstack-supervisor
RENAMED
File without changes
|
{localstack_core-4.4.1.dev19.data → localstack_core-4.4.1.dev21.data}/scripts/localstack.bat
RENAMED
File without changes
|
File without changes
|
{localstack_core-4.4.1.dev19.dist-info → localstack_core-4.4.1.dev21.dist-info}/entry_points.txt
RENAMED
File without changes
|
{localstack_core-4.4.1.dev19.dist-info → localstack_core-4.4.1.dev21.dist-info}/licenses/LICENSE.txt
RENAMED
File without changes
|
{localstack_core-4.4.1.dev19.dist-info → localstack_core-4.4.1.dev21.dist-info}/top_level.txt
RENAMED
File without changes
|