localstack-core 4.2.1.dev84__py3-none-any.whl → 4.2.1.dev86__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/runtime/analytics.py +1 -0
- localstack/services/lambda_/analytics.py +53 -0
- localstack/services/lambda_/event_source_mapping/esm_event_processor.py +11 -3
- localstack/services/lambda_/event_source_mapping/esm_worker.py +6 -0
- localstack/services/lambda_/invocation/counting_service.py +19 -14
- localstack/services/lambda_/invocation/event_manager.py +34 -3
- localstack/services/lambda_/invocation/lambda_service.py +43 -6
- localstack/services/lambda_/invocation/version_manager.py +13 -11
- localstack/services/lambda_/lambda_utils.py +1 -1
- localstack/services/lambda_/provider.py +12 -0
- localstack/version.py +2 -2
- {localstack_core-4.2.1.dev84.dist-info → localstack_core-4.2.1.dev86.dist-info}/METADATA +1 -1
- {localstack_core-4.2.1.dev84.dist-info → localstack_core-4.2.1.dev86.dist-info}/RECORD +21 -21
- localstack_core-4.2.1.dev86.dist-info/plux.json +1 -0
- localstack/services/lambda_/usage.py +0 -17
- localstack_core-4.2.1.dev84.dist-info/plux.json +0 -1
- {localstack_core-4.2.1.dev84.data → localstack_core-4.2.1.dev86.data}/scripts/localstack +0 -0
- {localstack_core-4.2.1.dev84.data → localstack_core-4.2.1.dev86.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.2.1.dev84.data → localstack_core-4.2.1.dev86.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.2.1.dev84.dist-info → localstack_core-4.2.1.dev86.dist-info}/WHEEL +0 -0
- {localstack_core-4.2.1.dev84.dist-info → localstack_core-4.2.1.dev86.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.2.1.dev84.dist-info → localstack_core-4.2.1.dev86.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.2.1.dev84.dist-info → localstack_core-4.2.1.dev86.dist-info}/top_level.txt +0 -0
localstack/runtime/analytics.py
CHANGED
@@ -0,0 +1,53 @@
|
|
1
|
+
from enum import StrEnum
|
2
|
+
|
3
|
+
from localstack.utils.analytics.metrics import Counter
|
4
|
+
|
5
|
+
NAMESPACE = "lambda"
|
6
|
+
|
7
|
+
hotreload_counter = Counter(namespace=NAMESPACE, name="hotreload", labels=["operation"])
|
8
|
+
|
9
|
+
function_counter = Counter(
|
10
|
+
namespace=NAMESPACE,
|
11
|
+
name="function",
|
12
|
+
labels=[
|
13
|
+
"operation",
|
14
|
+
"status",
|
15
|
+
"runtime",
|
16
|
+
"package_type",
|
17
|
+
# only for operation "invoke"
|
18
|
+
"invocation_type",
|
19
|
+
],
|
20
|
+
)
|
21
|
+
|
22
|
+
|
23
|
+
class FunctionOperation(StrEnum):
|
24
|
+
invoke = "invoke"
|
25
|
+
create = "create"
|
26
|
+
|
27
|
+
|
28
|
+
class FunctionStatus(StrEnum):
|
29
|
+
success = "success"
|
30
|
+
zero_reserved_concurrency_error = "zero_reserved_concurrency_error"
|
31
|
+
event_age_exceeded_error = "event_age_exceeded_error"
|
32
|
+
throttle_error = "throttle_error"
|
33
|
+
system_error = "system_error"
|
34
|
+
unhandled_state_error = "unhandled_state_error"
|
35
|
+
failed_state_error = "failed_state_error"
|
36
|
+
pending_state_error = "pending_state_error"
|
37
|
+
invalid_payload_error = "invalid_payload_error"
|
38
|
+
invocation_error = "invocation_error"
|
39
|
+
|
40
|
+
|
41
|
+
esm_counter = Counter(namespace=NAMESPACE, name="esm", labels=["source", "status"])
|
42
|
+
|
43
|
+
|
44
|
+
class EsmExecutionStatus(StrEnum):
|
45
|
+
success = "success"
|
46
|
+
partial_batch_failure_error = "partial_batch_failure_error"
|
47
|
+
target_invocation_error = "target_invocation_error"
|
48
|
+
unhandled_error = "unhandled_error"
|
49
|
+
source_poller_error = "source_poller_error"
|
50
|
+
# TODO: Add tracking for filter error. Options:
|
51
|
+
# a) raise filter exception and track it in the esm_worker
|
52
|
+
# b) somehow add tracking in the individual pollers
|
53
|
+
filter_error = "filter_error"
|
@@ -3,6 +3,7 @@ import logging
|
|
3
3
|
import uuid
|
4
4
|
|
5
5
|
from localstack.aws.api.pipes import LogLevel
|
6
|
+
from localstack.services.lambda_.analytics import EsmExecutionStatus, esm_counter
|
6
7
|
from localstack.services.lambda_.event_source_mapping.event_processor import (
|
7
8
|
BatchFailureError,
|
8
9
|
EventProcessor,
|
@@ -15,7 +16,6 @@ from localstack.services.lambda_.event_source_mapping.senders.sender import (
|
|
15
16
|
Sender,
|
16
17
|
SenderError,
|
17
18
|
)
|
18
|
-
from localstack.services.lambda_.usage import esm_error, esm_invocation
|
19
19
|
|
20
20
|
LOG = logging.getLogger(__name__)
|
21
21
|
|
@@ -37,7 +37,6 @@ class EsmEventProcessor(EventProcessor):
|
|
37
37
|
else:
|
38
38
|
first_event = {}
|
39
39
|
event_source = first_event.get("eventSource")
|
40
|
-
esm_invocation.record(event_source)
|
41
40
|
|
42
41
|
execution_id = uuid.uuid4()
|
43
42
|
# Create a copy of the original input events
|
@@ -60,12 +59,16 @@ class EsmEventProcessor(EventProcessor):
|
|
60
59
|
messageType="ExecutionSucceeded",
|
61
60
|
logLevel=LogLevel.INFO,
|
62
61
|
)
|
62
|
+
esm_counter.labels(source=event_source, status=EsmExecutionStatus.success).increment()
|
63
63
|
except PartialFailureSenderError as e:
|
64
64
|
self.logger.log(
|
65
65
|
messageType="ExecutionFailed",
|
66
66
|
logLevel=LogLevel.ERROR,
|
67
67
|
error=e.error,
|
68
68
|
)
|
69
|
+
esm_counter.labels(
|
70
|
+
source=event_source, status=EsmExecutionStatus.partial_batch_failure_error
|
71
|
+
).increment()
|
69
72
|
# TODO: check whether partial batch item failures is enabled by default or need to be explicitly enabled
|
70
73
|
# using --function-response-types "ReportBatchItemFailures"
|
71
74
|
# https://docs.aws.amazon.com/lambda/latest/dg/services-sqs-errorhandling.html
|
@@ -78,15 +81,20 @@ class EsmEventProcessor(EventProcessor):
|
|
78
81
|
logLevel=LogLevel.ERROR,
|
79
82
|
error=e.error,
|
80
83
|
)
|
84
|
+
esm_counter.labels(
|
85
|
+
source=event_source, status=EsmExecutionStatus.target_invocation_error
|
86
|
+
).increment()
|
81
87
|
raise BatchFailureError(error=e.error) from e
|
82
88
|
except Exception as e:
|
83
|
-
esm_error.record(event_source)
|
84
89
|
LOG.error(
|
85
90
|
"Unhandled exception while processing Lambda event source mapping (ESM) events %s for ESM with execution id %s",
|
86
91
|
events,
|
87
92
|
execution_id,
|
88
93
|
exc_info=LOG.isEnabledFor(logging.DEBUG),
|
89
94
|
)
|
95
|
+
esm_counter.labels(
|
96
|
+
source=event_source, status=EsmExecutionStatus.unhandled_error
|
97
|
+
).increment()
|
90
98
|
raise e
|
91
99
|
|
92
100
|
def process_target_stage(self, events: list[dict]) -> None:
|
@@ -10,12 +10,14 @@ from localstack.config import (
|
|
10
10
|
LAMBDA_EVENT_SOURCE_MAPPING_MAX_BACKOFF_ON_ERROR_SEC,
|
11
11
|
LAMBDA_EVENT_SOURCE_MAPPING_POLL_INTERVAL_SEC,
|
12
12
|
)
|
13
|
+
from localstack.services.lambda_.analytics import EsmExecutionStatus, esm_counter
|
13
14
|
from localstack.services.lambda_.event_source_mapping.pollers.poller import (
|
14
15
|
EmptyPollResultsException,
|
15
16
|
Poller,
|
16
17
|
)
|
17
18
|
from localstack.services.lambda_.invocation.models import LambdaStore, lambda_stores
|
18
19
|
from localstack.services.lambda_.provider_utils import get_function_version_from_arn
|
20
|
+
from localstack.utils.aws.arns import parse_arn
|
19
21
|
from localstack.utils.backoff import ExponentialBackoff
|
20
22
|
from localstack.utils.threads import FuncThread
|
21
23
|
|
@@ -181,6 +183,10 @@ class EsmWorker:
|
|
181
183
|
e,
|
182
184
|
exc_info=LOG.isEnabledFor(logging.DEBUG),
|
183
185
|
)
|
186
|
+
event_source = parse_arn(self.esm_config.get("EventSourceArn")).get("service")
|
187
|
+
esm_counter.labels(
|
188
|
+
source=event_source, status=EsmExecutionStatus.source_poller_error
|
189
|
+
).increment()
|
184
190
|
# Wait some time between retries to avoid running into the problem right again
|
185
191
|
poll_interval_duration = error_boff.next_backoff()
|
186
192
|
finally:
|
@@ -86,7 +86,7 @@ class CountingService:
|
|
86
86
|
|
87
87
|
@contextlib.contextmanager
|
88
88
|
def get_invocation_lease(
|
89
|
-
self, function: Function, function_version: FunctionVersion
|
89
|
+
self, function: Function | None, function_version: FunctionVersion
|
90
90
|
) -> InitializationType:
|
91
91
|
"""An invocation lease reserves the right to schedule an invocation.
|
92
92
|
The returned lease type can either be on-demand or provisioned.
|
@@ -94,6 +94,8 @@ class CountingService:
|
|
94
94
|
1) Check for free provisioned concurrency => provisioned
|
95
95
|
2) Check for reserved concurrency => on-demand
|
96
96
|
3) Check for unreserved concurrency => on-demand
|
97
|
+
|
98
|
+
HACK: We allow the function to be None for Lambda@Edge to skip provisioned and reserved concurrency.
|
97
99
|
"""
|
98
100
|
account = function_version.id.account
|
99
101
|
region = function_version.id.region
|
@@ -147,25 +149,28 @@ class CountingService:
|
|
147
149
|
)
|
148
150
|
|
149
151
|
lease_type = None
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
available_provisioned_concurrency = (
|
157
|
-
provisioned_concurrency_config.provisioned_concurrent_executions
|
158
|
-
- provisioned_tracker.concurrent_executions[qualified_arn]
|
152
|
+
# HACK: skip reserved and provisioned concurrency if function not available (e.g., in Lambda@Edge)
|
153
|
+
if function is not None:
|
154
|
+
with provisioned_tracker.lock:
|
155
|
+
# 1) Check for free provisioned concurrency
|
156
|
+
provisioned_concurrency_config = function.provisioned_concurrency_configs.get(
|
157
|
+
function_version.id.qualifier
|
159
158
|
)
|
160
|
-
if
|
161
|
-
|
162
|
-
|
159
|
+
if provisioned_concurrency_config:
|
160
|
+
available_provisioned_concurrency = (
|
161
|
+
provisioned_concurrency_config.provisioned_concurrent_executions
|
162
|
+
- provisioned_tracker.concurrent_executions[qualified_arn]
|
163
|
+
)
|
164
|
+
if available_provisioned_concurrency > 0:
|
165
|
+
provisioned_tracker.increment(qualified_arn)
|
166
|
+
lease_type = "provisioned-concurrency"
|
163
167
|
|
164
168
|
if not lease_type:
|
165
169
|
with on_demand_tracker.lock:
|
166
170
|
# 2) If reserved concurrency is set AND no provisioned concurrency available:
|
167
171
|
# => Check if enough reserved concurrency is available for the specific function.
|
168
|
-
if function.
|
172
|
+
# HACK: skip reserved if function not available (e.g., in Lambda@Edge)
|
173
|
+
if function and function.reserved_concurrent_executions is not None:
|
169
174
|
on_demand_running_invocation_count = on_demand_tracker.concurrent_executions[
|
170
175
|
unqualified_function_arn
|
171
176
|
]
|
@@ -11,7 +11,12 @@ from math import ceil
|
|
11
11
|
from botocore.config import Config
|
12
12
|
|
13
13
|
from localstack import config
|
14
|
-
from localstack.aws.api.lambda_ import TooManyRequestsException
|
14
|
+
from localstack.aws.api.lambda_ import InvocationType, TooManyRequestsException
|
15
|
+
from localstack.services.lambda_.analytics import (
|
16
|
+
FunctionOperation,
|
17
|
+
FunctionStatus,
|
18
|
+
function_counter,
|
19
|
+
)
|
15
20
|
from localstack.services.lambda_.invocation.internal_sqs_queue import get_fake_sqs_client
|
16
21
|
from localstack.services.lambda_.invocation.lambda_models import (
|
17
22
|
EventInvokeConfig,
|
@@ -194,18 +199,30 @@ class Poller:
|
|
194
199
|
failure_cause = None
|
195
200
|
qualifier = self.version_manager.function_version.id.qualifier
|
196
201
|
event_invoke_config = self.version_manager.function.event_invoke_configs.get(qualifier)
|
202
|
+
runtime = None
|
203
|
+
status = None
|
197
204
|
try:
|
198
205
|
sqs_invocation = SQSInvocation.decode(message["Body"])
|
199
206
|
invocation = sqs_invocation.invocation
|
200
207
|
try:
|
201
208
|
invocation_result = self.version_manager.invoke(invocation=invocation)
|
209
|
+
function_config = self.version_manager.function_version.config
|
210
|
+
function_counter.labels(
|
211
|
+
operation=FunctionOperation.invoke,
|
212
|
+
runtime=function_config.runtime or "n/a",
|
213
|
+
status=FunctionStatus.success,
|
214
|
+
invocation_type=InvocationType.Event,
|
215
|
+
package_type=function_config.package_type,
|
216
|
+
).increment()
|
202
217
|
except Exception as e:
|
203
218
|
# Reserved concurrency == 0
|
204
219
|
if self.version_manager.function.reserved_concurrent_executions == 0:
|
205
220
|
failure_cause = "ZeroReservedConcurrency"
|
221
|
+
status = FunctionStatus.zero_reserved_concurrency_error
|
206
222
|
# Maximum event age expired (lookahead for next retry)
|
207
223
|
elif not has_enough_time_for_retry(sqs_invocation, event_invoke_config):
|
208
224
|
failure_cause = "EventAgeExceeded"
|
225
|
+
status = FunctionStatus.event_age_exceeded_error
|
209
226
|
if failure_cause:
|
210
227
|
invocation_result = InvocationResult(
|
211
228
|
is_error=True, request_id=invocation.request_id, payload=None, logs=None
|
@@ -216,13 +233,22 @@ class Poller:
|
|
216
233
|
self.process_dead_letter_queue(sqs_invocation, invocation_result)
|
217
234
|
return
|
218
235
|
# 3) Otherwise, retry without increasing counter
|
219
|
-
self.process_throttles_and_system_errors(sqs_invocation, e)
|
236
|
+
status = self.process_throttles_and_system_errors(sqs_invocation, e)
|
220
237
|
return
|
221
238
|
finally:
|
222
239
|
sqs_client = get_sqs_client(self.version_manager.function_version)
|
223
240
|
sqs_client.delete_message(
|
224
241
|
QueueUrl=self.event_queue_url, ReceiptHandle=message["ReceiptHandle"]
|
225
242
|
)
|
243
|
+
# status MUST be set before returning
|
244
|
+
package_type = self.version_manager.function_version.config.package_type
|
245
|
+
function_counter.labels(
|
246
|
+
operation=FunctionOperation.invoke,
|
247
|
+
runtime=runtime or "n/a",
|
248
|
+
status=status,
|
249
|
+
invocation_type=InvocationType.Event,
|
250
|
+
package_type=package_type,
|
251
|
+
).increment()
|
226
252
|
|
227
253
|
# Good summary blogpost: https://haithai91.medium.com/aws-lambdas-retry-behaviors-edff90e1cf1b
|
228
254
|
# Asynchronous invocation handling: https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html
|
@@ -278,7 +304,9 @@ class Poller:
|
|
278
304
|
"Error handling lambda invoke %s", e, exc_info=LOG.isEnabledFor(logging.DEBUG)
|
279
305
|
)
|
280
306
|
|
281
|
-
def process_throttles_and_system_errors(
|
307
|
+
def process_throttles_and_system_errors(
|
308
|
+
self, sqs_invocation: SQSInvocation, error: Exception
|
309
|
+
) -> str:
|
282
310
|
# If the function doesn't have enough concurrency available to process all events, additional
|
283
311
|
# requests are throttled. For throttling errors (429) and system errors (500-series), Lambda returns
|
284
312
|
# the event to the queue and attempts to run the function again for up to 6 hours. The retry interval
|
@@ -292,10 +320,12 @@ class Poller:
|
|
292
320
|
# https://repost.aws/knowledge-center/lambda-troubleshoot-invoke-error-502-500
|
293
321
|
if isinstance(error, TooManyRequestsException): # Throttles 429
|
294
322
|
LOG.debug("Throttled lambda %s: %s", self.version_manager.function_arn, error)
|
323
|
+
status = FunctionStatus.throttle_error
|
295
324
|
else: # System errors 5xx
|
296
325
|
LOG.debug(
|
297
326
|
"Service exception in lambda %s: %s", self.version_manager.function_arn, error
|
298
327
|
)
|
328
|
+
status = FunctionStatus.system_error
|
299
329
|
maximum_exception_retry_delay_seconds = 5 * 60
|
300
330
|
delay_seconds = min(
|
301
331
|
2**sqs_invocation.exception_retries, maximum_exception_retry_delay_seconds
|
@@ -307,6 +337,7 @@ class Poller:
|
|
307
337
|
MessageBody=sqs_invocation.encode(),
|
308
338
|
DelaySeconds=delay_seconds,
|
309
339
|
)
|
340
|
+
return status
|
310
341
|
|
311
342
|
def process_success_destination(
|
312
343
|
self,
|
@@ -25,7 +25,12 @@ from localstack.aws.api.lambda_ import (
|
|
25
25
|
)
|
26
26
|
from localstack.aws.connect import connect_to
|
27
27
|
from localstack.constants import AWS_REGION_US_EAST_1
|
28
|
-
from localstack.services.lambda_ import
|
28
|
+
from localstack.services.lambda_.analytics import (
|
29
|
+
FunctionOperation,
|
30
|
+
FunctionStatus,
|
31
|
+
function_counter,
|
32
|
+
hotreload_counter,
|
33
|
+
)
|
29
34
|
from localstack.services.lambda_.api_utils import (
|
30
35
|
lambda_arn,
|
31
36
|
qualified_lambda_arn,
|
@@ -272,15 +277,16 @@ class LambdaService:
|
|
272
277
|
|
273
278
|
# Need the qualified arn to exactly get the target lambda
|
274
279
|
qualified_arn = qualified_lambda_arn(function_name, version_qualifier, account_id, region)
|
280
|
+
version = function.versions.get(version_qualifier)
|
281
|
+
runtime = version.config.runtime or "n/a"
|
282
|
+
package_type = version.config.package_type
|
275
283
|
try:
|
276
284
|
version_manager = self.get_lambda_version_manager(qualified_arn)
|
277
285
|
event_manager = self.get_lambda_event_manager(qualified_arn)
|
278
|
-
usage.runtime.record(version_manager.function_version.config.runtime)
|
279
286
|
except ValueError as e:
|
280
|
-
version = function.versions.get(version_qualifier)
|
281
287
|
state = version and version.config.state.state
|
282
|
-
# TODO: make such developer hints optional or remove after initial v2 transition period
|
283
288
|
if state == State.Failed:
|
289
|
+
status = FunctionStatus.failed_state_error
|
284
290
|
HINT_LOG.error(
|
285
291
|
f"Failed to create the runtime executor for the function {function_name}. "
|
286
292
|
"Please ensure that Docker is available in the LocalStack container by adding the volume mount "
|
@@ -288,6 +294,7 @@ class LambdaService:
|
|
288
294
|
"Check out https://docs.localstack.cloud/user-guide/aws/lambda/#docker-not-available"
|
289
295
|
)
|
290
296
|
elif state == State.Pending:
|
297
|
+
status = FunctionStatus.pending_state_error
|
291
298
|
HINT_LOG.warning(
|
292
299
|
"Lambda functions are created and updated asynchronously in the new lambda provider like in AWS. "
|
293
300
|
f"Before invoking {function_name}, please wait until the function transitioned from the state "
|
@@ -295,6 +302,16 @@ class LambdaService:
|
|
295
302
|
f'"awslocal lambda wait function-active-v2 --function-name {function_name}" '
|
296
303
|
"Check out https://docs.localstack.cloud/user-guide/aws/lambda/#function-in-pending-state"
|
297
304
|
)
|
305
|
+
else:
|
306
|
+
status = FunctionStatus.unhandled_state_error
|
307
|
+
LOG.error("Unexpected state %s for Lambda function %s", state, function_name)
|
308
|
+
function_counter.labels(
|
309
|
+
operation=FunctionOperation.invoke,
|
310
|
+
runtime=runtime,
|
311
|
+
status=status,
|
312
|
+
invocation_type=invocation_type,
|
313
|
+
package_type=package_type,
|
314
|
+
).increment()
|
298
315
|
raise ResourceConflictException(
|
299
316
|
f"The operation cannot be performed at this time. The function is currently in the following state: {state}"
|
300
317
|
) from e
|
@@ -306,6 +323,13 @@ class LambdaService:
|
|
306
323
|
try:
|
307
324
|
to_str(payload)
|
308
325
|
except Exception as e:
|
326
|
+
function_counter.labels(
|
327
|
+
operation=FunctionOperation.invoke,
|
328
|
+
runtime=runtime,
|
329
|
+
status=FunctionStatus.invalid_payload_error,
|
330
|
+
invocation_type=invocation_type,
|
331
|
+
package_type=package_type,
|
332
|
+
).increment()
|
309
333
|
# MAYBE: improve parity of detailed exception message (quite cumbersome)
|
310
334
|
raise InvalidRequestContentException(
|
311
335
|
f"Could not parse request body into json: Could not parse payload into json: {e}",
|
@@ -331,7 +355,7 @@ class LambdaService:
|
|
331
355
|
)
|
332
356
|
)
|
333
357
|
|
334
|
-
|
358
|
+
invocation_result = version_manager.invoke(
|
335
359
|
invocation=Invocation(
|
336
360
|
payload=payload,
|
337
361
|
invoked_arn=invoked_arn,
|
@@ -342,6 +366,19 @@ class LambdaService:
|
|
342
366
|
trace_context=trace_context,
|
343
367
|
)
|
344
368
|
)
|
369
|
+
status = (
|
370
|
+
FunctionStatus.invocation_error
|
371
|
+
if invocation_result.is_error
|
372
|
+
else FunctionStatus.success
|
373
|
+
)
|
374
|
+
function_counter.labels(
|
375
|
+
operation=FunctionOperation.invoke,
|
376
|
+
runtime=runtime,
|
377
|
+
status=status,
|
378
|
+
invocation_type=invocation_type,
|
379
|
+
package_type=package_type,
|
380
|
+
).increment()
|
381
|
+
return invocation_result
|
345
382
|
|
346
383
|
def update_version(self, new_version: FunctionVersion) -> Future[None]:
|
347
384
|
"""
|
@@ -601,7 +638,7 @@ def store_s3_bucket_archive(
|
|
601
638
|
:return: S3 Code object representing the archive stored in S3
|
602
639
|
"""
|
603
640
|
if archive_bucket == config.BUCKET_MARKER_LOCAL:
|
604
|
-
|
641
|
+
hotreload_counter.labels(operation="create").increment()
|
605
642
|
return create_hot_reloading_code(path=archive_key)
|
606
643
|
s3_client: "S3Client" = connect_to().s3
|
607
644
|
kwargs = {"VersionId": archive_version} if archive_version else {}
|
@@ -56,7 +56,8 @@ class LambdaVersionManager:
|
|
56
56
|
self,
|
57
57
|
function_arn: str,
|
58
58
|
function_version: FunctionVersion,
|
59
|
-
|
59
|
+
# HACK allowing None for Lambda@Edge; only used in invoke for get_invocation_lease
|
60
|
+
function: Function | None,
|
60
61
|
counting_service: CountingService,
|
61
62
|
assignment_service: AssignmentService,
|
62
63
|
):
|
@@ -75,7 +76,8 @@ class LambdaVersionManager:
|
|
75
76
|
# async state
|
76
77
|
self.provisioned_state = None
|
77
78
|
self.provisioned_state_lock = threading.RLock()
|
78
|
-
|
79
|
+
# https://aws.amazon.com/blogs/compute/coming-soon-expansion-of-aws-lambda-states-to-all-functions/
|
80
|
+
self.state = VersionState(state=State.Pending)
|
79
81
|
|
80
82
|
def start(self) -> VersionState:
|
81
83
|
try:
|
@@ -90,14 +92,14 @@ class LambdaVersionManager:
|
|
90
92
|
|
91
93
|
# code and reason not set for success scenario because only failed states provide this field:
|
92
94
|
# https://docs.aws.amazon.com/lambda/latest/dg/API_GetFunctionConfiguration.html#SSS-GetFunctionConfiguration-response-LastUpdateStatusReasonCode
|
93
|
-
|
95
|
+
self.state = VersionState(state=State.Active)
|
94
96
|
LOG.debug(
|
95
97
|
"Changing Lambda %s (id %s) to active",
|
96
98
|
self.function_arn,
|
97
99
|
self.function_version.config.internal_revision,
|
98
100
|
)
|
99
101
|
except Exception as e:
|
100
|
-
|
102
|
+
self.state = VersionState(
|
101
103
|
state=State.Failed,
|
102
104
|
code=StateReasonCode.InternalError,
|
103
105
|
reason=f"Error while creating lambda: {e}",
|
@@ -109,7 +111,7 @@ class LambdaVersionManager:
|
|
109
111
|
e,
|
110
112
|
exc_info=True,
|
111
113
|
)
|
112
|
-
return
|
114
|
+
return self.state
|
113
115
|
|
114
116
|
def stop(self) -> None:
|
115
117
|
LOG.debug("Stopping lambda version '%s'", self.function_arn)
|
@@ -219,18 +221,18 @@ class LambdaVersionManager:
|
|
219
221
|
if invocation_result.is_error:
|
220
222
|
start_thread(
|
221
223
|
lambda *args, **kwargs: record_cw_metric_error(
|
222
|
-
function_name=
|
223
|
-
account_id=
|
224
|
-
region_name=
|
224
|
+
function_name=function_id.function_name,
|
225
|
+
account_id=function_id.account,
|
226
|
+
region_name=function_id.region,
|
225
227
|
),
|
226
228
|
name=f"record-cloudwatch-metric-error-{function_id.function_name}:{function_id.qualifier}",
|
227
229
|
)
|
228
230
|
else:
|
229
231
|
start_thread(
|
230
232
|
lambda *args, **kwargs: record_cw_metric_invocation(
|
231
|
-
function_name=
|
232
|
-
account_id=
|
233
|
-
region_name=
|
233
|
+
function_name=function_id.function_name,
|
234
|
+
account_id=function_id.account,
|
235
|
+
region_name=function_id.region,
|
234
236
|
),
|
235
237
|
name=f"record-cloudwatch-metric-{function_id.function_name}:{function_id.qualifier}",
|
236
238
|
)
|
@@ -7,7 +7,7 @@ import os
|
|
7
7
|
|
8
8
|
from localstack.aws.api.lambda_ import Runtime
|
9
9
|
|
10
|
-
# Custom logger for proactive
|
10
|
+
# Custom logger for proactive advice
|
11
11
|
HINT_LOG = logging.getLogger("localstack.services.lambda_.hints")
|
12
12
|
|
13
13
|
|
@@ -150,6 +150,11 @@ from localstack.aws.spec import load_service
|
|
150
150
|
from localstack.services.edge import ROUTER
|
151
151
|
from localstack.services.lambda_ import api_utils
|
152
152
|
from localstack.services.lambda_ import hooks as lambda_hooks
|
153
|
+
from localstack.services.lambda_.analytics import (
|
154
|
+
FunctionOperation,
|
155
|
+
FunctionStatus,
|
156
|
+
function_counter,
|
157
|
+
)
|
153
158
|
from localstack.services.lambda_.api_utils import (
|
154
159
|
ARCHITECTURES,
|
155
160
|
STATEMENT_ID_REGEX,
|
@@ -1037,6 +1042,13 @@ class LambdaProvider(LambdaApi, ServiceLifecycleHook):
|
|
1037
1042
|
)
|
1038
1043
|
fn.versions["$LATEST"] = version
|
1039
1044
|
state.functions[function_name] = fn
|
1045
|
+
function_counter.labels(
|
1046
|
+
operation=FunctionOperation.create,
|
1047
|
+
runtime=runtime or "n/a",
|
1048
|
+
status=FunctionStatus.success,
|
1049
|
+
invocation_type="n/a",
|
1050
|
+
package_type=package_type,
|
1051
|
+
)
|
1040
1052
|
self.lambda_service.create_function_version(version)
|
1041
1053
|
|
1042
1054
|
if tags := request.get("Tags"):
|
localstack/version.py
CHANGED
@@ -17,5 +17,5 @@ __version__: str
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
18
18
|
version_tuple: VERSION_TUPLE
|
19
19
|
|
20
|
-
__version__ = version = '4.2.1.
|
21
|
-
__version_tuple__ = version_tuple = (4, 2, 1, '
|
20
|
+
__version__ = version = '4.2.1.dev86'
|
21
|
+
__version_tuple__ = version_tuple = (4, 2, 1, 'dev86')
|
@@ -3,7 +3,7 @@ localstack/constants.py,sha256=bBh6djh4x37MrS8az8LizX_APMZ56XdtJHCnZdOnmeg,6867
|
|
3
3
|
localstack/deprecations.py,sha256=t3zeaZaHhKYM8snP1wRZhpvAy6MbB12Vqv5hK78bwJ0,15162
|
4
4
|
localstack/openapi.yaml,sha256=B803NmpwsxG8PHpHrdZYBrUYjnrRh7B_JX0XuNynuFs,30237
|
5
5
|
localstack/plugins.py,sha256=BIJC9dlo0WbP7lLKkCiGtd_2q5oeqiHZohvoRTcejXM,2457
|
6
|
-
localstack/version.py,sha256=
|
6
|
+
localstack/version.py,sha256=wwzs55NvYfTI1OPO99bR8RtTxUdOiMq83PqnOQ-FXRU,526
|
7
7
|
localstack/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
8
|
localstack/aws/accounts.py,sha256=102zpGowOxo0S6UGMpfjw14QW7WCLVAGsnFK5xFMLoo,3043
|
9
9
|
localstack/aws/app.py,sha256=n9bJCfJRuMz_gLGAH430c3bIQXgUXeWO5NPfcdL2MV8,5145
|
@@ -154,7 +154,7 @@ localstack/packages/java.py,sha256=5SKdbfkXlvAcPyfEF5VDmDZT9RzK8yNtTkNO0ZeoiVg,7
|
|
154
154
|
localstack/packages/plugins.py,sha256=NvcYj-TD-8Oxq5mK9JPZbp0_POxDi35rlh1FhxgTNEk,471
|
155
155
|
localstack/packages/terraform.py,sha256=gMbCHjSaNnMzpvP7qoIDHmGMTs9tCT9pSed55DCzLHE,1365
|
156
156
|
localstack/runtime/__init__.py,sha256=th-8bfJFd011WcYnrlmpe0-79UWJ2LOqEZWLpVQno5Y,83
|
157
|
-
localstack/runtime/analytics.py,sha256=
|
157
|
+
localstack/runtime/analytics.py,sha256=ZXiDOUI8YujxUuojA4fasBHkGXjOo6NHU_UkD1oM6d8,4790
|
158
158
|
localstack/runtime/components.py,sha256=Mkbukxm1TM2uKFKHXf5HoPsQ5jEywZ2hADxbPBteLOY,1641
|
159
159
|
localstack/runtime/current.py,sha256=QL9lVykPEjtp-B5D55osBkgcQlKFgbcfgFecJDJ8qCw,1207
|
160
160
|
localstack/runtime/events.py,sha256=fcp3M60ZHT7h998E7qA9ectPTmBRAoEwYM4OYB4-B94,236
|
@@ -530,22 +530,22 @@ localstack/services/kms/resource_providers/aws_kms_key.py,sha256=bqaRvA0Ab6ltGsW
|
|
530
530
|
localstack/services/kms/resource_providers/aws_kms_key.schema.json,sha256=tfh8quEHohcWoyOkYLvDcygxfW6lywFgLKT1Uubcuas,5752
|
531
531
|
localstack/services/kms/resource_providers/aws_kms_key_plugin.py,sha256=EYWFqmJ3fCCwUMfTY7j3PspeQK81znlClxHu6PEFSXY,500
|
532
532
|
localstack/services/lambda_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
533
|
+
localstack/services/lambda_/analytics.py,sha256=q2mlY6yKF-pRM62ALHKPrd03WBdSQSndyEPZONj4Rxo,1578
|
533
534
|
localstack/services/lambda_/api_utils.py,sha256=2LJEkylloVQ-0fik5kBgWSC9PpaqkBao2z519lbfZW4,29763
|
534
535
|
localstack/services/lambda_/custom_endpoints.py,sha256=eNnQ4FyfWxiK2ZZtjcAxrtEqscWGowPFei_RHh-qH3E,2017
|
535
536
|
localstack/services/lambda_/hooks.py,sha256=mSthgopfc3XHVC-DBmMlQ56EhNRPZK6CtUo9ftUekI8,1146
|
536
|
-
localstack/services/lambda_/lambda_utils.py,sha256=
|
537
|
+
localstack/services/lambda_/lambda_utils.py,sha256=pxnRJnYzwhwbHbW1-GKV1TJyJgn52IPNtb8kwxMkld8,1803
|
537
538
|
localstack/services/lambda_/networking.py,sha256=H9fq1aYThqXZkOi0fCoJrHI9rm19qgUVxFe3vYloN08,938
|
538
539
|
localstack/services/lambda_/packages.py,sha256=pGDSFMZe_XkkYLlNczW9YFW8G0sulVr2pRHqVAhchhY,3965
|
539
540
|
localstack/services/lambda_/plugins.py,sha256=eZsdzZqgEG9EZpd3W8TUdoydTpPXl6JBzJgDx_qeFUU,1275
|
540
|
-
localstack/services/lambda_/provider.py,sha256=
|
541
|
+
localstack/services/lambda_/provider.py,sha256=HlbjDJIXdJm0FzuI2X1aSGfae6y3bXobbnPjPQCS7Xo,190016
|
541
542
|
localstack/services/lambda_/provider_utils.py,sha256=-vM__pt5qIVhTiPA05N2P0P_pQpwyZggyRuL_QvsQHs,3210
|
542
543
|
localstack/services/lambda_/runtimes.py,sha256=x5QBP42fskZQytbuoht5x4JNKjko-U7i4xaOH0foZb8,7885
|
543
544
|
localstack/services/lambda_/urlrouter.py,sha256=ZuVUaAn3tmesDQntkrVQ_-xkMAmdDzmAqx7XIzK9dOo,8351
|
544
|
-
localstack/services/lambda_/usage.py,sha256=q4SyN4xmu6oWixO9-4s9bQQ3g8Nhb-3illfteygwAcY,714
|
545
545
|
localstack/services/lambda_/event_source_mapping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
546
546
|
localstack/services/lambda_/event_source_mapping/esm_config_factory.py,sha256=E7N81Dm9PV7lbvD_JRWDeqACYnEhazrFV4YEPejkXgw,6180
|
547
|
-
localstack/services/lambda_/event_source_mapping/esm_event_processor.py,sha256
|
548
|
-
localstack/services/lambda_/event_source_mapping/esm_worker.py,sha256=
|
547
|
+
localstack/services/lambda_/event_source_mapping/esm_event_processor.py,sha256=-VOSmZmNi38ob_zMUEcFjIk6Hy-Aa4cXYPmB71R-zQo,6842
|
548
|
+
localstack/services/lambda_/event_source_mapping/esm_worker.py,sha256=ro4t7DAvrlMd-U7WWly1XKnyKXL6du3T4IgtVVtLoKw,9368
|
549
549
|
localstack/services/lambda_/event_source_mapping/esm_worker_factory.py,sha256=Ox1hN5XDNxlVCy172bZdmVaJSbL9BJhHAAz2rTL65Hg,10044
|
550
550
|
localstack/services/lambda_/event_source_mapping/event_processor.py,sha256=lrneBFEeitdd-KVOtVzyWDHbE_dulRP5J44PpAONfJE,2481
|
551
551
|
localstack/services/lambda_/event_source_mapping/noops_event_processor.py,sha256=rCdI2_y0yoOqQ1WwF3rrscwbNVz6AqDScPqAZcR5tTQ,382
|
@@ -565,20 +565,20 @@ localstack/services/lambda_/event_source_mapping/senders/sender.py,sha256=73Cxzi
|
|
565
565
|
localstack/services/lambda_/event_source_mapping/senders/sender_utils.py,sha256=q8Kq1YE8-irfEAO3UkQ1-Dy-vnb56Mn-Mx9YUzLT7bg,1411
|
566
566
|
localstack/services/lambda_/invocation/__init__.py,sha256=g6PC4HNlQSu3sgTQ8-L7YrW7bj8J0OQyuvE9vWUXY50,202
|
567
567
|
localstack/services/lambda_/invocation/assignment.py,sha256=w5ngpF4Gxr9w8B48RxjTlzgH8T8SMKFYXrTjTFjWOYk,7615
|
568
|
-
localstack/services/lambda_/invocation/counting_service.py,sha256=
|
568
|
+
localstack/services/lambda_/invocation/counting_service.py,sha256=e3f__j4cpZoA3nVQzhp_kYI8hiqhfXW4JUUw_PyaZv0,13161
|
569
569
|
localstack/services/lambda_/invocation/docker_runtime_executor.py,sha256=RmGdXwLow4McYOYhIrJ7izm0g7qACw1t5iDTt8z-DqE,21661
|
570
|
-
localstack/services/lambda_/invocation/event_manager.py,sha256=
|
570
|
+
localstack/services/lambda_/invocation/event_manager.py,sha256=OQTCHkpPPDv_Vis5lL5QtEbIKc7WcNFeFDkQQwBw2WE,27004
|
571
571
|
localstack/services/lambda_/invocation/execution_environment.py,sha256=pQPz2Lvs9wLe2iva4_AQuydkw4GWc6_cm4chkcz87T0,17581
|
572
572
|
localstack/services/lambda_/invocation/executor_endpoint.py,sha256=ok1unx1_vroBKvV9We8iZNt6O4u58q788ywHTgFrm9o,8481
|
573
573
|
localstack/services/lambda_/invocation/internal_sqs_queue.py,sha256=h8wQPbJPtcUxKXmPzfrD5R5UzhZc248wkXNDJOexJ_I,7332
|
574
574
|
localstack/services/lambda_/invocation/lambda_models.py,sha256=K0G0CE_8BS58xyl2rjGvx8VFJsczoBekBb4vA1SOJ0A,19813
|
575
|
-
localstack/services/lambda_/invocation/lambda_service.py,sha256=
|
575
|
+
localstack/services/lambda_/invocation/lambda_service.py,sha256=1E0fnHqvU53yMd4Z0iY4ud-yNsO2d5UkG7GkpXLyqxA,29990
|
576
576
|
localstack/services/lambda_/invocation/logs.py,sha256=kWCAAmUq9Zn9SA8IsA9QufEwFL7KZlf-dxTB9-skO1U,2580
|
577
577
|
localstack/services/lambda_/invocation/metrics.py,sha256=IOzQguI3v8xl47FP6jMZYL3g9k-NIZEkvldAImdXljQ,1134
|
578
578
|
localstack/services/lambda_/invocation/models.py,sha256=22B5_QfiDj2Imjwhf9u7PGDWevQpn83AE84fpBRA6Ts,1084
|
579
579
|
localstack/services/lambda_/invocation/plugins.py,sha256=axAnRqpDyPvqh95s21FX7CcYZ5Or6QPJ3LykXu4tpyc,402
|
580
580
|
localstack/services/lambda_/invocation/runtime_executor.py,sha256=9PBCTd0FGHuamjiuDghseUb3h2VnxGUANnCHDo-uB_o,4197
|
581
|
-
localstack/services/lambda_/invocation/version_manager.py,sha256=
|
581
|
+
localstack/services/lambda_/invocation/version_manager.py,sha256=xnWlNX1lp2NvPgeX_0lZ9d8BlLZJhWATvsM5DZpB5pM,11122
|
582
582
|
localstack/services/lambda_/layerfetcher/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
583
583
|
localstack/services/lambda_/layerfetcher/layer_fetcher.py,sha256=GxTG_LKvMrjjy3zLqgHS4e2jPLGyTZ3sPHxQ4jeP_Zw,601
|
584
584
|
localstack/services/lambda_/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1266,13 +1266,13 @@ localstack/utils/server/tcp_proxy.py,sha256=rR6d5jR0ozDvIlpHiqW0cfyY9a2fRGdOzyA8
|
|
1266
1266
|
localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1267
1267
|
localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
|
1268
1268
|
localstack/utils/xray/traceid.py,sha256=SQSsMV2rhbTNK6ceIoozZYuGU7Fg687EXcgqxoDl1Fw,1106
|
1269
|
-
localstack_core-4.2.1.
|
1270
|
-
localstack_core-4.2.1.
|
1271
|
-
localstack_core-4.2.1.
|
1272
|
-
localstack_core-4.2.1.
|
1273
|
-
localstack_core-4.2.1.
|
1274
|
-
localstack_core-4.2.1.
|
1275
|
-
localstack_core-4.2.1.
|
1276
|
-
localstack_core-4.2.1.
|
1277
|
-
localstack_core-4.2.1.
|
1278
|
-
localstack_core-4.2.1.
|
1269
|
+
localstack_core-4.2.1.dev86.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
|
1270
|
+
localstack_core-4.2.1.dev86.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
|
1271
|
+
localstack_core-4.2.1.dev86.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
|
1272
|
+
localstack_core-4.2.1.dev86.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
|
1273
|
+
localstack_core-4.2.1.dev86.dist-info/METADATA,sha256=52aChOrfLFiO0uWpc7zO2OZz-Bn3NkDGmP1WbjUkDEA,5502
|
1274
|
+
localstack_core-4.2.1.dev86.dist-info/WHEEL,sha256=DK49LOLCYiurdXXOXwGJm6U4DkHkg4lcxjhqwRa0CP4,91
|
1275
|
+
localstack_core-4.2.1.dev86.dist-info/entry_points.txt,sha256=UqGFR0MPKa2sfresdqiCpqBZuWyRxCb3UG77oPVMzVA,20564
|
1276
|
+
localstack_core-4.2.1.dev86.dist-info/plux.json,sha256=T5yLRdX7HSoIuLLWWG6hMKRvFoUkS5rl0Ni2o7DzbRs,20786
|
1277
|
+
localstack_core-4.2.1.dev86.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
|
1278
|
+
localstack_core-4.2.1.dev86.dist-info/RECORD,,
|
@@ -0,0 +1 @@
|
|
1
|
+
{"localstack.cloudformation.resource_providers": ["AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "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::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "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::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin"], "localstack.packages": ["ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package"], "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", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "_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", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings"], "localstack.hooks.on_infra_shutdown": ["remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "stop_server=localstack.dns.plugins:stop_server", "aggregate_and_send=localstack.utils.analytics.usage:aggregate_and_send", "publish_metrics=localstack.utils.analytics.metrics:publish_metrics", "_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"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.aws.provider": ["acm:default=localstack.services.providers:acm", "apigateway:default=localstack.services.providers:apigateway", "apigateway:legacy=localstack.services.providers:apigateway_legacy", "apigateway:next_gen=localstack.services.providers:apigateway_next_gen", "config:default=localstack.services.providers:awsconfig", "cloudformation:default=localstack.services.providers:cloudformation", "cloudformation:engine-v2=localstack.services.providers:cloudformation_v2", "cloudwatch:default=localstack.services.providers:cloudwatch", "cloudwatch:v1=localstack.services.providers:cloudwatch_v1", "cloudwatch:v2=localstack.services.providers:cloudwatch_v2", "dynamodb:default=localstack.services.providers:dynamodb", "dynamodb:v2=localstack.services.providers:dynamodb_v2", "dynamodbstreams:default=localstack.services.providers:dynamodbstreams", "dynamodbstreams:v2=localstack.services.providers:dynamodbstreams_v2", "ec2:default=localstack.services.providers:ec2", "es:default=localstack.services.providers:es", "events:default=localstack.services.providers:events", "events:legacy=localstack.services.providers:events_legacy", "events:v1=localstack.services.providers:events_v1", "events:v2=localstack.services.providers:events_v2", "firehose:default=localstack.services.providers:firehose", "iam:default=localstack.services.providers:iam", "kinesis:default=localstack.services.providers:kinesis", "kms:default=localstack.services.providers:kms", "lambda:default=localstack.services.providers:lambda_", "lambda:asf=localstack.services.providers:lambda_asf", "lambda:v2=localstack.services.providers:lambda_v2", "logs:default=localstack.services.providers:logs", "opensearch:default=localstack.services.providers:opensearch", "redshift:default=localstack.services.providers:redshift", "resource-groups:default=localstack.services.providers:resource_groups", "resourcegroupstaggingapi:default=localstack.services.providers:resourcegroupstaggingapi", "route53:default=localstack.services.providers:route53", "route53resolver:default=localstack.services.providers:route53resolver", "s3:default=localstack.services.providers:s3", "s3control:default=localstack.services.providers:s3control", "scheduler:default=localstack.services.providers:scheduler", "secretsmanager:default=localstack.services.providers:secretsmanager", "ses:default=localstack.services.providers:ses", "sns:default=localstack.services.providers:sns", "sqs:default=localstack.services.providers:sqs", "ssm:default=localstack.services.providers:ssm", "stepfunctions:default=localstack.services.providers:stepfunctions", "stepfunctions:v2=localstack.services.providers:stepfunctions_v2", "sts:default=localstack.services.providers:sts", "support:default=localstack.services.providers:support", "swf:default=localstack.services.providers:swf", "transcribe:default=localstack.services.providers:transcribe"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.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.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.hooks.on_infra_ready": ["_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"]}
|
@@ -1,17 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
Usage reporting for Lambda service
|
3
|
-
"""
|
4
|
-
|
5
|
-
from localstack.utils.analytics.usage import UsageCounter, UsageSetCounter
|
6
|
-
|
7
|
-
# number of Lambda API operations for CreateFunction using hot reloading
|
8
|
-
hotreload = UsageCounter("lambda:hotreload")
|
9
|
-
|
10
|
-
# number of function invocations per Lambda runtime (e.g. python3.7 invoked 10x times, nodejs14.x invoked 3x times, ...)
|
11
|
-
runtime = UsageSetCounter("lambda:invokedruntime")
|
12
|
-
|
13
|
-
# number of event source mapping invocations per source (e.g. aws:sqs, aws:kafka, SelfManagedKafka)
|
14
|
-
esm_invocation = UsageSetCounter("lambda:esm:invocation")
|
15
|
-
|
16
|
-
# number of event source mapping errors per source (e.g. aws:sqs, aws:kafka, SelfManagedKafka)
|
17
|
-
esm_error = UsageSetCounter("lambda:esm:error")
|
@@ -1 +0,0 @@
|
|
1
|
-
{"localstack.cloudformation.resource_providers": ["AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "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::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "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::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "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::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin"], "localstack.hooks.on_infra_start": ["setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "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_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "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", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches"], "localstack.hooks.on_infra_shutdown": ["stop_server=localstack.dns.plugins:stop_server", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "publish_metrics=localstack.utils.analytics.metrics:publish_metrics", "aggregate_and_send=localstack.utils.analytics.usage:aggregate_and_send", "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.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.packages": ["vosk/community=localstack.services.transcribe.plugins:vosk_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package"], "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.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "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.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"]}
|
File without changes
|
{localstack_core-4.2.1.dev84.data → localstack_core-4.2.1.dev86.data}/scripts/localstack-supervisor
RENAMED
File without changes
|
{localstack_core-4.2.1.dev84.data → localstack_core-4.2.1.dev86.data}/scripts/localstack.bat
RENAMED
File without changes
|
File without changes
|
{localstack_core-4.2.1.dev84.dist-info → localstack_core-4.2.1.dev86.dist-info}/entry_points.txt
RENAMED
File without changes
|
{localstack_core-4.2.1.dev84.dist-info → localstack_core-4.2.1.dev86.dist-info}/licenses/LICENSE.txt
RENAMED
File without changes
|
{localstack_core-4.2.1.dev84.dist-info → localstack_core-4.2.1.dev86.dist-info}/top_level.txt
RENAMED
File without changes
|