1
1
# NOTE: keeps for compatibility
2
2
from __future__ import annotations
3
3
4
- from typing import Any , Callable , Dict , Optional , Union
4
+ from typing import Any , Callable , Dict , Optional
5
5
6
6
from aws_lambda_powertools .metrics .base import MetricResolution , MetricUnit
7
7
from aws_lambda_powertools .metrics .provider .cloudwatch_emf .cloudwatch import AmazonCloudWatchEMFProvider
8
+ from aws_lambda_powertools .metrics .provider .cloudwatch_emf .types import CloudWatchEMFOutput
8
9
9
10
10
11
class Metrics :
11
- """Metrics create an EMF object with up to 100 metrics
12
+ """Metrics create an CloudWatch EMF object with up to 100 metrics
12
13
13
14
Use Metrics when you need to create multiple metrics that have
14
15
dimensions in common (e.g. service_name="payment").
@@ -115,7 +116,7 @@ def serialize_metric_set(
115
116
metrics : Dict | None = None ,
116
117
dimensions : Dict | None = None ,
117
118
metadata : Dict | None = None ,
118
- ) -> Dict :
119
+ ) -> CloudWatchEMFOutput :
119
120
return self .provider .serialize_metric_set (metrics = metrics , dimensions = dimensions , metadata = metadata )
120
121
121
122
def add_metadata (self , key : str , value : Any ) -> None :
@@ -138,15 +139,6 @@ def log_metrics(
138
139
default_dimensions = default_dimensions ,
139
140
)
140
141
141
- def _extract_metric_resolution_value (self , resolution : Union [int , MetricResolution ]) -> int :
142
- return self .provider ._extract_metric_resolution_value (resolution = resolution )
143
-
144
- def _extract_metric_unit_value (self , unit : Union [str , MetricUnit ]) -> str :
145
- return self .provider ._extract_metric_unit_value (unit = unit )
146
-
147
- def _add_cold_start_metric (self , context : Any ) -> None :
148
- self .provider ._add_cold_start_metric (context = context )
149
-
150
142
def set_default_dimensions (self , ** dimensions ) -> None :
151
143
self .provider .set_default_dimensions (** dimensions )
152
144
"""Persist dimensions across Lambda invocations
@@ -208,120 +200,3 @@ def service(self, service):
208
200
# we can quickly revert and duplicate code while using self.provider
209
201
210
202
EphemeralMetrics = AmazonCloudWatchEMFProvider
211
-
212
- # noqa: ERA001
213
- # class EphemeralMetrics(MetricManager):
214
- # """Non-singleton version of Metrics to not persist metrics across instances
215
- #
216
- # NOTE: This is useful when you want to:
217
- #
218
- # - Create metrics for distinct namespaces
219
- # - Create the same metrics with different dimensions more than once
220
- # """
221
- #
222
- # # _dimensions: Dict[str, str] = {}
223
- # _default_dimensions: Dict[str, Any] = {}
224
- #
225
- # def __init__(
226
- # self,
227
- # service: str | None = None,
228
- # namespace: str | None = None,
229
- # provider: AmazonCloudWatchEMFProvider | None = None,
230
- # ):
231
- # super().__init__(namespace=namespace, service=service)
232
- #
233
- # self.default_dimensions = self._default_dimensions
234
- # # # self.dimension_set = self._dimensions
235
- # # self.dimension_set.update(**self._default_dimensions)
236
- #
237
- # self.provider = provider or AmazonCloudWatchEMFProvider(
238
- # namespace=namespace,
239
- # service=service,
240
- # metric_set=self.metric_set,
241
- # metadata_set=self.metadata_set,
242
- # dimension_set=self.dimension_set,
243
- # default_dimensions=self._default_dimensions,
244
- # )
245
- #
246
- # def add_metric(
247
- # self,
248
- # name: str,
249
- # unit: MetricUnit | str,
250
- # value: float,
251
- # resolution: MetricResolution | int = 60,
252
- # ) -> None:
253
- # return self.provider.add_metric(name=name, unit=unit, value=value, resolution=resolution)
254
- #
255
- # def add_dimension(self, name: str, value: str) -> None:
256
- # return self.provider.add_dimension(name=name, value=value)
257
- #
258
- # def serialize_metric_set(
259
- # self,
260
- # metrics: Dict | None = None,
261
- # dimensions: Dict | None = None,
262
- # metadata: Dict | None = None,
263
- # ) -> Dict:
264
- # return self.provider.serialize_metric_set(metrics=metrics, dimensions=dimensions, metadata=metadata)
265
- #
266
- # def add_metadata(self, key: str, value: Any) -> None:
267
- # self.provider.add_metadata(key=key, value=value)
268
- #
269
- # def flush_metrics(self, raise_on_empty_metrics: bool = False) -> None:
270
- # self.provider.flush_metrics(raise_on_empty_metrics=raise_on_empty_metrics)
271
- #
272
- # def log_metrics(
273
- # self,
274
- # lambda_handler: Callable[[Dict, Any], Any] | Optional[Callable[[Dict, Any, Optional[Dict]], Any]] = None,
275
- # capture_cold_start_metric: bool = False,
276
- # raise_on_empty_metrics: bool = False,
277
- # default_dimensions: Dict[str, str] | None = None,
278
- # ):
279
- # return self.provider.log_metrics(
280
- # lambda_handler=lambda_handler,
281
- # capture_cold_start_metric=capture_cold_start_metric,
282
- # raise_on_empty_metrics=raise_on_empty_metrics,
283
- # default_dimensions=default_dimensions,
284
- # )
285
- #
286
- # def _extract_metric_resolution_value(self, resolution: Union[int, MetricResolution]) -> int:
287
- # return self.provider._extract_metric_resolution_value(resolution=resolution)
288
- #
289
- # def _extract_metric_unit_value(self, unit: Union[str, MetricUnit]) -> str:
290
- # return self.provider._extract_metric_unit_value(unit=unit)
291
- #
292
- # def _add_cold_start_metric(self, context: Any) -> None:
293
- # return self.provider._add_cold_start_metric(context=context)
294
- #
295
- # def set_default_dimensions(self, **dimensions) -> None:
296
- # """Persist dimensions across Lambda invocations
297
- #
298
- # Parameters
299
- # ----------
300
- # dimensions : Dict[str, Any], optional
301
- # metric dimensions as key=value
302
- #
303
- # Example
304
- # -------
305
- # **Sets some default dimensions that will always be present across metrics and invocations**
306
- #
307
- # from aws_lambda_powertools import Metrics
308
- #
309
- # metrics = Metrics(namespace="ServerlessAirline", service="payment")
310
- # metrics.set_default_dimensions(environment="demo", another="one")
311
- #
312
- # @metrics.log_metrics()
313
- # def lambda_handler():
314
- # return True
315
- # """
316
- # return self.provider.set_default_dimensions(**dimensions)
317
- #
318
- # def clear_default_dimensions(self) -> None:
319
- # self.default_dimensions.clear()
320
- #
321
- # def clear_metrics(self) -> None:
322
- # self.provider.clear_metrics()
323
- # # re-add default dimensions
324
- # self.set_default_dimensions(**self.default_dimensions)
325
- #
326
-
327
- # __all__ = []
0 commit comments