aws-cdk-lib 2.127.0__py3-none-any.whl → 2.129.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of aws-cdk-lib might be problematic. Click here for more details.

Files changed (103) hide show
  1. aws_cdk/__init__.py +6 -10
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.127.0.jsii.tgz → aws-cdk-lib@2.129.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_amazonmq/__init__.py +6 -24
  5. aws_cdk/aws_amplify/__init__.py +1 -2
  6. aws_cdk/aws_appconfig/__init__.py +0 -16
  7. aws_cdk/aws_applicationautoscaling/__init__.py +55 -22
  8. aws_cdk/aws_appstream/__init__.py +14 -14
  9. aws_cdk/aws_appsync/__init__.py +334 -3
  10. aws_cdk/aws_autoscaling/__init__.py +11 -7
  11. aws_cdk/aws_batch/__init__.py +137 -16
  12. aws_cdk/aws_cleanrooms/__init__.py +1 -2
  13. aws_cdk/aws_cloudformation/__init__.py +2 -10
  14. aws_cdk/aws_cloudfront/__init__.py +15 -8
  15. aws_cdk/aws_cloudfront/experimental/__init__.py +22 -0
  16. aws_cdk/aws_cloudfront_origins/__init__.py +332 -0
  17. aws_cdk/aws_cloudtrail/__init__.py +12 -2
  18. aws_cdk/aws_cloudwatch/__init__.py +925 -133
  19. aws_cdk/aws_codedeploy/__init__.py +69 -0
  20. aws_cdk/aws_codepipeline/__init__.py +1461 -111
  21. aws_cdk/aws_codepipeline_actions/__init__.py +40 -34
  22. aws_cdk/aws_cognito/__init__.py +0 -9
  23. aws_cdk/aws_config/__init__.py +2 -2
  24. aws_cdk/aws_connect/__init__.py +6 -1
  25. aws_cdk/aws_controltower/__init__.py +527 -7
  26. aws_cdk/aws_datasync/__init__.py +2 -2
  27. aws_cdk/aws_directoryservice/__init__.py +2 -3
  28. aws_cdk/aws_dynamodb/__init__.py +7 -0
  29. aws_cdk/aws_ec2/__init__.py +117 -210
  30. aws_cdk/aws_ecs/__init__.py +537 -3
  31. aws_cdk/aws_eks/__init__.py +1 -1
  32. aws_cdk/aws_elasticache/__init__.py +27 -20
  33. aws_cdk/aws_elasticloadbalancingv2/__init__.py +3 -4
  34. aws_cdk/aws_emr/__init__.py +23 -3
  35. aws_cdk/aws_events_targets/__init__.py +64 -20
  36. aws_cdk/aws_fis/__init__.py +4 -4
  37. aws_cdk/aws_frauddetector/__init__.py +3 -3
  38. aws_cdk/aws_globalaccelerator/__init__.py +2 -6
  39. aws_cdk/aws_glue/__init__.py +84 -55
  40. aws_cdk/aws_groundstation/__init__.py +8 -12
  41. aws_cdk/aws_guardduty/__init__.py +74 -70
  42. aws_cdk/aws_iam/__init__.py +16 -23
  43. aws_cdk/aws_imagebuilder/__init__.py +178 -156
  44. aws_cdk/aws_internetmonitor/__init__.py +12 -10
  45. aws_cdk/aws_iot/__init__.py +17 -10
  46. aws_cdk/aws_iotevents/__init__.py +4 -4
  47. aws_cdk/aws_iotfleetwise/__init__.py +10 -5
  48. aws_cdk/aws_iottwinmaker/__init__.py +3 -5
  49. aws_cdk/aws_iotwireless/__init__.py +35 -23
  50. aws_cdk/aws_kendra/__init__.py +36 -15
  51. aws_cdk/aws_kinesisfirehose/__init__.py +155 -114
  52. aws_cdk/aws_lambda/__init__.py +175 -15
  53. aws_cdk/aws_lambda_nodejs/__init__.py +22 -0
  54. aws_cdk/aws_lightsail/__init__.py +14 -18
  55. aws_cdk/aws_logs/__init__.py +15 -15
  56. aws_cdk/aws_mediaconnect/__init__.py +5 -3
  57. aws_cdk/aws_medialive/__init__.py +3 -12
  58. aws_cdk/aws_mediapackagev2/__init__.py +287 -286
  59. aws_cdk/aws_mediatailor/__init__.py +2 -2
  60. aws_cdk/aws_memorydb/__init__.py +2 -2
  61. aws_cdk/aws_msk/__init__.py +6 -3
  62. aws_cdk/aws_mwaa/__init__.py +10 -5
  63. aws_cdk/aws_neptunegraph/__init__.py +84 -66
  64. aws_cdk/aws_networkfirewall/__init__.py +5 -8
  65. aws_cdk/aws_networkmanager/__init__.py +3 -3
  66. aws_cdk/aws_nimblestudio/__init__.py +2 -4
  67. aws_cdk/aws_opensearchservice/__init__.py +6 -7
  68. aws_cdk/aws_osis/__init__.py +1 -3
  69. aws_cdk/aws_pinpoint/__init__.py +5 -5
  70. aws_cdk/aws_pipes/__init__.py +5 -5
  71. aws_cdk/aws_quicksight/__init__.py +5 -10
  72. aws_cdk/aws_rds/__init__.py +38 -21
  73. aws_cdk/aws_redshift/__init__.py +9 -5
  74. aws_cdk/aws_redshiftserverless/__init__.py +62 -38
  75. aws_cdk/aws_rolesanywhere/__init__.py +41 -53
  76. aws_cdk/aws_route53/__init__.py +532 -6
  77. aws_cdk/aws_route53recoverycontrol/__init__.py +1 -3
  78. aws_cdk/aws_route53recoveryreadiness/__init__.py +2 -2
  79. aws_cdk/aws_route53resolver/__init__.py +1 -4
  80. aws_cdk/aws_s3/__init__.py +12 -6
  81. aws_cdk/aws_s3_deployment/__init__.py +29 -0
  82. aws_cdk/aws_s3objectlambda/__init__.py +7 -4
  83. aws_cdk/aws_s3outposts/__init__.py +1 -1
  84. aws_cdk/aws_sagemaker/__init__.py +195 -11
  85. aws_cdk/aws_servicecatalogappregistry/__init__.py +3 -3
  86. aws_cdk/aws_ses/__init__.py +166 -9
  87. aws_cdk/aws_sns/__init__.py +185 -38
  88. aws_cdk/aws_sqs/__init__.py +10 -12
  89. aws_cdk/aws_ssm/__init__.py +16 -16
  90. aws_cdk/aws_ssmincidents/__init__.py +1 -1
  91. aws_cdk/aws_synthetics/__init__.py +94 -21
  92. aws_cdk/aws_verifiedpermissions/__init__.py +1 -2
  93. aws_cdk/aws_vpclattice/__init__.py +8 -4
  94. aws_cdk/aws_wafv2/__init__.py +14 -59
  95. aws_cdk/aws_workspaces/__init__.py +5 -4
  96. aws_cdk/aws_workspacesweb/__init__.py +6 -12
  97. aws_cdk/triggers/__init__.py +22 -0
  98. {aws_cdk_lib-2.127.0.dist-info → aws_cdk_lib-2.129.0.dist-info}/METADATA +1 -1
  99. {aws_cdk_lib-2.127.0.dist-info → aws_cdk_lib-2.129.0.dist-info}/RECORD +103 -103
  100. {aws_cdk_lib-2.127.0.dist-info → aws_cdk_lib-2.129.0.dist-info}/LICENSE +0 -0
  101. {aws_cdk_lib-2.127.0.dist-info → aws_cdk_lib-2.129.0.dist-info}/NOTICE +0 -0
  102. {aws_cdk_lib-2.127.0.dist-info → aws_cdk_lib-2.129.0.dist-info}/WHEEL +0 -0
  103. {aws_cdk_lib-2.127.0.dist-info → aws_cdk_lib-2.129.0.dist-info}/top_level.txt +0 -0
@@ -504,6 +504,98 @@ dashboard.add_widgets(cloudwatch.GraphWidget(
504
504
  ))
