aws-lambda-powertools 3.8.1a9__py3-none-any.whl → 3.8.1a10__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.
- aws_lambda_powertools/logging/logger.py +13 -5
- aws_lambda_powertools/metrics/provider/cold_start.py +11 -0
- aws_lambda_powertools/shared/constants.py +1 -0
- aws_lambda_powertools/shared/version.py +1 -1
- aws_lambda_powertools/tracing/tracer.py +28 -5
- {aws_lambda_powertools-3.8.1a9.dist-info → aws_lambda_powertools-3.8.1a10.dist-info}/METADATA +1 -1
- {aws_lambda_powertools-3.8.1a9.dist-info → aws_lambda_powertools-3.8.1a10.dist-info}/RECORD +9 -9
- {aws_lambda_powertools-3.8.1a9.dist-info → aws_lambda_powertools-3.8.1a10.dist-info}/LICENSE +0 -0
- {aws_lambda_powertools-3.8.1a9.dist-info → aws_lambda_powertools-3.8.1a10.dist-info}/WHEEL +0 -0
@@ -64,14 +64,22 @@ def _is_cold_start() -> bool:
|
|
64
64
|
bool
|
65
65
|
cold start bool value
|
66
66
|
"""
|
67
|
-
cold_start = False
|
68
|
-
|
69
67
|
global is_cold_start
|
70
|
-
|
71
|
-
|
68
|
+
|
69
|
+
initialization_type = os.getenv(constants.LAMBDA_INITIALIZATION_TYPE)
|
70
|
+
|
71
|
+
# Check for Provisioned Concurrency environment
|
72
|
+
# AWS_LAMBDA_INITIALIZATION_TYPE is set when using Provisioned Concurrency
|
73
|
+
if initialization_type == "provisioned-concurrency":
|
72
74
|
is_cold_start = False
|
75
|
+
return False
|
76
|
+
|
77
|
+
if not is_cold_start:
|
78
|
+
return False
|
73
79
|
|
74
|
-
return
|
80
|
+
# This is a cold start - flip the flag and return True
|
81
|
+
is_cold_start = False
|
82
|
+
return True
|
75
83
|
|
76
84
|
|
77
85
|
class Logger:
|
@@ -1,7 +1,18 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import os
|
4
|
+
|
5
|
+
from aws_lambda_powertools.shared import constants
|
6
|
+
|
3
7
|
is_cold_start = True
|
4
8
|
|
9
|
+
initialization_type = os.getenv(constants.LAMBDA_INITIALIZATION_TYPE)
|
10
|
+
|
11
|
+
# Check for Provisioned Concurrency environment
|
12
|
+
# AWS_LAMBDA_INITIALIZATION_TYPE is set when using Provisioned Concurrency
|
13
|
+
if initialization_type == "provisioned-concurrency":
|
14
|
+
is_cold_start = False
|
15
|
+
|
5
16
|
|
6
17
|
def reset_cold_start_flag():
|
7
18
|
global is_cold_start
|
@@ -57,6 +57,7 @@ LAMBDA_TASK_ROOT_ENV: str = "LAMBDA_TASK_ROOT"
|
|
57
57
|
SAM_LOCAL_ENV: str = "AWS_SAM_LOCAL"
|
58
58
|
CHALICE_LOCAL_ENV: str = "AWS_CHALICE_CLI_MODE"
|
59
59
|
LAMBDA_FUNCTION_NAME_ENV: str = "AWS_LAMBDA_FUNCTION_NAME"
|
60
|
+
LAMBDA_INITIALIZATION_TYPE: str = "AWS_LAMBDA_INITIALIZATION_TYPE"
|
60
61
|
|
61
62
|
# Debug constants
|
62
63
|
POWERTOOLS_DEV_ENV: str = "POWERTOOLS_DEV"
|
@@ -30,6 +30,32 @@ aws_xray_sdk = LazyLoader(constants.XRAY_SDK_MODULE, globals(), constants.XRAY_S
|
|
30
30
|
T = TypeVar("T")
|
31
31
|
|
32
32
|
|
33
|
+
def _is_cold_start() -> bool:
|
34
|
+
"""Verifies whether is cold start
|
35
|
+
|
36
|
+
Returns
|
37
|
+
-------
|
38
|
+
bool
|
39
|
+
cold start bool value
|
40
|
+
"""
|
41
|
+
global is_cold_start
|
42
|
+
|
43
|
+
initialization_type = os.getenv(constants.LAMBDA_INITIALIZATION_TYPE)
|
44
|
+
|
45
|
+
# Check for Provisioned Concurrency environment
|
46
|
+
# AWS_LAMBDA_INITIALIZATION_TYPE is set when using Provisioned Concurrency
|
47
|
+
if initialization_type == "provisioned-concurrency":
|
48
|
+
is_cold_start = False
|
49
|
+
return False
|
50
|
+
|
51
|
+
if not is_cold_start:
|
52
|
+
return False
|
53
|
+
|
54
|
+
# This is a cold start - flip the flag and return True
|
55
|
+
is_cold_start = False
|
56
|
+
return True
|
57
|
+
|
58
|
+
|
33
59
|
class Tracer:
|
34
60
|
"""Tracer using AWS-XRay to provide decorators with known defaults for Lambda functions
|
35
61
|
|
@@ -340,12 +366,9 @@ class Tracer:
|
|
340
366
|
|
341
367
|
raise
|
342
368
|
finally:
|
343
|
-
|
369
|
+
cold_start = _is_cold_start()
|
344
370
|
logger.debug("Annotating cold start")
|
345
|
-
subsegment.put_annotation(key="ColdStart", value=
|
346
|
-
|
347
|
-
if is_cold_start:
|
348
|
-
is_cold_start = False
|
371
|
+
subsegment.put_annotation(key="ColdStart", value=cold_start)
|
349
372
|
|
350
373
|
if self.service:
|
351
374
|
subsegment.put_annotation(key="Service", value=self.service)
|
{aws_lambda_powertools-3.8.1a9.dist-info → aws_lambda_powertools-3.8.1a10.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: aws_lambda_powertools
|
3
|
-
Version: 3.8.
|
3
|
+
Version: 3.8.1a10
|
4
4
|
Summary: Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
|
5
5
|
License: MIT
|
6
6
|
Keywords: aws_lambda_powertools,aws,tracing,logging,lambda,powertools,feature_flags,idempotency,middleware
|
@@ -49,7 +49,7 @@ aws_lambda_powertools/logging/formatter.py,sha256=dmE6XXmkWVkYbWdy1Kg69TYJJ0yDXf
|
|
49
49
|
aws_lambda_powertools/logging/formatters/__init__.py,sha256=OqddpJcWMqRYhx5SFy-SPqtt72tkRZbfpEi_oCC47eI,301
|
50
50
|
aws_lambda_powertools/logging/formatters/datadog.py,sha256=NwaaBOp7jIlOAH158NzyvW-EwmWqqnYX9f7Uu_nIUYQ,3169
|
51
51
|
aws_lambda_powertools/logging/lambda_context.py,sha256=VHst_6hxMpXgScoxNwaC61UXPTIdd3AEBHTPzb4esPc,1736
|
52
|
-
aws_lambda_powertools/logging/logger.py,sha256=
|
52
|
+
aws_lambda_powertools/logging/logger.py,sha256=H8f5Rp8P9I_hhzUolQAr2vjMDspV6Kg7u6sfg2V8wjo,49010
|
53
53
|
aws_lambda_powertools/logging/types.py,sha256=Zc95nGdZ2sJUEPdwR0uoArT_F-JSKfpS_LokdCVO0nQ,1263
|
54
54
|
aws_lambda_powertools/logging/utils.py,sha256=NirAObjkkarN5fX2diHs0Ln_8KHLueviL-jCKhckIBM,4069
|
55
55
|
aws_lambda_powertools/metrics/__init__.py,sha256=B5FpJS_VR7zivm2ylvUF8RHBthKz4aDk0VA5GpDn3Tk,592
|
@@ -66,7 +66,7 @@ aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py,sha256=ByQMR6
|
|
66
66
|
aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py,sha256=FdDzZ5sMLvZQqv2XR55haKdhVuCCCSYIHoat3h-ZpNI,218
|
67
67
|
aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py,sha256=pzVuLOFzjyau1GGvTNpHQvmrPXDWpPeG16FaBEsHCH0,1007
|
68
68
|
aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py,sha256=Rhnn9VkPX41tVjV1dOTqk3gyPRnvcpSNDFC2m2kjSaQ,587
|
69
|
-
aws_lambda_powertools/metrics/provider/cold_start.py,sha256=
|
69
|
+
aws_lambda_powertools/metrics/provider/cold_start.py,sha256=I4oAfv2HIfMtX69IoLcGp-D79XjSfX4MZDoUdTPcMQ4,505
|
70
70
|
aws_lambda_powertools/metrics/provider/datadog/__init__.py,sha256=3LivCIwqyI7KKEeSLDcxN1Z9RObChoMg5hpiXPin2C0,225
|
71
71
|
aws_lambda_powertools/metrics/provider/datadog/datadog.py,sha256=zw-AtT4gPqqNLjsQe99flB4eIK-CE1bbWaaSa9D5cFg,14491
|
72
72
|
aws_lambda_powertools/metrics/provider/datadog/metrics.py,sha256=_7dx4sSx6aXGJ2uv3iisqr6AyqmKjHBATOLdI1hjJhw,4285
|
@@ -79,7 +79,7 @@ aws_lambda_powertools/package_logger.py,sha256=Q2QX1JXDdc-Piekk1r19qEIDUMN2i4ZZK
|
|
79
79
|
aws_lambda_powertools/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
80
80
|
aws_lambda_powertools/shared/__init__.py,sha256=o2ycxf3MCYfWXm1P-zuTKap_uzJiu8uYmVcCX7s4gUk,75
|
81
81
|
aws_lambda_powertools/shared/cache_dict.py,sha256=X3Ykh-_Fb4Wkc5RGjaostC_FUvMyY_H1L2bOB89A3vM,916
|
82
|
-
aws_lambda_powertools/shared/constants.py,sha256=
|
82
|
+
aws_lambda_powertools/shared/constants.py,sha256=5piC-613gUOv2r1miWvSuiT04sG89CGy8iY98Bxlslg,2872
|
83
83
|
aws_lambda_powertools/shared/cookies.py,sha256=X2Bkcf7MAmV75PJFm07QGkL4n1psk4HIGpUxzrsjiJY,3868
|
84
84
|
aws_lambda_powertools/shared/dynamodb_deserializer.py,sha256=tWw8MLXEitInnViFkt_xSBkXD_V1n1KcWbqBXBxwUlE,4054
|
85
85
|
aws_lambda_powertools/shared/functions.py,sha256=N5VIND3xW-eZHqY2uPsBMtDbtMx64iklUKByeCh58rc,7625
|
@@ -88,11 +88,11 @@ aws_lambda_powertools/shared/json_encoder.py,sha256=JQeWNu-4M7_xI_hqYExrxsb3OcEH
|
|
88
88
|
aws_lambda_powertools/shared/lazy_import.py,sha256=TbXQm2bcwXdZrYdBaJJXIswyLlumM85RJ_A_0w-h-GU,2019
|
89
89
|
aws_lambda_powertools/shared/types.py,sha256=APkI38HbiTpSF19NSNii8Ydx73vmVUVotgEQ9jHruEI,124
|
90
90
|
aws_lambda_powertools/shared/user_agent.py,sha256=DrCMFQuT4a4iIrpcWpAIjY37EFqR9-QxlxDGD-Nn9Gg,7081
|
91
|
-
aws_lambda_powertools/shared/version.py,sha256=
|
91
|
+
aws_lambda_powertools/shared/version.py,sha256=l9UgjhXUM5tHAvW82xf1HgPWV8QQeFdN65pnPPmzI10,85
|
92
92
|
aws_lambda_powertools/tracing/__init__.py,sha256=f4bMThOPBPWTPVcYqcAIErAJPerMsf3H_Z4gCXCsK9I,141
|
93
93
|
aws_lambda_powertools/tracing/base.py,sha256=DbLD8OSK05KLdSV36oNA5wDSGv8KbcOD19qMUqoXh58,4513
|
94
94
|
aws_lambda_powertools/tracing/extensions.py,sha256=APOfXOq-hRBKaK5WyfIyrd_6M1_9SWJZ3zxLA9jDZzU,492
|
95
|
-
aws_lambda_powertools/tracing/tracer.py,sha256=
|
95
|
+
aws_lambda_powertools/tracing/tracer.py,sha256=bLTdP3NmJQc3VYdcP-tZJ3fdvR8jNTPT8RBuUVtPQqY,32457
|
96
96
|
aws_lambda_powertools/utilities/__init__.py,sha256=BhnoYxIaDboi8oCsEMAizR2Bp-EaJJ-OcdMa9q07thc,39
|
97
97
|
aws_lambda_powertools/utilities/batch/__init__.py,sha256=mjFmfhJwot_3miZrstDcMKH7LzM_0aD35z-581HgZfY,1073
|
98
98
|
aws_lambda_powertools/utilities/batch/base.py,sha256=FAYRjITKFHtRLmADX1xF92WQUPLyqzYXgvLvFtQE4vU,25292
|
@@ -257,7 +257,7 @@ aws_lambda_powertools/utilities/validation/envelopes.py,sha256=YD5HOFx6IClQgii0n
|
|
257
257
|
aws_lambda_powertools/utilities/validation/exceptions.py,sha256=PKy_19zQMBJGCMMFl-sMkcm-cc0v3zZBn_bhGE4wKNo,2084
|
258
258
|
aws_lambda_powertools/utilities/validation/validator.py,sha256=x_1qpuKJBuWpgNU-zCD3Di-vXrZfyUu7oA5RmjZjr84,10034
|
259
259
|
aws_lambda_powertools/warnings/__init__.py,sha256=vqDVeZz8wGtD8WGYNSkQE7AHwqtIrPGRxuoJR_BBnSs,1193
|
260
|
-
aws_lambda_powertools-3.8.
|
261
|
-
aws_lambda_powertools-3.8.
|
262
|
-
aws_lambda_powertools-3.8.
|
263
|
-
aws_lambda_powertools-3.8.
|
260
|
+
aws_lambda_powertools-3.8.1a10.dist-info/LICENSE,sha256=vMHS2eBgmwPUIMPb7LQ4p7ib_FPVQXarVjAasflrTwo,951
|
261
|
+
aws_lambda_powertools-3.8.1a10.dist-info/METADATA,sha256=VXPvA3QTuq7c2hKw42J23CPKoLz4elwIr-0Mp3XUOGI,11157
|
262
|
+
aws_lambda_powertools-3.8.1a10.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
263
|
+
aws_lambda_powertools-3.8.1a10.dist-info/RECORD,,
|
{aws_lambda_powertools-3.8.1a9.dist-info → aws_lambda_powertools-3.8.1a10.dist-info}/LICENSE
RENAMED
File without changes
|
File without changes
|