505
505
  ```
506
506
 
507
+ ### Table Widget
508
+
509
+ A `TableWidget` can display any number of metrics in tabular form.
510
+
511
+ ```python
512
+ # dashboard: cloudwatch.Dashboard
513
+ # execution_count_metric: cloudwatch.Metric
514
+
515
+
516
+ dashboard.add_widgets(cloudwatch.TableWidget(
517
+ title="Executions",
518
+ metrics=[execution_count_metric]
519
+ ))
520
+ ```
521
+
522
+ The `layout` property can be used to invert the rows and columns of the table.
523
+ The default `cloudwatch.TableLayout.HORIZONTAL` means that metrics are shown in rows and datapoints in columns.
524
+ `cloudwatch.TableLayout.VERTICAL` means that metrics are shown in columns and datapoints in rows.
525
+
526
+ ```python
527
+ # dashboard: cloudwatch.Dashboard
528
+
529
+
530
+ dashboard.add_widgets(cloudwatch.TableWidget(
531
+ # ...
532
+
533
+ layout=cloudwatch.TableLayout.VERTICAL
534
+ ))
535
+ ```
536
+
537
+ The `summary` property allows customizing the table to show summary columns (`columns` sub property),
538
+ whether to make the summary columns sticky remaining in view while scrolling (`sticky` sub property),
539
+ and to optionally only present summary columns (`hideNonSummaryColumns` sub property).
540
+
541
+ ```python
542
+ # dashboard: cloudwatch.Dashboard
543
+
544
+
545
+ dashboard.add_widgets(cloudwatch.TableWidget(
546
+ # ...
547
+
548
+ summary=cloudwatch.TableSummaryProps(
549
+ columns=[cloudwatch.TableSummaryColumn.AVERAGE],
550
+ hide_non_summary_columns=True,
551
+ sticky=True
552
+ )
553
+ ))
554
+ ```
555
+
556
+ The `thresholds` property can be used to highlight cells with a color when the datapoint value falls within the threshold.
557
+
558
+ ```python
559
+ # dashboard: cloudwatch.Dashboard
560
+
561
+
562
+ dashboard.add_widgets(cloudwatch.TableWidget(
563
+ # ...
564
+
565
+ thresholds=[
566
+ cloudwatch.TableThreshold.above(1000, cloudwatch.Color.RED),
567
+ cloudwatch.TableThreshold.between(500, 1000, cloudwatch.Color.ORANGE),
568
+ cloudwatch.TableThreshold.below(500, cloudwatch.Color.GREEN)
569
+ ]
570
+ ))
571
+ ```
572
+
573
+ The `showUnitsInLabel` property can be used to display what unit is associated with a metric in the label column.
574
+
575
+ ```python
576
+ # dashboard: cloudwatch.Dashboard
577
+
578
+
579
+ dashboard.add_widgets(cloudwatch.TableWidget(
580
+ # ...
581
+
582
+ show_units_in_label=True
583
+ ))
584
+ ```
585
+
586
+ The `fullPrecision` property can be used to show as many digits as can fit in a cell, before rounding.
587
+
588
+ ```python
589
+ # dashboard: cloudwatch.Dashboard
590
+
591
+
592
+ dashboard.add_widgets(cloudwatch.TableWidget(
593
+ # ...
594
+
595
+ full_precision=True
596
+ ))
597
+ ```
598
+
507
599
  ### Gauge widget
508
600
 
509
601
  Gauge graph requires the max and min value of the left Y axis, if no value is informed the limits will be from 0 to 100.
@@ -2708,6 +2800,8 @@ class CfnAnomalyDetector(
2708
2800
 
2709
2801
  The band represents the expected "normal" range for the metric values. Anomaly detection bands can be used for visualization of a metric's expected values, and for alarms.
2710
2802
 
2803
+ For more information see `Using CloudWatch anomaly detection. <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Anomaly_Detection.html>`_ .
2804
+
2711
2805
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-anomalydetector.html
2712
2806
  :cloudformationResource: AWS::CloudWatch::AnomalyDetector
2713
2807
  :exampleMetadata: fixture=_generated
@@ -3746,6 +3840,8 @@ class CfnAnomalyDetector(
3746
3840
  ) -> None:
3747
3841
  '''Designates the CloudWatch metric and statistic that provides the time series the anomaly detector uses as input.
3748
3842
 
3843
+ If you have enabled unified cross-account observability, and this account is a monitoring account, the metric can be in the same account or a source account.
3844
+
3749
3845
  :param dimensions: The metric dimensions to create the anomaly detection model for.
3750
3846
  :param metric_name: The name of the metric to create the anomaly detection model for.
3751
3847
  :param namespace: The namespace of the metric to create the anomaly detection model for.
@@ -5898,20 +5994,15 @@ class Color(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_cloudwatch.Color
5898
5994
  Example::
5899
5995
 
5900
5996
  # dashboard: cloudwatch.Dashboard
5901
- # execution_count_metric: cloudwatch.Metric
5902
- # error_count_metric: cloudwatch.Metric
5903
5997
 
5904
5998
 
5905
5999
  dashboard.add_widgets(cloudwatch.GraphWidget(
5906
- title="Executions vs error rate",
5907
-
5908
- left=[execution_count_metric],
6000
+ # ...
5909
6001
 
5910
- right=[error_count_metric.with(
5911
- statistic=cloudwatch.Stats.AVERAGE,
5912
- label="Error rate",
5913
- color=cloudwatch.Color.GREEN
5914
- )]
6002
+ left_annotations=[cloudwatch.HorizontalAnnotation(value=1800, label=Duration.minutes(30).to_human_string(), color=cloudwatch.Color.RED), cloudwatch.HorizontalAnnotation(value=3600, label="1 hour", color="#2ca02c")
6003
+ ],
6004
+ vertical_annotations=[cloudwatch.VerticalAnnotation(date="2022-10-19T00:00:00Z", label="Deployment", color=cloudwatch.Color.RED)
6005
+ ]
5915
6006
  ))
5916
6007
  '''
5917
6008
 
@@ -10761,9 +10852,9 @@ class _StatsProxy(Stats):
10761
10852
  typing.cast(typing.Any, Stats).__jsii_proxy_class__ = lambda : _StatsProxy
10762
10853
 
10763
10854
 
10764
- @jsii.enum(jsii_type="aws-cdk-lib.aws_cloudwatch.TextWidgetBackground")
10765
- class TextWidgetBackground(enum.Enum):
10766
- '''Background types available.
10855
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_cloudwatch.TableLayout")
10856
+ class TableLayout(enum.Enum):
10857
+ '''Layout for TableWidget.
10767
10858
 
10768
10859
  :exampleMetadata: infused
10769
10860
 
@@ -10772,43 +10863,73 @@ class TextWidgetBackground(enum.Enum):
10772
10863
  # dashboard: cloudwatch.Dashboard
10773
10864
 
10774
10865
 
10775
- dashboard.add_widgets(cloudwatch.TextWidget(
10776
- markdown="# Key Performance Indicators",
10777
- background=cloudwatch.TextWidgetBackground.TRANSPARENT
10866
+ dashboard.add_widgets(cloudwatch.TableWidget(
10867
+ # ...
10868
+
10869
+ layout=cloudwatch.TableLayout.VERTICAL
10778
10870
  ))
10779
10871
  '''
10780
10872
 
10781
- SOLID = "SOLID"
10782
- '''Solid background.'''
10783
- TRANSPARENT = "TRANSPARENT"
10784
- '''Transparent background.'''
10873
+ HORIZONTAL = "HORIZONTAL"
10874
+ '''Data points are laid out in columns.'''
10875
+ VERTICAL = "VERTICAL"
10876
+ '''Data points are laid out in rows.'''
10877
+
10878
+
10879
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_cloudwatch.TableSummaryColumn")
10880
+ class TableSummaryColumn(enum.Enum):
10881
+ '''Standard table summary columns.
10882
+
10883
+ :exampleMetadata: infused
10884
+
10885
+ Example::
10886
+
10887
+ # dashboard: cloudwatch.Dashboard
10888
+
10889
+
10890
+ dashboard.add_widgets(cloudwatch.TableWidget(
10891
+ # ...
10892
+
10893
+ summary=cloudwatch.TableSummaryProps(
10894
+ columns=[cloudwatch.TableSummaryColumn.AVERAGE],
10895
+ hide_non_summary_columns=True,
10896
+ sticky=True
10897
+ )
10898
+ ))
10899
+ '''
10900
+
10901
+ MINIMUM = "MINIMUM"
10902
+ '''Minimum of all data points.'''
10903
+ MAXIMUM = "MAXIMUM"
10904
+ '''Maximum of all data points.'''
10905
+ SUM = "SUM"
10906
+ '''Sum of all data points.'''
10907
+ AVERAGE = "AVERAGE"
10908
+ '''Average of all data points.'''
10785
10909
 
10786
10910
 
10787
10911
  @jsii.data_type(
10788
- jsii_type="aws-cdk-lib.aws_cloudwatch.TextWidgetProps",
10912
+ jsii_type="aws-cdk-lib.aws_cloudwatch.TableSummaryProps",
10789
10913
  jsii_struct_bases=[],
10790
10914
  name_mapping={
10791
- "markdown": "markdown",
10792
- "background": "background",
10793
- "height": "height",
10794
- "width": "width",
10915
+ "columns": "columns",
10916
+ "hide_non_summary_columns": "hideNonSummaryColumns",
10917
+ "sticky": "sticky",
10795
10918
  },
10796
10919
  )
10797
- class TextWidgetProps:
10920
+ class TableSummaryProps:
10798
10921
  def __init__(
10799
10922
  self,
10800
10923
  *,
10801
- markdown: builtins.str,
10802
- background: typing.Optional[TextWidgetBackground] = None,
10803
- height: typing.Optional[jsii.Number] = None,
10804
- width: typing.Optional[jsii.Number] = None,
10924
+ columns: typing.Optional[typing.Sequence[TableSummaryColumn]] = None,
10925
+ hide_non_summary_columns: typing.Optional[builtins.bool] = None,
10926
+ sticky: typing.Optional[builtins.bool] = None,
10805
10927
  ) -> None:
10806
- '''Properties for a Text widget.
10928
+ '''Properties for TableWidget's summary columns.
10807
10929
 
10808
- :param markdown: The text to display, in MarkDown format.
10809
- :param background: Background for the widget. Default: solid
10810
- :param height: Height of the widget. Default: 2
10811
- :param width: Width of the widget, in a grid of 24 units wide. Default: 6
10930
+ :param columns: Summary columns. Default: - No summary columns will be shown
10931
+ :param hide_non_summary_columns: Prevent the columns of datapoints from being displayed, so that only the label and summary columns are displayed. Default: - false
10932
+ :param sticky: Make the summary columns sticky, so that they remain in view while scrolling. Default: - false
10812
10933
 
10813
10934
  :exampleMetadata: infused
10814
10935
 
@@ -10817,59 +10938,55 @@ class TextWidgetProps:
10817
10938
  # dashboard: cloudwatch.Dashboard
10818
10939
 
10819
10940
 
10820
- dashboard.add_widgets(cloudwatch.TextWidget(
10821
- markdown="# Key Performance Indicators"
10941
+ dashboard.add_widgets(cloudwatch.TableWidget(
10942
+ # ...
10943
+
10944
+ summary=cloudwatch.TableSummaryProps(
10945
+ columns=[cloudwatch.TableSummaryColumn.AVERAGE],
10946
+ hide_non_summary_columns=True,
10947
+ sticky=True
10948
+ )
10822
10949
  ))
10823
10950
  '''
10824
10951
  if __debug__:
10825
- type_hints = typing.get_type_hints(_typecheckingstub__c678c9d6bdc1a1e852f5260a40406f2e09cfc10b899093e99e66b9998d086d5e)
10826
- check_type(argname="argument markdown", value=markdown, expected_type=type_hints["markdown"])
10827
- check_type(argname="argument background", value=background, expected_type=type_hints["background"])
10828
- check_type(argname="argument height", value=height, expected_type=type_hints["height"])
10829
- check_type(argname="argument width", value=width, expected_type=type_hints["width"])
10830
- self._values: typing.Dict[builtins.str, typing.Any] = {
10831
- "markdown": markdown,
10832
- }
10833
- if background is not None:
10834
- self._values["background"] = background
10835
- if height is not None:
10836
- self._values["height"] = height
10837
- if width is not None:
10838
- self._values["width"] = width
10839
-
10840
- @builtins.property
10841
- def markdown(self) -> builtins.str:
10842
- '''The text to display, in MarkDown format.'''
10843
- result = self._values.get("markdown")
10844
- assert result is not None, "Required property 'markdown' is missing"
10845
- return typing.cast(builtins.str, result)
10952
+ type_hints = typing.get_type_hints(_typecheckingstub__98c18eab758ffae376ffa1675e2524ad60cd0a50fd033fe135c6d98d0f5d2692)
10953
+ check_type(argname="argument columns", value=columns, expected_type=type_hints["columns"])
10954
+ check_type(argname="argument hide_non_summary_columns", value=hide_non_summary_columns, expected_type=type_hints["hide_non_summary_columns"])
10955
+ check_type(argname="argument sticky", value=sticky, expected_type=type_hints["sticky"])
10956
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
10957
+ if columns is not None:
10958
+ self._values["columns"] = columns
10959
+ if hide_non_summary_columns is not None:
10960
+ self._values["hide_non_summary_columns"] = hide_non_summary_columns
10961
+ if sticky is not None:
10962
+ self._values["sticky"] = sticky
10846
10963
 
10847
10964
  @builtins.property
10848
- def background(self) -> typing.Optional[TextWidgetBackground]:
10849
- '''Background for the widget.
10965
+ def columns(self) -> typing.Optional[typing.List[TableSummaryColumn]]:
10966
+ '''Summary columns.
10850
10967
 
10851
- :default: solid
10968
+ :default: - No summary columns will be shown
10852
10969
  '''
10853
- result = self._values.get("background")
10854
- return typing.cast(typing.Optional[TextWidgetBackground], result)
10970
+ result = self._values.get("columns")
10971
+ return typing.cast(typing.Optional[typing.List[TableSummaryColumn]], result)
10855
10972
 
10856
10973
  @builtins.property
10857
- def height(self) -> typing.Optional[jsii.Number]:
10858
- '''Height of the widget.
10974
+ def hide_non_summary_columns(self) -> typing.Optional[builtins.bool]:
10975
+ '''Prevent the columns of datapoints from being displayed, so that only the label and summary columns are displayed.
10859
10976
 
10860
- :default: 2
10977
+ :default: - false
10861
10978
  '''
10862
- result = self._values.get("height")
10863
- return typing.cast(typing.Optional[jsii.Number], result)
10979
+ result = self._values.get("hide_non_summary_columns")
10980
+ return typing.cast(typing.Optional[builtins.bool], result)
10864
10981
 
10865
10982
  @builtins.property
10866
- def width(self) -> typing.Optional[jsii.Number]:
10867
- '''Width of the widget, in a grid of 24 units wide.
10983
+ def sticky(self) -> typing.Optional[builtins.bool]:
10984
+ '''Make the summary columns sticky, so that they remain in view while scrolling.
10868
10985
 
10869
- :default: 6
10986
+ :default: - false
10870
10987
  '''
10871
- result = self._values.get("width")
10872
- return typing.cast(typing.Optional[jsii.Number], result)
10988
+ result = self._values.get("sticky")
10989
+ return typing.cast(typing.Optional[builtins.bool], result)
10873
10990
 
10874
10991
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
10875
10992
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -10878,85 +10995,598 @@ class TextWidgetProps:
10878
10995
  return not (rhs == self)
10879
10996
 
10880
10997
  def __repr__(self) -> str:
10881
- return "TextWidgetProps(%s)" % ", ".join(
10998
+ return "TableSummaryProps(%s)" % ", ".join(
10882
10999
  k + "=" + repr(v) for k, v in self._values.items()
10883
11000
  )
10884
11001
 
10885
11002
 
10886
- @jsii.enum(jsii_type="aws-cdk-lib.aws_cloudwatch.TreatMissingData")
10887
- class TreatMissingData(enum.Enum):
10888
- '''Specify how missing data points are treated during alarm evaluation.
11003
+ class TableThreshold(
11004
+ metaclass=jsii.JSIIMeta,
11005
+ jsii_type="aws-cdk-lib.aws_cloudwatch.TableThreshold",
11006
+ ):
11007
+ '''Thresholds for highlighting cells in TableWidget.
10889
11008
 
10890
11009
  :exampleMetadata: infused
10891
11010
 
10892
11011
  Example::
10893
11012
 
10894
- import aws_cdk as cdk
10895
- import aws_cdk.aws_cloudwatch as cloudwatch
11013
+ # dashboard: cloudwatch.Dashboard
10896
11014
 
10897
11015
 
10898
- fn = lambda_.Function(self, "MyFunction",
10899
- runtime=lambda_.Runtime.NODEJS_18_X,
10900
- handler="index.handler",
10901
- code=lambda_.Code.from_asset(path.join(__dirname, "lambda-handler")),
10902
- timeout=Duration.minutes(5)
10903
- )
11016
+ dashboard.add_widgets(cloudwatch.TableWidget(
11017
+ # ...
10904
11018
 
10905
- if fn.timeout:
10906
- cloudwatch.Alarm(self, "MyAlarm",
10907
- metric=fn.metric_duration().with(
10908
- statistic="Maximum"
10909
- ),
10910
- evaluation_periods=1,
10911
- datapoints_to_alarm=1,
10912
- threshold=fn.timeout.to_milliseconds(),
10913
- treat_missing_data=cloudwatch.TreatMissingData.IGNORE,
10914
- alarm_name="My Lambda Timeout"
10915
- )
11019
+ thresholds=[
11020
+ cloudwatch.TableThreshold.above(1000, cloudwatch.Color.RED),
11021
+ cloudwatch.TableThreshold.between(500, 1000, cloudwatch.Color.ORANGE),
11022
+ cloudwatch.TableThreshold.below(500, cloudwatch.Color.GREEN)
11023
+ ]
11024
+ ))
10916
11025
  '''
10917
11026
 
10918
- BREACHING = "BREACHING"
10919
- '''Missing data points are treated as breaching the threshold.'''
10920
- NOT_BREACHING = "NOT_BREACHING"
10921
- '''Missing data points are treated as being within the threshold.'''
10922
- IGNORE = "IGNORE"
10923
- '''The current alarm state is maintained.'''
10924
- MISSING = "MISSING"
10925
- '''The alarm does not consider missing data points when evaluating whether to change state.'''
11027
+ @jsii.member(jsii_name="above")
11028
+ @builtins.classmethod
11029
+ def above(
11030
+ cls,
11031
+ value: jsii.Number,
11032
+ color: typing.Optional[builtins.str] = None,
11033
+ ) -> "TableThreshold":
11034
+ '''A threshold for highlighting and coloring cells above the specified value.
10926
11035
 
11036
+ :param value: lower bound of threshold range.
11037
+ :param color: cell color for values within threshold range.
11038
+ '''
11039
+ if __debug__:
11040
+ type_hints = typing.get_type_hints(_typecheckingstub__70d2d8bf527174c0069d64738e83c5ebe4fd927ac2332ac0de67140546fb8616)
11041
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
11042
+ check_type(argname="argument color", value=color, expected_type=type_hints["color"])
11043
+ return typing.cast("TableThreshold", jsii.sinvoke(cls, "above", [value, color]))
10927
11044
 
10928
- @jsii.enum(jsii_type="aws-cdk-lib.aws_cloudwatch.Unit")
10929
- class Unit(enum.Enum):
10930
- '''Unit for metric.
11045
+ @jsii.member(jsii_name="below")
11046
+ @builtins.classmethod
11047
+ def below(
11048
+ cls,
11049
+ value: jsii.Number,
11050
+ color: typing.Optional[builtins.str] = None,
11051
+ ) -> "TableThreshold":
11052
+ '''A threshold for highlighting and coloring cells below the specified value.
10931
11053
 
10932
- :exampleMetadata: infused
11054
+ :param value: upper bound of threshold range.
11055
+ :param color: cell color for values within threshold range.
11056
+ '''
11057
+ if __debug__:
11058
+ type_hints = typing.get_type_hints(_typecheckingstub__e6f92993218488cf545481e8167442910bb8b8c7c45aa7dfb6667808cb1077e6)
11059
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
11060
+ check_type(argname="argument color", value=color, expected_type=type_hints["color"])
11061
+ return typing.cast("TableThreshold", jsii.sinvoke(cls, "below", [value, color]))
10933
11062
 
10934
- Example::
11063
+ @jsii.member(jsii_name="between")
11064
+ @builtins.classmethod
11065
+ def between(
11066
+ cls,
11067
+ lower_bound: jsii.Number,
11068
+ upper_bound: jsii.Number,
11069
+ color: typing.Optional[builtins.str] = None,
11070
+ ) -> "TableThreshold":
11071
+ '''A threshold for highlighting and coloring cells within the specified values.
10935
11072
 
10936
- # log_group: logs.LogGroup
10937
-
10938
- mf = logs.MetricFilter(self, "MetricFilter",
10939
- log_group=log_group,
10940
- metric_namespace="MyApp",
10941
- metric_name="Latency",
10942
- filter_pattern=logs.FilterPattern.exists("$.latency"),
10943
- metric_value="$.latency",
10944
- dimensions={
10945
- "ErrorCode": "$.errorCode"
10946
- },
10947
- unit=cloudwatch.Unit.MILLISECONDS
10948
- )
10949
-
10950
- # expose a metric from the metric filter
10951
- metric = mf.metric()
10952
-
10953
- # you can use the metric to create a new alarm
10954
- cloudwatch.Alarm(self, "alarm from metric filter",
10955
- metric=metric,
10956
- threshold=100,
10957
- evaluation_periods=2
10958
- )
10959
- '''
11073
+ :param lower_bound: lower bound of threshold range.
11074
+ :param upper_bound: upper bound of threshold range.
11075
+ :param color: cell color for values within threshold range.
11076
+ '''
11077
+ if __debug__:
11078
+ type_hints = typing.get_type_hints(_typecheckingstub__837fdebf81b3f53de6d99624ebde152b4aba1d764a0cc2bd930440701533924a)
11079
+ check_type(argname="argument lower_bound", value=lower_bound, expected_type=type_hints["lower_bound"])
11080
+ check_type(argname="argument upper_bound", value=upper_bound, expected_type=type_hints["upper_bound"])
11081
+ check_type(argname="argument color", value=color, expected_type=type_hints["color"])
11082
+ return typing.cast("TableThreshold", jsii.sinvoke(cls, "between", [lower_bound, upper_bound, color]))
11083
+
11084
+ @jsii.member(jsii_name="toJson")
11085
+ def to_json(self) -> typing.Any:
11086
+ return typing.cast(typing.Any, jsii.invoke(self, "toJson", []))
11087
+
11088
+
11089
+ @jsii.data_type(
11090
+ jsii_type="aws-cdk-lib.aws_cloudwatch.TableWidgetProps",
11091
+ jsii_struct_bases=[MetricWidgetProps],
11092
+ name_mapping={
11093
+ "height": "height",
11094
+ "region": "region",
11095
+ "title": "title",
11096
+ "width": "width",
11097
+ "end": "end",
11098
+ "full_precision": "fullPrecision",
11099
+ "layout": "layout",
11100
+ "live_data": "liveData",
11101
+ "metrics": "metrics",
11102
+ "period": "period",
11103
+ "set_period_to_time_range": "setPeriodToTimeRange",
11104
+ "show_units_in_label": "showUnitsInLabel",
11105
+ "start": "start",
11106
+ "statistic": "statistic",
11107
+ "summary": "summary",
11108
+ "thresholds": "thresholds",
11109
+ },
11110
+ )
11111
+ class TableWidgetProps(MetricWidgetProps):
11112
+ def __init__(
11113
+ self,
11114
+ *,
11115
+ height: typing.Optional[jsii.Number] = None,
11116
+ region: typing.Optional[builtins.str] = None,
11117
+ title: typing.Optional[builtins.str] = None,
11118
+ width: typing.Optional[jsii.Number] = None,
11119
+ end: typing.Optional[builtins.str] = None,
11120
+ full_precision: typing.Optional[builtins.bool] = None,
11121
+ layout: typing.Optional[TableLayout] = None,
11122
+ live_data: typing.Optional[builtins.bool] = None,
11123
+ metrics: typing.Optional[typing.Sequence[IMetric]] = None,
11124
+ period: typing.Optional[_Duration_4839e8c3] = None,
11125
+ set_period_to_time_range: typing.Optional[builtins.bool] = None,
11126
+ show_units_in_label: typing.Optional[builtins.bool] = None,
11127
+ start: typing.Optional[builtins.str] = None,
11128
+ statistic: typing.Optional[builtins.str] = None,
11129
+ summary: typing.Optional[typing.Union[TableSummaryProps, typing.Dict[builtins.str, typing.Any]]] = None,
11130
+ thresholds: typing.Optional[typing.Sequence[TableThreshold]] = None,
11131
+ ) -> None:
11132
+ '''Properties for a TableWidget.
11133
+
11134
+ :param height: Height of the widget. Default: - 6 for Alarm and Graph widgets. 3 for single value widgets where most recent value of a metric is displayed.
11135
+ :param region: The region the metrics of this graph should be taken from. Default: - Current region
11136
+ :param title: Title for the graph. Default: - None
11137
+ :param width: Width of the widget, in a grid of 24 units wide. Default: 6
11138
+ :param end: The end of the time range to use for each widget independently from those of the dashboard. If you specify a value for end, you must also specify a value for start. Specify an absolute time in the ISO 8601 format. For example, 2018-12-17T06:00:00.000Z. Default: When the dashboard loads, the end date will be the current time.
11139
+ :param full_precision: Whether to show as many digits as can fit, before rounding. Default: false
11140
+ :param layout: Table layout. Default: - TableLayout.HORIZONTAL
11141
+ :param live_data: Whether the graph should show live data. Default: false
11142
+ :param metrics: Metrics to display in the table. Default: - No metrics
11143
+ :param period: The default period for all metrics in this widget. The period is the length of time represented by one data point on the graph. This default can be overridden within each metric definition. Default: cdk.Duration.seconds(300)
11144
+ :param set_period_to_time_range: Whether to show the value from the entire time range. Only applicable for Bar and Pie charts. If false, values will be from the most recent period of your chosen time range; if true, shows the value from the entire time range. Default: false
11145
+ :param show_units_in_label: Show the metrics units in the label column. Default: - false
11146
+ :param start: The start of the time range to use for each widget independently from those of the dashboard. You can specify start without specifying end to specify a relative time range that ends with the current time. In this case, the value of start must begin with -P, and you can use M, H, D, W and M as abbreviations for minutes, hours, days, weeks and months. For example, -PT8H shows the last 8 hours and -P3M shows the last three months. You can also use start along with an end field, to specify an absolute time range. When specifying an absolute time range, use the ISO 8601 format. For example, 2018-12-17T06:00:00.000Z. Default: When the dashboard loads, the start time will be the default time range.
11147
+ :param statistic: The default statistic to be displayed for each metric. This default can be overridden within the definition of each individual metric Default: - The statistic for each metric is used
11148
+ :param summary: Properties for displaying summary columns. Default: - no summary columns are shown
11149
+ :param thresholds: Thresholds for highlighting table cells. Default: - No thresholds
11150
+
11151
+ :exampleMetadata: infused
11152
+
11153
+ Example::
11154
+
11155
+ # dashboard: cloudwatch.Dashboard
11156
+
11157
+
11158
+ dashboard.add_widgets(cloudwatch.TableWidget(
11159
+ # ...
11160
+
11161
+ layout=cloudwatch.TableLayout.VERTICAL
11162
+ ))
11163
+ '''
11164
+ if isinstance(summary, dict):
11165
+ summary = TableSummaryProps(**summary)
11166
+ if __debug__:
11167
+ type_hints = typing.get_type_hints(_typecheckingstub__03726ba90bb01c2a1340af4f73005fffe1b8288cff57d77f31d745d629defb8b)
11168
+ check_type(argname="argument height", value=height, expected_type=type_hints["height"])
11169
+ check_type(argname="argument region", value=region, expected_type=type_hints["region"])
11170
+ check_type(argname="argument title", value=title, expected_type=type_hints["title"])
11171
+ check_type(argname="argument width", value=width, expected_type=type_hints["width"])
11172
+ check_type(argname="argument end", value=end, expected_type=type_hints["end"])
11173
+ check_type(argname="argument full_precision", value=full_precision, expected_type=type_hints["full_precision"])
11174
+ check_type(argname="argument layout", value=layout, expected_type=type_hints["layout"])
11175
+ check_type(argname="argument live_data", value=live_data, expected_type=type_hints["live_data"])
11176
+ check_type(argname="argument metrics", value=metrics, expected_type=type_hints["metrics"])
11177
+ check_type(argname="argument period", value=period, expected_type=type_hints["period"])
11178
+ check_type(argname="argument set_period_to_time_range", value=set_period_to_time_range, expected_type=type_hints["set_period_to_time_range"])
11179
+ check_type(argname="argument show_units_in_label", value=show_units_in_label, expected_type=type_hints["show_units_in_label"])
11180
+ check_type(argname="argument start", value=start, expected_type=type_hints["start"])
11181
+ check_type(argname="argument statistic", value=statistic, expected_type=type_hints["statistic"])
11182
+ check_type(argname="argument summary", value=summary, expected_type=type_hints["summary"])
11183
+ check_type(argname="argument thresholds", value=thresholds, expected_type=type_hints["thresholds"])
11184
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
11185
+ if height is not None:
11186
+ self._values["height"] = height
11187
+ if region is not None:
11188
+ self._values["region"] = region
11189
+ if title is not None:
11190
+ self._values["title"] = title
11191
+ if width is not None:
11192
+ self._values["width"] = width
11193
+ if end is not None:
11194
+ self._values["end"] = end
11195
+ if full_precision is not None:
11196
+ self._values["full_precision"] = full_precision
11197
+ if layout is not None:
11198
+ self._values["layout"] = layout
11199
+ if live_data is not None:
11200
+ self._values["live_data"] = live_data
11201
+ if metrics is not None:
11202
+ self._values["metrics"] = metrics
11203
+ if period is not None:
11204
+ self._values["period"] = period
11205
+ if set_period_to_time_range is not None:
11206
+ self._values["set_period_to_time_range"] = set_period_to_time_range
11207
+ if show_units_in_label is not None:
11208
+ self._values["show_units_in_label"] = show_units_in_label
11209
+ if start is not None:
11210
+ self._values["start"] = start
11211
+ if statistic is not None:
11212
+ self._values["statistic"] = statistic
11213
+ if summary is not None:
11214
+ self._values["summary"] = summary
11215
+ if thresholds is not None:
11216
+ self._values["thresholds"] = thresholds
11217
+
11218
+ @builtins.property
11219
+ def height(self) -> typing.Optional[jsii.Number]:
11220
+ '''Height of the widget.
11221
+
11222
+ :default:
11223
+
11224
+ - 6 for Alarm and Graph widgets.
11225
+ 3 for single value widgets where most recent value of a metric is displayed.
11226
+ '''
11227
+ result = self._values.get("height")
11228
+ return typing.cast(typing.Optional[jsii.Number], result)
11229
+
11230
+ @builtins.property
11231
+ def region(self) -> typing.Optional[builtins.str]:
11232
+ '''The region the metrics of this graph should be taken from.
11233
+
11234
+ :default: - Current region
11235
+ '''
11236
+ result = self._values.get("region")
11237
+ return typing.cast(typing.Optional[builtins.str], result)
11238
+
11239
+ @builtins.property
11240
+ def title(self) -> typing.Optional[builtins.str]:
11241
+ '''Title for the graph.
11242
+
11243
+ :default: - None
11244
+ '''
11245
+ result = self._values.get("title")
11246
+ return typing.cast(typing.Optional[builtins.str], result)
11247
+
11248
+ @builtins.property
11249
+ def width(self) -> typing.Optional[jsii.Number]:
11250
+ '''Width of the widget, in a grid of 24 units wide.
11251
+
11252
+ :default: 6
11253
+ '''
11254
+ result = self._values.get("width")
11255
+ return typing.cast(typing.Optional[jsii.Number], result)
11256
+
11257
+ @builtins.property
11258
+ def end(self) -> typing.Optional[builtins.str]:
11259
+ '''The end of the time range to use for each widget independently from those of the dashboard.
11260
+
11261
+ If you specify a value for end, you must also specify a value for start.
11262
+ Specify an absolute time in the ISO 8601 format. For example, 2018-12-17T06:00:00.000Z.
11263
+
11264
+ :default: When the dashboard loads, the end date will be the current time.
11265
+ '''
11266
+ result = self._values.get("end")
11267
+ return typing.cast(typing.Optional[builtins.str], result)
11268
+
11269
+ @builtins.property
11270
+ def full_precision(self) -> typing.Optional[builtins.bool]:
11271
+ '''Whether to show as many digits as can fit, before rounding.
11272
+
11273
+ :default: false
11274
+ '''
11275
+ result = self._values.get("full_precision")
11276
+ return typing.cast(typing.Optional[builtins.bool], result)
11277
+
11278
+ @builtins.property
11279
+ def layout(self) -> typing.Optional[TableLayout]:
11280
+ '''Table layout.
11281
+
11282
+ :default: - TableLayout.HORIZONTAL
11283
+ '''
11284
+ result = self._values.get("layout")
11285
+ return typing.cast(typing.Optional[TableLayout], result)
11286
+
11287
+ @builtins.property
11288
+ def live_data(self) -> typing.Optional[builtins.bool]:
11289
+ '''Whether the graph should show live data.
11290
+
11291
+ :default: false
11292
+ '''
11293
+ result = self._values.get("live_data")
11294
+ return typing.cast(typing.Optional[builtins.bool], result)
11295
+
11296
+ @builtins.property
11297
+ def metrics(self) -> typing.Optional[typing.List[IMetric]]:
11298
+ '''Metrics to display in the table.
11299
+
11300
+ :default: - No metrics
11301
+ '''
11302
+ result = self._values.get("metrics")
11303
+ return typing.cast(typing.Optional[typing.List[IMetric]], result)
11304
+
11305
+ @builtins.property
11306
+ def period(self) -> typing.Optional[_Duration_4839e8c3]:
11307
+ '''The default period for all metrics in this widget.
11308
+
11309
+ The period is the length of time represented by one data point on the graph.
11310
+ This default can be overridden within each metric definition.
11311
+
11312
+ :default: cdk.Duration.seconds(300)
11313
+ '''
11314
+ result = self._values.get("period")
11315
+ return typing.cast(typing.Optional[_Duration_4839e8c3], result)
11316
+
11317
+ @builtins.property
11318
+ def set_period_to_time_range(self) -> typing.Optional[builtins.bool]:
11319
+ '''Whether to show the value from the entire time range. Only applicable for Bar and Pie charts.
11320
+
11321
+ If false, values will be from the most recent period of your chosen time range;
11322
+ if true, shows the value from the entire time range.
11323
+
11324
+ :default: false
11325
+ '''
11326
+ result = self._values.get("set_period_to_time_range")
11327
+ return typing.cast(typing.Optional[builtins.bool], result)
11328
+
11329
+ @builtins.property
11330
+ def show_units_in_label(self) -> typing.Optional[builtins.bool]:
11331
+ '''Show the metrics units in the label column.
11332
+
11333
+ :default: - false
11334
+ '''
11335
+ result = self._values.get("show_units_in_label")
11336
+ return typing.cast(typing.Optional[builtins.bool], result)
11337
+
11338
+ @builtins.property
11339
+ def start(self) -> typing.Optional[builtins.str]:
11340
+ '''The start of the time range to use for each widget independently from those of the dashboard.
11341
+
11342
+ You can specify start without specifying end to specify a relative time range that ends with the current time.
11343
+ In this case, the value of start must begin with -P, and you can use M, H, D, W and M as abbreviations for
11344
+ minutes, hours, days, weeks and months. For example, -PT8H shows the last 8 hours and -P3M shows the last three months.
11345
+ You can also use start along with an end field, to specify an absolute time range.
11346
+ When specifying an absolute time range, use the ISO 8601 format. For example, 2018-12-17T06:00:00.000Z.
11347
+
11348
+ :default: When the dashboard loads, the start time will be the default time range.
11349
+ '''
11350
+ result = self._values.get("start")
11351
+ return typing.cast(typing.Optional[builtins.str], result)
11352
+
11353
+ @builtins.property
11354
+ def statistic(self) -> typing.Optional[builtins.str]:
11355
+ '''The default statistic to be displayed for each metric.
11356
+
11357
+ This default can be overridden within the definition of each individual metric
11358
+
11359
+ :default: - The statistic for each metric is used
11360
+ '''
11361
+ result = self._values.get("statistic")
11362
+ return typing.cast(typing.Optional[builtins.str], result)
11363
+
11364
+ @builtins.property
11365
+ def summary(self) -> typing.Optional[TableSummaryProps]:
11366
+ '''Properties for displaying summary columns.
11367
+
11368
+ :default: - no summary columns are shown
11369
+ '''
11370
+ result = self._values.get("summary")
11371
+ return typing.cast(typing.Optional[TableSummaryProps], result)
11372
+
11373
+ @builtins.property
11374
+ def thresholds(self) -> typing.Optional[typing.List[TableThreshold]]:
11375
+ '''Thresholds for highlighting table cells.
11376
+
11377
+ :default: - No thresholds
11378
+ '''
11379
+ result = self._values.get("thresholds")
11380
+ return typing.cast(typing.Optional[typing.List[TableThreshold]], result)
11381
+
11382
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
11383
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
11384
+
11385
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
11386
+ return not (rhs == self)
11387
+
11388
+ def __repr__(self) -> str:
11389
+ return "TableWidgetProps(%s)" % ", ".join(
11390
+ k + "=" + repr(v) for k, v in self._values.items()
11391
+ )
11392
+
11393
+
11394
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_cloudwatch.TextWidgetBackground")
11395
+ class TextWidgetBackground(enum.Enum):
11396
+ '''Background types available.
11397
+
11398
+ :exampleMetadata: infused
11399
+
11400
+ Example::
11401
+
11402
+ # dashboard: cloudwatch.Dashboard
11403
+
11404
+
11405
+ dashboard.add_widgets(cloudwatch.TextWidget(
11406
+ markdown="# Key Performance Indicators",
11407
+ background=cloudwatch.TextWidgetBackground.TRANSPARENT
11408
+ ))
11409
+ '''
11410
+
11411
+ SOLID = "SOLID"
11412
+ '''Solid background.'''
11413
+ TRANSPARENT = "TRANSPARENT"
11414
+ '''Transparent background.'''
11415
+
11416
+
11417
+ @jsii.data_type(
11418
+ jsii_type="aws-cdk-lib.aws_cloudwatch.TextWidgetProps",
11419
+ jsii_struct_bases=[],
11420
+ name_mapping={
11421
+ "markdown": "markdown",
11422
+ "background": "background",
11423
+ "height": "height",
11424
+ "width": "width",
11425
+ },
11426
+ )
11427
+ class TextWidgetProps:
11428
+ def __init__(
11429
+ self,
11430
+ *,
11431
+ markdown: builtins.str,
11432
+ background: typing.Optional[TextWidgetBackground] = None,
11433
+ height: typing.Optional[jsii.Number] = None,
11434
+ width: typing.Optional[jsii.Number] = None,
11435
+ ) -> None:
11436
+ '''Properties for a Text widget.
11437
+
11438
+ :param markdown: The text to display, in MarkDown format.
11439
+ :param background: Background for the widget. Default: solid
11440
+ :param height: Height of the widget. Default: 2
11441
+ :param width: Width of the widget, in a grid of 24 units wide. Default: 6
11442
+
11443
+ :exampleMetadata: infused
11444
+
11445
+ Example::
11446
+
11447
+ # dashboard: cloudwatch.Dashboard
11448
+
11449
+
11450
+ dashboard.add_widgets(cloudwatch.TextWidget(
11451
+ markdown="# Key Performance Indicators"
11452
+ ))
11453
+ '''
11454
+ if __debug__:
11455
+ type_hints = typing.get_type_hints(_typecheckingstub__c678c9d6bdc1a1e852f5260a40406f2e09cfc10b899093e99e66b9998d086d5e)
11456
+ check_type(argname="argument markdown", value=markdown, expected_type=type_hints["markdown"])
11457
+ check_type(argname="argument background", value=background, expected_type=type_hints["background"])
11458
+ check_type(argname="argument height", value=height, expected_type=type_hints["height"])
11459
+ check_type(argname="argument width", value=width, expected_type=type_hints["width"])
11460
+ self._values: typing.Dict[builtins.str, typing.Any] = {
11461
+ "markdown": markdown,
11462
+ }
11463
+ if background is not None:
11464
+ self._values["background"] = background
11465
+ if height is not None:
11466
+ self._values["height"] = height
11467
+ if width is not None:
11468
+ self._values["width"] = width
11469
+
11470
+ @builtins.property
11471
+ def markdown(self) -> builtins.str:
11472
+ '''The text to display, in MarkDown format.'''
11473
+ result = self._values.get("markdown")
11474
+ assert result is not None, "Required property 'markdown' is missing"
11475
+ return typing.cast(builtins.str, result)
11476
+
11477
+ @builtins.property
11478
+ def background(self) -> typing.Optional[TextWidgetBackground]:
11479
+ '''Background for the widget.
11480
+
11481
+ :default: solid
11482
+ '''
11483
+ result = self._values.get("background")
11484
+ return typing.cast(typing.Optional[TextWidgetBackground], result)
11485
+
11486
+ @builtins.property
11487
+ def height(self) -> typing.Optional[jsii.Number]:
11488
+ '''Height of the widget.
11489
+
11490
+ :default: 2
11491
+ '''
11492
+ result = self._values.get("height")
11493
+ return typing.cast(typing.Optional[jsii.Number], result)
11494
+
11495
+ @builtins.property
11496
+ def width(self) -> typing.Optional[jsii.Number]:
11497
+ '''Width of the widget, in a grid of 24 units wide.
11498
+
11499
+ :default: 6
11500
+ '''
11501
+ result = self._values.get("width")
11502
+ return typing.cast(typing.Optional[jsii.Number], result)
11503
+
11504
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
11505
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
11506
+
11507
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
11508
+ return not (rhs == self)
11509
+
11510
+ def __repr__(self) -> str:
11511
+ return "TextWidgetProps(%s)" % ", ".join(
11512
+ k + "=" + repr(v) for k, v in self._values.items()
11513
+ )
11514
+
11515
+
11516
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_cloudwatch.TreatMissingData")
11517
+ class TreatMissingData(enum.Enum):
11518
+ '''Specify how missing data points are treated during alarm evaluation.
11519
+
11520
+ :exampleMetadata: infused
11521
+
11522
+ Example::
11523
+
11524
+ import aws_cdk as cdk
11525
+ import aws_cdk.aws_cloudwatch as cloudwatch
11526
+
11527
+
11528
+ fn = lambda_.Function(self, "MyFunction",
11529
+ runtime=lambda_.Runtime.NODEJS_18_X,
11530
+ handler="index.handler",
11531
+ code=lambda_.Code.from_asset(path.join(__dirname, "lambda-handler")),
11532
+ timeout=Duration.minutes(5)
11533
+ )
11534
+
11535
+ if fn.timeout:
11536
+ cloudwatch.Alarm(self, "MyAlarm",
11537
+ metric=fn.metric_duration().with(
11538
+ statistic="Maximum"
11539
+ ),
11540
+ evaluation_periods=1,
11541
+ datapoints_to_alarm=1,
11542
+ threshold=fn.timeout.to_milliseconds(),
11543
+ treat_missing_data=cloudwatch.TreatMissingData.IGNORE,
11544
+ alarm_name="My Lambda Timeout"
11545
+ )
11546
+ '''
11547
+
11548
+ BREACHING = "BREACHING"
11549
+ '''Missing data points are treated as breaching the threshold.'''
11550
+ NOT_BREACHING = "NOT_BREACHING"
11551
+ '''Missing data points are treated as being within the threshold.'''
11552
+ IGNORE = "IGNORE"
11553
+ '''The current alarm state is maintained.'''
11554
+ MISSING = "MISSING"
11555
+ '''The alarm does not consider missing data points when evaluating whether to change state.'''
11556
+
11557
+
11558
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_cloudwatch.Unit")
11559
+ class Unit(enum.Enum):
11560
+ '''Unit for metric.
11561
+
11562
+ :exampleMetadata: infused
11563
+
11564
+ Example::
11565
+
11566
+ # log_group: logs.LogGroup
11567
+
11568
+ mf = logs.MetricFilter(self, "MetricFilter",
11569
+ log_group=log_group,
11570
+ metric_namespace="MyApp",
11571
+ metric_name="Latency",
11572
+ filter_pattern=logs.FilterPattern.exists("$.latency"),
11573
+ metric_value="$.latency",
11574
+ dimensions={
11575
+ "ErrorCode": "$.errorCode"
11576
+ },
11577
+ unit=cloudwatch.Unit.MILLISECONDS
11578
+ )
11579
+
11580
+ # expose a metric from the metric filter
11581
+ metric = mf.metric()
11582
+
11583
+ # you can use the metric to create a new alarm
11584
+ cloudwatch.Alarm(self, "alarm from metric filter",
11585
+ metric=metric,
11586
+ threshold=100,
11587
+ evaluation_periods=2
11588
+ )
11589
+ '''
10960
11590
 
10961
11591
  SECONDS = "SECONDS"
10962
11592
  '''Seconds.'''
@@ -13232,6 +13862,103 @@ class SingleValueWidget(
13232
13862
  return typing.cast(typing.List[typing.Any], jsii.invoke(self, "toJson", []))
13233
13863
 
13234
13864
 
13865
+ class TableWidget(
13866
+ ConcreteWidget,
13867
+ metaclass=jsii.JSIIMeta,
13868
+ jsii_type="aws-cdk-lib.aws_cloudwatch.TableWidget",
13869
+ ):
13870
+ '''A dashboard widget that displays metrics.
13871
+
13872
+ :exampleMetadata: infused
13873
+
13874
+ Example::
13875
+
13876
+ # dashboard: cloudwatch.Dashboard
13877
+
13878
+
13879
+ dashboard.add_widgets(cloudwatch.TableWidget(
13880
+ # ...
13881
+
13882
+ layout=cloudwatch.TableLayout.VERTICAL
13883
+ ))
13884
+ '''
13885
+
13886
+ def __init__(
13887
+ self,
13888
+ *,
13889
+ end: typing.Optional[builtins.str] = None,
13890
+ full_precision: typing.Optional[builtins.bool] = None,
13891
+ layout: typing.Optional[TableLayout] = None,
13892
+ live_data: typing.Optional[builtins.bool] = None,
13893
+ metrics: typing.Optional[typing.Sequence[IMetric]] = None,
13894
+ period: typing.Optional[_Duration_4839e8c3] = None,
13895
+ set_period_to_time_range: typing.Optional[builtins.bool] = None,
13896
+ show_units_in_label: typing.Optional[builtins.bool] = None,
13897
+ start: typing.Optional[builtins.str] = None,
13898
+ statistic: typing.Optional[builtins.str] = None,
13899
+ summary: typing.Optional[typing.Union[TableSummaryProps, typing.Dict[builtins.str, typing.Any]]] = None,
13900
+ thresholds: typing.Optional[typing.Sequence[TableThreshold]] = None,
13901
+ height: typing.Optional[jsii.Number] = None,
13902
+ region: typing.Optional[builtins.str] = None,
13903
+ title: typing.Optional[builtins.str] = None,
13904
+ width: typing.Optional[jsii.Number] = None,
13905
+ ) -> None:
13906
+ '''
13907
+ :param end: The end of the time range to use for each widget independently from those of the dashboard. If you specify a value for end, you must also specify a value for start. Specify an absolute time in the ISO 8601 format. For example, 2018-12-17T06:00:00.000Z. Default: When the dashboard loads, the end date will be the current time.
13908
+ :param full_precision: Whether to show as many digits as can fit, before rounding. Default: false
13909
+ :param layout: Table layout. Default: - TableLayout.HORIZONTAL
13910
+ :param live_data: Whether the graph should show live data. Default: false
13911
+ :param metrics: Metrics to display in the table. Default: - No metrics
13912
+ :param period: The default period for all metrics in this widget. The period is the length of time represented by one data point on the graph. This default can be overridden within each metric definition. Default: cdk.Duration.seconds(300)
13913
+ :param set_period_to_time_range: Whether to show the value from the entire time range. Only applicable for Bar and Pie charts. If false, values will be from the most recent period of your chosen time range; if true, shows the value from the entire time range. Default: false
13914
+ :param show_units_in_label: Show the metrics units in the label column. Default: - false
13915
+ :param start: The start of the time range to use for each widget independently from those of the dashboard. You can specify start without specifying end to specify a relative time range that ends with the current time. In this case, the value of start must begin with -P, and you can use M, H, D, W and M as abbreviations for minutes, hours, days, weeks and months. For example, -PT8H shows the last 8 hours and -P3M shows the last three months. You can also use start along with an end field, to specify an absolute time range. When specifying an absolute time range, use the ISO 8601 format. For example, 2018-12-17T06:00:00.000Z. Default: When the dashboard loads, the start time will be the default time range.
13916
+ :param statistic: The default statistic to be displayed for each metric. This default can be overridden within the definition of each individual metric Default: - The statistic for each metric is used
13917
+ :param summary: Properties for displaying summary columns. Default: - no summary columns are shown
13918
+ :param thresholds: Thresholds for highlighting table cells. Default: - No thresholds
13919
+ :param height: Height of the widget. Default: - 6 for Alarm and Graph widgets. 3 for single value widgets where most recent value of a metric is displayed.
13920
+ :param region: The region the metrics of this graph should be taken from. Default: - Current region
13921
+ :param title: Title for the graph. Default: - None
13922
+ :param width: Width of the widget, in a grid of 24 units wide. Default: 6
13923
+ '''
13924
+ props = TableWidgetProps(
13925
+ end=end,
13926
+ full_precision=full_precision,
13927
+ layout=layout,
13928
+ live_data=live_data,
13929
+ metrics=metrics,
13930
+ period=period,
13931
+ set_period_to_time_range=set_period_to_time_range,
13932
+ show_units_in_label=show_units_in_label,
13933
+ start=start,
13934
+ statistic=statistic,
13935
+ summary=summary,
13936
+ thresholds=thresholds,
13937
+ height=height,
13938
+ region=region,
13939
+ title=title,
13940
+ width=width,
13941
+ )
13942
+
13943
+ jsii.create(self.__class__, self, [props])
13944
+
13945
+ @jsii.member(jsii_name="addMetric")
13946
+ def add_metric(self, metric: IMetric) -> None:
13947
+ '''Add another metric.
13948
+
13949
+ :param metric: the metric to add.
13950
+ '''
13951
+ if __debug__:
13952
+ type_hints = typing.get_type_hints(_typecheckingstub__14b284f52f62e4bb0b4243fb3b3bcaa2693e6ee107b2721f9467d31d81cf408b)
13953
+ check_type(argname="argument metric", value=metric, expected_type=type_hints["metric"])
13954
+ return typing.cast(None, jsii.invoke(self, "addMetric", [metric]))
13955
+
13956
+ @jsii.member(jsii_name="toJson")
13957
+ def to_json(self) -> typing.List[typing.Any]:
13958
+ '''Return the widget JSON for use in the dashboard.'''
13959
+ return typing.cast(typing.List[typing.Any], jsii.invoke(self, "toJson", []))
13960
+
13961
+
13235
13962
  class TextWidget(
13236
13963
  ConcreteWidget,
13237
13964
  metaclass=jsii.JSIIMeta,
@@ -13977,6 +14704,12 @@ __all__ = [
13977
14704
  "SpacerProps",
13978
14705
  "Statistic",
13979
14706
  "Stats",
14707
+ "TableLayout",
14708
+ "TableSummaryColumn",
14709
+ "TableSummaryProps",
14710
+ "TableThreshold",
14711
+ "TableWidget",
14712
+ "TableWidgetProps",
13980
14713
  "TextWidget",
13981
14714
  "TextWidgetBackground",
13982
14715
  "TextWidgetProps",
@@ -15216,6 +15949,59 @@ def _typecheckingstub__1740e870895a9795d40caa429b748dd124ed575f6ae4335284294f422
15216
15949
  """Type checking stubs"""
15217
15950
  pass
15218
15951
 
15952
+ def _typecheckingstub__98c18eab758ffae376ffa1675e2524ad60cd0a50fd033fe135c6d98d0f5d2692(
15953
+ *,
15954
+ columns: typing.Optional[typing.Sequence[TableSummaryColumn]] = None,
15955
+ hide_non_summary_columns: typing.Optional[builtins.bool] = None,
15956
+ sticky: typing.Optional[builtins.bool] = None,
15957
+ ) -> None:
15958
+ """Type checking stubs"""
15959
+ pass
15960
+
15961
+ def _typecheckingstub__70d2d8bf527174c0069d64738e83c5ebe4fd927ac2332ac0de67140546fb8616(
15962
+ value: jsii.Number,
15963
+ color: typing.Optional[builtins.str] = None,
15964
+ ) -> None:
15965
+ """Type checking stubs"""
15966
+ pass
15967
+
15968
+ def _typecheckingstub__e6f92993218488cf545481e8167442910bb8b8c7c45aa7dfb6667808cb1077e6(
15969
+ value: jsii.Number,
15970
+ color: typing.Optional[builtins.str] = None,
15971
+ ) -> None:
15972
+ """Type checking stubs"""
15973
+ pass
15974
+
15975
+ def _typecheckingstub__837fdebf81b3f53de6d99624ebde152b4aba1d764a0cc2bd930440701533924a(
15976
+ lower_bound: jsii.Number,
15977
+ upper_bound: jsii.Number,
15978
+ color: typing.Optional[builtins.str] = None,
15979
+ ) -> None:
15980
+ """Type checking stubs"""
15981
+ pass
15982
+
15983
+ def _typecheckingstub__03726ba90bb01c2a1340af4f73005fffe1b8288cff57d77f31d745d629defb8b(
15984
+ *,
15985
+ height: typing.Optional[jsii.Number] = None,
15986
+ region: typing.Optional[builtins.str] = None,
15987
+ title: typing.Optional[builtins.str] = None,
15988
+ width: typing.Optional[jsii.Number] = None,
15989
+ end: typing.Optional[builtins.str] = None,
15990
+ full_precision: typing.Optional[builtins.bool] = None,
15991
+ layout: typing.Optional[TableLayout] = None,
15992
+ live_data: typing.Optional[builtins.bool] = None,
15993
+ metrics: typing.Optional[typing.Sequence[IMetric]] = None,
15994
+ period: typing.Optional[_Duration_4839e8c3] = None,
15995
+ set_period_to_time_range: typing.Optional[builtins.bool] = None,
15996
+ show_units_in_label: typing.Optional[builtins.bool] = None,
15997
+ start: typing.Optional[builtins.str] = None,
15998
+ statistic: typing.Optional[builtins.str] = None,
15999
+ summary: typing.Optional[typing.Union[TableSummaryProps, typing.Dict[builtins.str, typing.Any]]] = None,
16000
+ thresholds: typing.Optional[typing.Sequence[TableThreshold]] = None,
16001
+ ) -> None:
16002
+ """Type checking stubs"""
16003
+ pass
16004
+
15219
16005
  def _typecheckingstub__c678c9d6bdc1a1e852f5260a40406f2e09cfc10b899093e99e66b9998d086d5e(
15220
16006
  *,
15221
16007
  markdown: builtins.str,
@@ -15411,6 +16197,12 @@ def _typecheckingstub__3471ad100c9e34a517506d76368276ef9b137a3c7b33aecc91910b5dc
15411
16197
  """Type checking stubs"""
15412
16198
  pass
15413
16199
 
16200
+ def _typecheckingstub__14b284f52f62e4bb0b4243fb3b3bcaa2693e6ee107b2721f9467d31d81cf408b(
16201
+ metric: IMetric,
16202
+ ) -> None:
16203
+ """Type checking stubs"""
16204
+ pass
16205
+
15414
16206
  def _typecheckingstub__c8d51865c110b61caff6f389abfdbc4862eb4488d27c9b39083e0293fd0be343(
15415
16207
  x: jsii.Number,
15416
16208
  y: jsii.Number,