robhan-cdk-lib.aws-aps 0.0.43__py3-none-any.whl → 0.0.149__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.
@@ -142,13 +142,175 @@ class AmpConfiguration:
142
142
  )
143
143
 
144
144
 
145
+ @jsii.data_type(
146
+ jsii_type="@robhan-cdk-lib/aws_aps.AnomalyDetectorConfiguration",
147
+ jsii_struct_bases=[],
148
+ name_mapping={"random_cut_forest": "randomCutForest"},
149
+ )
150
+ class AnomalyDetectorConfiguration:
151
+ def __init__(
152
+ self,
153
+ *,
154
+ random_cut_forest: typing.Union["RandomCutForestConfiguration", typing.Dict[builtins.str, typing.Any]],
155
+ ) -> None:
156
+ '''The configuration for the anomaly detection algorithm.
157
+
158
+ :param random_cut_forest: The Random Cut Forest algorithm configuration for anomaly detection.
159
+ '''
160
+ if isinstance(random_cut_forest, dict):
161
+ random_cut_forest = RandomCutForestConfiguration(**random_cut_forest)
162
+ if __debug__:
163
+ type_hints = typing.get_type_hints(_typecheckingstub__488e50421526d1e316a7bd2f186eccb1fc4bf1daba066e779c147e9e9dbc747a)
164
+ check_type(argname="argument random_cut_forest", value=random_cut_forest, expected_type=type_hints["random_cut_forest"])
165
+ self._values: typing.Dict[builtins.str, typing.Any] = {
166
+ "random_cut_forest": random_cut_forest,
167
+ }
168
+
169
+ @builtins.property
170
+ def random_cut_forest(self) -> "RandomCutForestConfiguration":
171
+ '''The Random Cut Forest algorithm configuration for anomaly detection.'''
172
+ result = self._values.get("random_cut_forest")
173
+ assert result is not None, "Required property 'random_cut_forest' is missing"
174
+ return typing.cast("RandomCutForestConfiguration", result)
175
+
176
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
177
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
178
+
179
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
180
+ return not (rhs == self)
181
+
182
+ def __repr__(self) -> str:
183
+ return "AnomalyDetectorConfiguration(%s)" % ", ".join(
184
+ k + "=" + repr(v) for k, v in self._values.items()
185
+ )
186
+
187
+
188
+ @jsii.data_type(
189
+ jsii_type="@robhan-cdk-lib/aws_aps.AnomalyDetectorProps",
190
+ jsii_struct_bases=[],
191
+ name_mapping={
192
+ "alias": "alias",
193
+ "configuration": "configuration",
194
+ "workspace": "workspace",
195
+ "evaluation_interval_in_seconds": "evaluationIntervalInSeconds",
196
+ "labels": "labels",
197
+ "missing_data_action": "missingDataAction",
198
+ },
199
+ )
200
+ class AnomalyDetectorProps:
201
+ def __init__(
202
+ self,
203
+ *,
204
+ alias: builtins.str,
205
+ configuration: typing.Union["AnomalyDetectorConfiguration", typing.Dict[builtins.str, typing.Any]],
206
+ workspace: "IWorkspace",
207
+ evaluation_interval_in_seconds: typing.Optional[jsii.Number] = None,
208
+ labels: typing.Optional[typing.Sequence[typing.Union["Label", typing.Dict[builtins.str, typing.Any]]]] = None,
209
+ missing_data_action: typing.Optional[typing.Union["MissingDataAction", typing.Dict[builtins.str, typing.Any]]] = None,
210
+ ) -> None:
211
+ '''Properties for creating an Amazon Managed Service for Prometheus Anomaly Detector.
212
+
213
+ :param alias: The user-friendly name of the anomaly detector. 1 to 128 characters length.
214
+ :param configuration: The algorithm configuration of the anomaly detector.
215
+ :param workspace: An Amazon Managed Service for Prometheus workspace is a logical and isolated Prometheus server dedicated to ingesting, storing, and querying your Prometheus-compatible metrics.
216
+ :param evaluation_interval_in_seconds: The frequency, in seconds, at which the anomaly detector evaluates metrics. Minimum value of 30. Maximum value of 86400.
217
+ :param labels: The Amazon Managed Service for Prometheus metric labels associated with the anomaly detector. Map Entries: Minimum number of 0 items. Maximum number of 140 items. Key Length Constraints: Minimum length of 1. Maximum length of 7168. Key Pattern: (?!__)[a-zA-Z_][a-zA-Z0-9_]* Value Length Constraints: Minimum length of 1. Maximum length of 7168.
218
+ :param missing_data_action: The action taken when data is missing during evaluation.
219
+ '''
220
+ if isinstance(configuration, dict):
221
+ configuration = AnomalyDetectorConfiguration(**configuration)
222
+ if isinstance(missing_data_action, dict):
223
+ missing_data_action = MissingDataAction(**missing_data_action)
224
+ if __debug__:
225
+ type_hints = typing.get_type_hints(_typecheckingstub__d73bc4f90dcbc90f45d5d011fc423d2638eb9cfe65810e23594184c620ce38aa)
226
+ check_type(argname="argument alias", value=alias, expected_type=type_hints["alias"])
227
+ check_type(argname="argument configuration", value=configuration, expected_type=type_hints["configuration"])
228
+ check_type(argname="argument workspace", value=workspace, expected_type=type_hints["workspace"])
229
+ check_type(argname="argument evaluation_interval_in_seconds", value=evaluation_interval_in_seconds, expected_type=type_hints["evaluation_interval_in_seconds"])
230
+ check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
231
+ check_type(argname="argument missing_data_action", value=missing_data_action, expected_type=type_hints["missing_data_action"])
232
+ self._values: typing.Dict[builtins.str, typing.Any] = {
233
+ "alias": alias,
234
+ "configuration": configuration,
235
+ "workspace": workspace,
236
+ }
237
+ if evaluation_interval_in_seconds is not None:
238
+ self._values["evaluation_interval_in_seconds"] = evaluation_interval_in_seconds
239
+ if labels is not None:
240
+ self._values["labels"] = labels
241
+ if missing_data_action is not None:
242
+ self._values["missing_data_action"] = missing_data_action
243
+
244
+ @builtins.property
245
+ def alias(self) -> builtins.str:
246
+ '''The user-friendly name of the anomaly detector.
247
+
248
+ 1 to 128 characters length.
249
+ '''
250
+ result = self._values.get("alias")
251
+ assert result is not None, "Required property 'alias' is missing"
252
+ return typing.cast(builtins.str, result)
253
+
254
+ @builtins.property
255
+ def configuration(self) -> "AnomalyDetectorConfiguration":
256
+ '''The algorithm configuration of the anomaly detector.'''
257
+ result = self._values.get("configuration")
258
+ assert result is not None, "Required property 'configuration' is missing"
259
+ return typing.cast("AnomalyDetectorConfiguration", result)
260
+
261
+ @builtins.property
262
+ def workspace(self) -> "IWorkspace":
263
+ '''An Amazon Managed Service for Prometheus workspace is a logical and isolated Prometheus server dedicated to ingesting, storing, and querying your Prometheus-compatible metrics.'''
264
+ result = self._values.get("workspace")
265
+ assert result is not None, "Required property 'workspace' is missing"
266
+ return typing.cast("IWorkspace", result)
267
+
268
+ @builtins.property
269
+ def evaluation_interval_in_seconds(self) -> typing.Optional[jsii.Number]:
270
+ '''The frequency, in seconds, at which the anomaly detector evaluates metrics.
271
+
272
+ Minimum value of 30. Maximum value of 86400.
273
+ '''
274
+ result = self._values.get("evaluation_interval_in_seconds")
275
+ return typing.cast(typing.Optional[jsii.Number], result)
276
+
277
+ @builtins.property
278
+ def labels(self) -> typing.Optional[typing.List["Label"]]:
279
+ '''The Amazon Managed Service for Prometheus metric labels associated with the anomaly detector.
280
+
281
+ Map Entries: Minimum number of 0 items. Maximum number of 140 items.
282
+ Key Length Constraints: Minimum length of 1. Maximum length of 7168.
283
+ Key Pattern: (?!__)[a-zA-Z_][a-zA-Z0-9_]*
284
+ Value Length Constraints: Minimum length of 1. Maximum length of 7168.
285
+ '''
286
+ result = self._values.get("labels")
287
+ return typing.cast(typing.Optional[typing.List["Label"]], result)
288
+
289
+ @builtins.property
290
+ def missing_data_action(self) -> typing.Optional["MissingDataAction"]:
291
+ '''The action taken when data is missing during evaluation.'''
292
+ result = self._values.get("missing_data_action")
293
+ return typing.cast(typing.Optional["MissingDataAction"], result)
294
+
295
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
296
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
297
+
298
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
299
+ return not (rhs == self)
300
+
301
+ def __repr__(self) -> str:
302
+ return "AnomalyDetectorProps(%s)" % ", ".join(
303
+ k + "=" + repr(v) for k, v in self._values.items()
304
+ )
305
+
306
+
145
307
  @jsii.data_type(
146
308
  jsii_type="@robhan-cdk-lib/aws_aps.CloudWatchLogDestination",
147
309
  jsii_struct_bases=[],
148
310
  name_mapping={"log_group": "logGroup"},
149
311
  )
150
312
  class CloudWatchLogDestination:
151
- def __init__(self, *, log_group: _aws_cdk_aws_logs_ceddda9d.ILogGroup) -> None:
313
+ def __init__(self, *, log_group: "_aws_cdk_aws_logs_ceddda9d.ILogGroup") -> None:
152
314
  '''Configuration details for logging to CloudWatch Logs.
153
315
 
154
316
  :param log_group: The CloudWatch log group.
@@ -161,11 +323,11 @@ class CloudWatchLogDestination:
161
323
  }
162
324
 
163
325
  @builtins.property
164
- def log_group(self) -> _aws_cdk_aws_logs_ceddda9d.ILogGroup:
326
+ def log_group(self) -> "_aws_cdk_aws_logs_ceddda9d.ILogGroup":
165
327
  '''The CloudWatch log group.'''
166
328
  result = self._values.get("log_group")
167
329
  assert result is not None, "Required property 'log_group' is missing"
168
- return typing.cast(_aws_cdk_aws_logs_ceddda9d.ILogGroup, result)
330
+ return typing.cast("_aws_cdk_aws_logs_ceddda9d.ILogGroup", result)
169
331
 
170
332
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
171
333
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -188,7 +350,7 @@ class Destination:
188
350
  def __init__(
189
351
  self,
190
352
  *,
191
- amp_configuration: typing.Union[AmpConfiguration, typing.Dict[builtins.str, typing.Any]],
353
+ amp_configuration: typing.Union["AmpConfiguration", typing.Dict[builtins.str, typing.Any]],
192
354
  ) -> None:
193
355
  '''Where to send the metrics from a scraper.
194
356
 
@@ -204,11 +366,11 @@ class Destination:
204
366
  }
205
367
 
206
368
  @builtins.property
207
- def amp_configuration(self) -> AmpConfiguration:
369
+ def amp_configuration(self) -> "AmpConfiguration":
208
370
  '''The Amazon Managed Service for Prometheus workspace to send metrics to.'''
209
371
  result = self._values.get("amp_configuration")
210
372
  assert result is not None, "Required property 'amp_configuration' is missing"
211
- return typing.cast(AmpConfiguration, result)
373
+ return typing.cast("AmpConfiguration", result)
212
374
 
213
375
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
214
376
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -235,9 +397,9 @@ class EksConfiguration:
235
397
  def __init__(
236
398
  self,
237
399
  *,
238
- cluster: _aws_cdk_aws_eks_ceddda9d.ICluster,
239
- subnets: typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISubnet],
240
- security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
400
+ cluster: "_aws_cdk_aws_eks_ceddda9d.ICluster",
401
+ subnets: typing.Sequence["_aws_cdk_aws_ec2_ceddda9d.ISubnet"],
402
+ security_groups: typing.Optional[typing.Sequence["_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup"]] = None,
241
403
  ) -> None:
242
404
  '''The EksConfiguration structure describes the connection to the Amazon EKS cluster from which a scraper collects metrics.
243
405
 
@@ -258,32 +420,32 @@ class EksConfiguration:
258
420
  self._values["security_groups"] = security_groups
259
421
 
260
422
  @builtins.property
261
- def cluster(self) -> _aws_cdk_aws_eks_ceddda9d.ICluster:
423
+ def cluster(self) -> "_aws_cdk_aws_eks_ceddda9d.ICluster":
262
424
  '''The Amazon EKS cluster.'''
263
425
  result = self._values.get("cluster")
264
426
  assert result is not None, "Required property 'cluster' is missing"
265
- return typing.cast(_aws_cdk_aws_eks_ceddda9d.ICluster, result)
427
+ return typing.cast("_aws_cdk_aws_eks_ceddda9d.ICluster", result)
266
428
 
267
429
  @builtins.property
268
- def subnets(self) -> typing.List[_aws_cdk_aws_ec2_ceddda9d.ISubnet]:
430
+ def subnets(self) -> typing.List["_aws_cdk_aws_ec2_ceddda9d.ISubnet"]:
269
431
  '''A list of subnets for the Amazon EKS cluster VPC configuration.
270
432
 
271
433
  Min 1, max 5.
272
434
  '''
273
435
  result = self._values.get("subnets")
274
436
  assert result is not None, "Required property 'subnets' is missing"
275
- return typing.cast(typing.List[_aws_cdk_aws_ec2_ceddda9d.ISubnet], result)
437
+ return typing.cast(typing.List["_aws_cdk_aws_ec2_ceddda9d.ISubnet"], result)
276
438
 
277
439
  @builtins.property
278
440
  def security_groups(
279
441
  self,
280
- ) -> typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]]:
442
+ ) -> typing.Optional[typing.List["_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup"]]:
281
443
  '''A list of the security group IDs for the Amazon EKS cluster VPC configuration.
282
444
 
283
445
  Min 1, max 5.
284
446
  '''
285
447
  result = self._values.get("security_groups")
286
- return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]], result)
448
+ return typing.cast(typing.Optional[typing.List["_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup"]], result)
287
449
 
288
450
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
289
451
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -297,6 +459,170 @@ class EksConfiguration:
297
459
  )
298
460
 
299
461
 
462
+ @jsii.interface(jsii_type="@robhan-cdk-lib/aws_aps.IAnomalyDetector")
463
+ class IAnomalyDetector(_aws_cdk_ceddda9d.IResource, typing_extensions.Protocol):
464
+ @builtins.property
465
+ @jsii.member(jsii_name="alias")
466
+ def alias(self) -> builtins.str:
467
+ '''The user-friendly name of the anomaly detector. 1 to 128 characters length.
468
+
469
+ Minimum length of 1. Maximum length of 64.
470
+ Pattern: [0-9A-Za-z][-.0-9A-Z_a-z]*
471
+ '''
472
+ ...
473
+
474
+ @builtins.property
475
+ @jsii.member(jsii_name="anomalyDetectorArn")
476
+ def anomaly_detector_arn(self) -> builtins.str:
477
+ '''The Amazon Resource Name (ARN) of the anomaly detector.
478
+
479
+ :attribute: true
480
+ '''
481
+ ...
482
+
483
+ @builtins.property
484
+ @jsii.member(jsii_name="configuration")
485
+ def configuration(self) -> "AnomalyDetectorConfiguration":
486
+ '''The algorithm configuration of the anomaly detector.'''
487
+ ...
488
+
489
+ @builtins.property
490
+ @jsii.member(jsii_name="workspace")
491
+ def workspace(self) -> "IWorkspace":
492
+ '''An Amazon Managed Service for Prometheus workspace is a logical and isolated Prometheus server dedicated to ingesting, storing, and querying your Prometheus-compatible metrics.'''
493
+ ...
494
+
495
+ @builtins.property
496
+ @jsii.member(jsii_name="evaluationIntervalInSeconds")
497
+ def evaluation_interval_in_seconds(self) -> typing.Optional[jsii.Number]:
498
+ '''The frequency, in seconds, at which the anomaly detector evaluates metrics.
499
+
500
+ Minimum value of 30. Maximum value of 86400.
501
+ '''
502
+ ...
503
+
504
+ @builtins.property
505
+ @jsii.member(jsii_name="labels")
506
+ def labels(self) -> typing.Optional[typing.List["Label"]]:
507
+ '''The Amazon Managed Service for Prometheus metric labels associated with the anomaly detector.
508
+
509
+ Map Entries: Minimum number of 0 items. Maximum number of 140 items.
510
+ Key Length Constraints: Minimum length of 1. Maximum length of 7168.
511
+ Key Pattern: (?!__)[a-zA-Z_][a-zA-Z0-9_]*
512
+ Value Length Constraints: Minimum length of 1. Maximum length of 7168.
513
+ '''
514
+ ...
515
+
516
+ @builtins.property
517
+ @jsii.member(jsii_name="missingDataAction")
518
+ def missing_data_action(self) -> typing.Optional["MissingDataAction"]:
519
+ '''The action taken when data is missing during evaluation.'''
520
+ ...
521
+
522
+
523
+ class _IAnomalyDetectorProxy(
524
+ jsii.proxy_for(_aws_cdk_ceddda9d.IResource), # type: ignore[misc]
525
+ ):
526
+ __jsii_type__: typing.ClassVar[str] = "@robhan-cdk-lib/aws_aps.IAnomalyDetector"
527
+
528
+ @builtins.property
529
+ @jsii.member(jsii_name="alias")
530
+ def alias(self) -> builtins.str:
531
+ '''The user-friendly name of the anomaly detector. 1 to 128 characters length.
532
+
533
+ Minimum length of 1. Maximum length of 64.
534
+ Pattern: [0-9A-Za-z][-.0-9A-Z_a-z]*
535
+ '''
536
+ return typing.cast(builtins.str, jsii.get(self, "alias"))
537
+
538
+ @builtins.property
539
+ @jsii.member(jsii_name="anomalyDetectorArn")
540
+ def anomaly_detector_arn(self) -> builtins.str:
541
+ '''The Amazon Resource Name (ARN) of the anomaly detector.
542
+
543
+ :attribute: true
544
+ '''
545
+ return typing.cast(builtins.str, jsii.get(self, "anomalyDetectorArn"))
546
+
547
+ @builtins.property
548
+ @jsii.member(jsii_name="configuration")
549
+ def configuration(self) -> "AnomalyDetectorConfiguration":
550
+ '''The algorithm configuration of the anomaly detector.'''
551
+ return typing.cast("AnomalyDetectorConfiguration", jsii.get(self, "configuration"))
552
+
553
+ @builtins.property
554
+ @jsii.member(jsii_name="workspace")
555
+ def workspace(self) -> "IWorkspace":
556
+ '''An Amazon Managed Service for Prometheus workspace is a logical and isolated Prometheus server dedicated to ingesting, storing, and querying your Prometheus-compatible metrics.'''
557
+ return typing.cast("IWorkspace", jsii.get(self, "workspace"))
558
+
559
+ @builtins.property
560
+ @jsii.member(jsii_name="evaluationIntervalInSeconds")
561
+ def evaluation_interval_in_seconds(self) -> typing.Optional[jsii.Number]:
562
+ '''The frequency, in seconds, at which the anomaly detector evaluates metrics.
563
+
564
+ Minimum value of 30. Maximum value of 86400.
565
+ '''
566
+ return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "evaluationIntervalInSeconds"))
567
+
568
+ @builtins.property
569
+ @jsii.member(jsii_name="labels")
570
+ def labels(self) -> typing.Optional[typing.List["Label"]]:
571
+ '''The Amazon Managed Service for Prometheus metric labels associated with the anomaly detector.
572
+
573
+ Map Entries: Minimum number of 0 items. Maximum number of 140 items.
574
+ Key Length Constraints: Minimum length of 1. Maximum length of 7168.
575
+ Key Pattern: (?!__)[a-zA-Z_][a-zA-Z0-9_]*
576
+ Value Length Constraints: Minimum length of 1. Maximum length of 7168.
577
+ '''
578
+ return typing.cast(typing.Optional[typing.List["Label"]], jsii.get(self, "labels"))
579
+
580
+ @builtins.property
581
+ @jsii.member(jsii_name="missingDataAction")
582
+ def missing_data_action(self) -> typing.Optional["MissingDataAction"]:
583
+ '''The action taken when data is missing during evaluation.'''
584
+ return typing.cast(typing.Optional["MissingDataAction"], jsii.get(self, "missingDataAction"))
585
+
586
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
587
+ typing.cast(typing.Any, IAnomalyDetector).__jsii_proxy_class__ = lambda : _IAnomalyDetectorProxy
588
+
589
+
590
+ @jsii.interface(jsii_type="@robhan-cdk-lib/aws_aps.IResourcePolicy")
591
+ class IResourcePolicy(_aws_cdk_ceddda9d.IResource, typing_extensions.Protocol):
592
+ @builtins.property
593
+ @jsii.member(jsii_name="policyDocument")
594
+ def policy_document(self) -> builtins.str:
595
+ '''The JSON to use as the Resource-based Policy.'''
596
+ ...
597
+
598
+ @builtins.property
599
+ @jsii.member(jsii_name="workspace")
600
+ def workspace(self) -> "IWorkspace":
601
+ '''The workspace to attach the policy to.'''
602
+ ...
603
+
604
+
605
+ class _IResourcePolicyProxy(
606
+ jsii.proxy_for(_aws_cdk_ceddda9d.IResource), # type: ignore[misc]
607
+ ):
608
+ __jsii_type__: typing.ClassVar[str] = "@robhan-cdk-lib/aws_aps.IResourcePolicy"
609
+
610
+ @builtins.property
611
+ @jsii.member(jsii_name="policyDocument")
612
+ def policy_document(self) -> builtins.str:
613
+ '''The JSON to use as the Resource-based Policy.'''
614
+ return typing.cast(builtins.str, jsii.get(self, "policyDocument"))
615
+
616
+ @builtins.property
617
+ @jsii.member(jsii_name="workspace")
618
+ def workspace(self) -> "IWorkspace":
619
+ '''The workspace to attach the policy to.'''
620
+ return typing.cast("IWorkspace", jsii.get(self, "workspace"))
621
+
622
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
623
+ typing.cast(typing.Any, IResourcePolicy).__jsii_proxy_class__ = lambda : _IResourcePolicyProxy
624
+
625
+
300
626
  @jsii.interface(jsii_type="@robhan-cdk-lib/aws_aps.IRuleGroupsNamespace")
301
627
  class IRuleGroupsNamespace(_aws_cdk_ceddda9d.IResource, typing_extensions.Protocol):
302
628
  @builtins.property
@@ -367,7 +693,7 @@ typing.cast(typing.Any, IRuleGroupsNamespace).__jsii_proxy_class__ = lambda : _I
367
693
  class IScraper(_aws_cdk_ceddda9d.IResource, typing_extensions.Protocol):
368
694
  @builtins.property
369
695
  @jsii.member(jsii_name="destination")
370
- def destination(self) -> Destination:
696
+ def destination(self) -> "Destination":
371
697
  '''The Amazon Managed Service for Prometheus workspace the scraper sends metrics to.'''
372
698
  ...
373
699
 
@@ -426,9 +752,9 @@ class _IScraperProxy(
426
752
 
427
753
  @builtins.property
428
754
  @jsii.member(jsii_name="destination")
429
- def destination(self) -> Destination:
755
+ def destination(self) -> "Destination":
430
756
  '''The Amazon Managed Service for Prometheus workspace the scraper sends metrics to.'''
431
- return typing.cast(Destination, jsii.get(self, "destination"))
757
+ return typing.cast("Destination", jsii.get(self, "destination"))
432
758
 
433
759
  @builtins.property
434
760
  @jsii.member(jsii_name="scrapeConfiguration")
@@ -519,7 +845,7 @@ class IWorkspace(_aws_cdk_ceddda9d.IResource, typing_extensions.Protocol):
519
845
 
520
846
  @builtins.property
521
847
  @jsii.member(jsii_name="kmsKey")
522
- def kms_key(self) -> typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey]:
848
+ def kms_key(self) -> typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"]:
523
849
  '''The customer managed AWS KMS key to use for encrypting data within your workspace.'''
524
850
  ...
525
851
 
@@ -588,9 +914,9 @@ class _IWorkspaceProxy(
588
914
 
589
915
  @builtins.property
590
916
  @jsii.member(jsii_name="kmsKey")
591
- def kms_key(self) -> typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey]:
917
+ def kms_key(self) -> typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"]:
592
918
  '''The customer managed AWS KMS key to use for encrypting data within your workspace.'''
593
- return typing.cast(typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey], jsii.get(self, "kmsKey"))
919
+ return typing.cast(typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"], jsii.get(self, "kmsKey"))
594
920
 
595
921
  @builtins.property
596
922
  @jsii.member(jsii_name="loggingConfiguration")
@@ -619,6 +945,57 @@ class _IWorkspaceProxy(
619
945
  typing.cast(typing.Any, IWorkspace).__jsii_proxy_class__ = lambda : _IWorkspaceProxy
620
946
 
621
947
 
948
+ @jsii.data_type(
949
+ jsii_type="@robhan-cdk-lib/aws_aps.IgnoreNearExpected",
950
+ jsii_struct_bases=[],
951
+ name_mapping={"amount": "amount", "ratio": "ratio"},
952
+ )
953
+ class IgnoreNearExpected:
954
+ def __init__(
955
+ self,
956
+ *,
957
+ amount: typing.Optional[jsii.Number] = None,
958
+ ratio: typing.Optional[jsii.Number] = None,
959
+ ) -> None:
960
+ '''Configuration for threshold settings that determine when values near expected values should be ignored during anomaly detection.
961
+
962
+ :param amount: The absolute amount by which values can differ from expected values before being considered anomalous.
963
+ :param ratio: The ratio by which values can differ from expected values before being considered anomalous.
964
+ '''
965
+ if __debug__:
966
+ type_hints = typing.get_type_hints(_typecheckingstub__fa12ec68028f74d5d8f1d96a0b99090659c404c86bd0ec936014ab264467ca22)
967
+ check_type(argname="argument amount", value=amount, expected_type=type_hints["amount"])
968
+ check_type(argname="argument ratio", value=ratio, expected_type=type_hints["ratio"])
969
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
970
+ if amount is not None:
971
+ self._values["amount"] = amount
972
+ if ratio is not None:
973
+ self._values["ratio"] = ratio
974
+
975
+ @builtins.property
976
+ def amount(self) -> typing.Optional[jsii.Number]:
977
+ '''The absolute amount by which values can differ from expected values before being considered anomalous.'''
978
+ result = self._values.get("amount")
979
+ return typing.cast(typing.Optional[jsii.Number], result)
980
+
981
+ @builtins.property
982
+ def ratio(self) -> typing.Optional[jsii.Number]:
983
+ '''The ratio by which values can differ from expected values before being considered anomalous.'''
984
+ result = self._values.get("ratio")
985
+ return typing.cast(typing.Optional[jsii.Number], result)
986
+
987
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
988
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
989
+
990
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
991
+ return not (rhs == self)
992
+
993
+ def __repr__(self) -> str:
994
+ return "IgnoreNearExpected(%s)" % ", ".join(
995
+ k + "=" + repr(v) for k, v in self._values.items()
996
+ )
997
+
998
+
622
999
  @jsii.data_type(
623
1000
  jsii_type="@robhan-cdk-lib/aws_aps.Label",
624
1001
  jsii_struct_bases=[],
@@ -688,7 +1065,7 @@ class LimitsPerLabelSet:
688
1065
  def __init__(
689
1066
  self,
690
1067
  *,
691
- label_set: typing.Sequence[typing.Union[Label, typing.Dict[builtins.str, typing.Any]]],
1068
+ label_set: typing.Sequence[typing.Union["Label", typing.Dict[builtins.str, typing.Any]]],
692
1069
  limits: typing.Union["LimitsPerLabelSetEntry", typing.Dict[builtins.str, typing.Any]],
693
1070
  ) -> None:
694
1071
  '''This defines a label set for the workspace, and defines the ingestion limit for active time series that match that label set.
@@ -710,7 +1087,7 @@ class LimitsPerLabelSet:
710
1087
  }
711
1088
 
712
1089
  @builtins.property
713
- def label_set(self) -> typing.List[Label]:
1090
+ def label_set(self) -> typing.List["Label"]:
714
1091
  '''This defines one label set that will have an enforced ingestion limit.
715
1092
 
716
1093
  You can set ingestion
@@ -725,7 +1102,7 @@ class LimitsPerLabelSet:
725
1102
  '''
726
1103
  result = self._values.get("label_set")
727
1104
  assert result is not None, "Required property 'label_set' is missing"
728
- return typing.cast(typing.List[Label], result)
1105
+ return typing.cast(typing.List["Label"], result)
729
1106
 
730
1107
  @builtins.property
731
1108
  def limits(self) -> "LimitsPerLabelSetEntry":
@@ -797,7 +1174,7 @@ class LoggingConfiguration:
797
1174
  def __init__(
798
1175
  self,
799
1176
  *,
800
- log_group: typing.Optional[_aws_cdk_aws_logs_ceddda9d.ILogGroup] = None,
1177
+ log_group: typing.Optional["_aws_cdk_aws_logs_ceddda9d.ILogGroup"] = None,
801
1178
  ) -> None:
802
1179
  '''Contains information about the rules and alerting logging configuration for the workspace.
803
1180
 
@@ -811,10 +1188,10 @@ class LoggingConfiguration:
811
1188
  self._values["log_group"] = log_group
812
1189
 
813
1190
  @builtins.property
814
- def log_group(self) -> typing.Optional[_aws_cdk_aws_logs_ceddda9d.ILogGroup]:
1191
+ def log_group(self) -> typing.Optional["_aws_cdk_aws_logs_ceddda9d.ILogGroup"]:
815
1192
  '''The CloudWatch log group to which the vended log data will be published.'''
816
1193
  result = self._values.get("log_group")
817
- return typing.cast(typing.Optional[_aws_cdk_aws_logs_ceddda9d.ILogGroup], result)
1194
+ return typing.cast(typing.Optional["_aws_cdk_aws_logs_ceddda9d.ILogGroup"], result)
818
1195
 
819
1196
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
820
1197
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -837,7 +1214,7 @@ class LoggingDestination:
837
1214
  def __init__(
838
1215
  self,
839
1216
  *,
840
- cloud_watch_logs: typing.Union[CloudWatchLogDestination, typing.Dict[builtins.str, typing.Any]],
1217
+ cloud_watch_logs: typing.Union["CloudWatchLogDestination", typing.Dict[builtins.str, typing.Any]],
841
1218
  filters: typing.Union["LoggingFilter", typing.Dict[builtins.str, typing.Any]],
842
1219
  ) -> None:
843
1220
  '''The logging destination in an Amazon Managed Service for Prometheus workspace.
@@ -859,11 +1236,11 @@ class LoggingDestination:
859
1236
  }
860
1237
 
861
1238
  @builtins.property
862
- def cloud_watch_logs(self) -> CloudWatchLogDestination:
1239
+ def cloud_watch_logs(self) -> "CloudWatchLogDestination":
863
1240
  '''Configuration details for logging to CloudWatch Logs.'''
864
1241
  result = self._values.get("cloud_watch_logs")
865
1242
  assert result is not None, "Required property 'cloud_watch_logs' is missing"
866
- return typing.cast(CloudWatchLogDestination, result)
1243
+ return typing.cast("CloudWatchLogDestination", result)
867
1244
 
868
1245
  @builtins.property
869
1246
  def filters(self) -> "LoggingFilter":
@@ -924,6 +1301,57 @@ class LoggingFilter:
924
1301
  )
925
1302
 
926
1303
 
1304
+ @jsii.data_type(
1305
+ jsii_type="@robhan-cdk-lib/aws_aps.MissingDataAction",
1306
+ jsii_struct_bases=[],
1307
+ name_mapping={"mark_as_anomaly": "markAsAnomaly", "skip": "skip"},
1308
+ )
1309
+ class MissingDataAction:
1310
+ def __init__(
1311
+ self,
1312
+ *,
1313
+ mark_as_anomaly: typing.Optional[builtins.bool] = None,
1314
+ skip: typing.Optional[builtins.bool] = None,
1315
+ ) -> None:
1316
+ '''Specifies the action to take when data is missing during anomaly detection evaluation.
1317
+
1318
+ :param mark_as_anomaly: Marks missing data points as anomalies.
1319
+ :param skip: Skips evaluation when data is missing.
1320
+ '''
1321
+ if __debug__:
1322
+ type_hints = typing.get_type_hints(_typecheckingstub__4de31fdb80b9646037b68b88ae1dae6b46be704ab84a3c61100b29e91fc959c2)
1323
+ check_type(argname="argument mark_as_anomaly", value=mark_as_anomaly, expected_type=type_hints["mark_as_anomaly"])
1324
+ check_type(argname="argument skip", value=skip, expected_type=type_hints["skip"])
1325
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
1326
+ if mark_as_anomaly is not None:
1327
+ self._values["mark_as_anomaly"] = mark_as_anomaly
1328
+ if skip is not None:
1329
+ self._values["skip"] = skip
1330
+
1331
+ @builtins.property
1332
+ def mark_as_anomaly(self) -> typing.Optional[builtins.bool]:
1333
+ '''Marks missing data points as anomalies.'''
1334
+ result = self._values.get("mark_as_anomaly")
1335
+ return typing.cast(typing.Optional[builtins.bool], result)
1336
+
1337
+ @builtins.property
1338
+ def skip(self) -> typing.Optional[builtins.bool]:
1339
+ '''Skips evaluation when data is missing.'''
1340
+ result = self._values.get("skip")
1341
+ return typing.cast(typing.Optional[builtins.bool], result)
1342
+
1343
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1344
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1345
+
1346
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1347
+ return not (rhs == self)
1348
+
1349
+ def __repr__(self) -> str:
1350
+ return "MissingDataAction(%s)" % ", ".join(
1351
+ k + "=" + repr(v) for k, v in self._values.items()
1352
+ )
1353
+
1354
+
927
1355
  @jsii.data_type(
928
1356
  jsii_type="@robhan-cdk-lib/aws_aps.QueryLoggingConfiguration",
929
1357
  jsii_struct_bases=[],
@@ -933,7 +1361,7 @@ class QueryLoggingConfiguration:
933
1361
  def __init__(
934
1362
  self,
935
1363
  *,
936
- destinations: typing.Sequence[typing.Union[LoggingDestination, typing.Dict[builtins.str, typing.Any]]],
1364
+ destinations: typing.Sequence[typing.Union["LoggingDestination", typing.Dict[builtins.str, typing.Any]]],
937
1365
  ) -> None:
938
1366
  '''The query logging configuration in an Amazon Managed Service for Prometheus workspace.
939
1367
 
@@ -947,14 +1375,14 @@ class QueryLoggingConfiguration:
947
1375
  }
948
1376
 
949
1377
  @builtins.property
950
- def destinations(self) -> typing.List[LoggingDestination]:
1378
+ def destinations(self) -> typing.List["LoggingDestination"]:
951
1379
  '''Defines a destination and its associated filtering criteria for query logging.
952
1380
 
953
1381
  Minimum 1 and maximum 1 item in array.
954
1382
  '''
955
1383
  result = self._values.get("destinations")
956
1384
  assert result is not None, "Required property 'destinations' is missing"
957
- return typing.cast(typing.List[LoggingDestination], result)
1385
+ return typing.cast(typing.List["LoggingDestination"], result)
958
1386
 
959
1387
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
960
1388
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -969,48 +1397,282 @@ class QueryLoggingConfiguration:
969
1397
 
970
1398
 
971
1399
  @jsii.data_type(
972
- jsii_type="@robhan-cdk-lib/aws_aps.RoleConfiguration",
1400
+ jsii_type="@robhan-cdk-lib/aws_aps.RandomCutForestConfiguration",
973
1401
  jsii_struct_bases=[],
974
- name_mapping={"source_role": "sourceRole", "target_role": "targetRole"},
1402
+ name_mapping={
1403
+ "query": "query",
1404
+ "ignore_near_expected_from_above": "ignoreNearExpectedFromAbove",
1405
+ "ignore_near_expected_from_below": "ignoreNearExpectedFromBelow",
1406
+ "sample_size": "sampleSize",
1407
+ "shingle_size": "shingleSize",
1408
+ },
975
1409
  )
976
- class RoleConfiguration:
1410
+ class RandomCutForestConfiguration:
977
1411
  def __init__(
978
1412
  self,
979
1413
  *,
980
- source_role: typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole] = None,
981
- target_role: typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole] = None,
1414
+ query: builtins.str,
1415
+ ignore_near_expected_from_above: typing.Optional[typing.Union["IgnoreNearExpected", typing.Dict[builtins.str, typing.Any]]] = None,
1416
+ ignore_near_expected_from_below: typing.Optional[typing.Union["IgnoreNearExpected", typing.Dict[builtins.str, typing.Any]]] = None,
1417
+ sample_size: typing.Optional[jsii.Number] = None,
1418
+ shingle_size: typing.Optional[jsii.Number] = None,
982
1419
  ) -> None:
983
- '''The role configuration in an Amazon Managed Service for Prometheus scraper.
1420
+ '''Configuration for the Random Cut Forest algorithm used for anomaly detection in time-series data.
1421
+
1422
+ :param query: The Prometheus query used to retrieve the time-series data for anomaly detection. 1 to 8192 characters length.
1423
+ :param ignore_near_expected_from_above: Configuration for ignoring values that are near expected values from above during anomaly detection.
1424
+ :param ignore_near_expected_from_below: Configuration for ignoring values that are near expected values from below during anomaly detection.
1425
+ :param sample_size: The number of data points sampled from the input stream for the Random Cut Forest algorithm. The default number is 256 consecutive data points. Minimum: 256 Maximum: 1024
1426
+ :param shingle_size: The number of consecutive data points used to create a shingle for the Random Cut Forest algorithm. The default number is 8 consecutive data points. Minimum: 2 Maximum: 1024
1427
+ '''
1428
+ if isinstance(ignore_near_expected_from_above, dict):
1429
+ ignore_near_expected_from_above = IgnoreNearExpected(**ignore_near_expected_from_above)
1430
+ if isinstance(ignore_near_expected_from_below, dict):
1431
+ ignore_near_expected_from_below = IgnoreNearExpected(**ignore_near_expected_from_below)
1432
+ if __debug__:
1433
+ type_hints = typing.get_type_hints(_typecheckingstub__c44dedd708a153df90c20f2738e66c34f510bb7ed036637ccb7a1bde1f3394b8)
1434
+ check_type(argname="argument query", value=query, expected_type=type_hints["query"])
1435
+ check_type(argname="argument ignore_near_expected_from_above", value=ignore_near_expected_from_above, expected_type=type_hints["ignore_near_expected_from_above"])
1436
+ check_type(argname="argument ignore_near_expected_from_below", value=ignore_near_expected_from_below, expected_type=type_hints["ignore_near_expected_from_below"])
1437
+ check_type(argname="argument sample_size", value=sample_size, expected_type=type_hints["sample_size"])
1438
+ check_type(argname="argument shingle_size", value=shingle_size, expected_type=type_hints["shingle_size"])
1439
+ self._values: typing.Dict[builtins.str, typing.Any] = {
1440
+ "query": query,
1441
+ }
1442
+ if ignore_near_expected_from_above is not None:
1443
+ self._values["ignore_near_expected_from_above"] = ignore_near_expected_from_above
1444
+ if ignore_near_expected_from_below is not None:
1445
+ self._values["ignore_near_expected_from_below"] = ignore_near_expected_from_below
1446
+ if sample_size is not None:
1447
+ self._values["sample_size"] = sample_size
1448
+ if shingle_size is not None:
1449
+ self._values["shingle_size"] = shingle_size
984
1450
 
985
- :param source_role: The source role.
986
- :param target_role: The target role.
1451
+ @builtins.property
1452
+ def query(self) -> builtins.str:
1453
+ '''The Prometheus query used to retrieve the time-series data for anomaly detection.
1454
+
1455
+ 1 to 8192 characters length.
987
1456
  '''
988
- if __debug__:
989
- type_hints = typing.get_type_hints(_typecheckingstub__e96c135bdcece9823caf073421082af151c59b6d52a5918bb38689bbca7ab2a3)
990
- check_type(argname="argument source_role", value=source_role, expected_type=type_hints["source_role"])
991
- check_type(argname="argument target_role", value=target_role, expected_type=type_hints["target_role"])
992
- self._values: typing.Dict[builtins.str, typing.Any] = {}
993
- if source_role is not None:
994
- self._values["source_role"] = source_role
995
- if target_role is not None:
996
- self._values["target_role"] = target_role
1457
+ result = self._values.get("query")
1458
+ assert result is not None, "Required property 'query' is missing"
1459
+ return typing.cast(builtins.str, result)
997
1460
 
998
1461
  @builtins.property
999
- def source_role(self) -> typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole]:
1000
- '''The source role.'''
1001
- result = self._values.get("source_role")
1002
- return typing.cast(typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole], result)
1462
+ def ignore_near_expected_from_above(self) -> typing.Optional["IgnoreNearExpected"]:
1463
+ '''Configuration for ignoring values that are near expected values from above during anomaly detection.'''
1464
+ result = self._values.get("ignore_near_expected_from_above")
1465
+ return typing.cast(typing.Optional["IgnoreNearExpected"], result)
1003
1466
 
1004
1467
  @builtins.property
1005
- def target_role(self) -> typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole]:
1006
- '''The target role.'''
1007
- result = self._values.get("target_role")
1008
- return typing.cast(typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole], result)
1468
+ def ignore_near_expected_from_below(self) -> typing.Optional["IgnoreNearExpected"]:
1469
+ '''Configuration for ignoring values that are near expected values from below during anomaly detection.'''
1470
+ result = self._values.get("ignore_near_expected_from_below")
1471
+ return typing.cast(typing.Optional["IgnoreNearExpected"], result)
1009
1472
 
1010
- def __eq__(self, rhs: typing.Any) -> builtins.bool:
1011
- return isinstance(rhs, self.__class__) and rhs._values == self._values
1473
+ @builtins.property
1474
+ def sample_size(self) -> typing.Optional[jsii.Number]:
1475
+ '''The number of data points sampled from the input stream for the Random Cut Forest algorithm.
1012
1476
 
1013
- def __ne__(self, rhs: typing.Any) -> builtins.bool:
1477
+ The default number is 256 consecutive data points.
1478
+
1479
+ Minimum: 256
1480
+ Maximum: 1024
1481
+ '''
1482
+ result = self._values.get("sample_size")
1483
+ return typing.cast(typing.Optional[jsii.Number], result)
1484
+
1485
+ @builtins.property
1486
+ def shingle_size(self) -> typing.Optional[jsii.Number]:
1487
+ '''The number of consecutive data points used to create a shingle for the Random Cut Forest algorithm.
1488
+
1489
+ The default number is 8 consecutive data points.
1490
+
1491
+ Minimum: 2
1492
+ Maximum: 1024
1493
+ '''
1494
+ result = self._values.get("shingle_size")
1495
+ return typing.cast(typing.Optional[jsii.Number], result)
1496
+
1497
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1498
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1499
+
1500
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1501
+ return not (rhs == self)
1502
+
1503
+ def __repr__(self) -> str:
1504
+ return "RandomCutForestConfiguration(%s)" % ", ".join(
1505
+ k + "=" + repr(v) for k, v in self._values.items()
1506
+ )
1507
+
1508
+
1509
+ @jsii.implements(IResourcePolicy)
1510
+ class ResourcePolicyBase(
1511
+ _aws_cdk_ceddda9d.Resource,
1512
+ metaclass=jsii.JSIIAbstractClass,
1513
+ jsii_type="@robhan-cdk-lib/aws_aps.ResourcePolicyBase",
1514
+ ):
1515
+ def __init__(
1516
+ self,
1517
+ scope: "_constructs_77d1e7e8.Construct",
1518
+ id: builtins.str,
1519
+ *,
1520
+ account: typing.Optional[builtins.str] = None,
1521
+ environment_from_arn: typing.Optional[builtins.str] = None,
1522
+ physical_name: typing.Optional[builtins.str] = None,
1523
+ region: typing.Optional[builtins.str] = None,
1524
+ ) -> None:
1525
+ '''
1526
+ :param scope: -
1527
+ :param id: -
1528
+ :param account: The AWS account ID this resource belongs to. Default: - the resource is in the same account as the stack it belongs to
1529
+ :param environment_from_arn: ARN to deduce region and account from. The ARN is parsed and the account and region are taken from the ARN. This should be used for imported resources. Cannot be supplied together with either ``account`` or ``region``. Default: - take environment from ``account``, ``region`` parameters, or use Stack environment.
1530
+ :param physical_name: The value passed in by users to the physical name prop of the resource. - ``undefined`` implies that a physical name will be allocated by CloudFormation during deployment. - a concrete value implies a specific physical name - ``PhysicalName.GENERATE_IF_NEEDED`` is a marker that indicates that a physical will only be generated by the CDK if it is needed for cross-environment references. Otherwise, it will be allocated by CloudFormation. Default: - The physical name will be allocated by CloudFormation at deployment time
1531
+ :param region: The AWS region this resource belongs to. Default: - the resource is in the same region as the stack it belongs to
1532
+ '''
1533
+ if __debug__:
1534
+ type_hints = typing.get_type_hints(_typecheckingstub__1705a6716ddb826f74670d4b351789ae363cbbc6a4fda6389f3fe972e4ad37e8)
1535
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
1536
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
1537
+ props = _aws_cdk_ceddda9d.ResourceProps(
1538
+ account=account,
1539
+ environment_from_arn=environment_from_arn,
1540
+ physical_name=physical_name,
1541
+ region=region,
1542
+ )
1543
+
1544
+ jsii.create(self.__class__, self, [scope, id, props])
1545
+
1546
+ @builtins.property
1547
+ @jsii.member(jsii_name="policyDocument")
1548
+ @abc.abstractmethod
1549
+ def policy_document(self) -> builtins.str:
1550
+ '''The JSON to use as the Resource-based Policy.'''
1551
+ ...
1552
+
1553
+ @builtins.property
1554
+ @jsii.member(jsii_name="workspace")
1555
+ @abc.abstractmethod
1556
+ def workspace(self) -> "IWorkspace":
1557
+ '''The workspace to attach the policy to.'''
1558
+ ...
1559
+
1560
+
1561
+ class _ResourcePolicyBaseProxy(
1562
+ ResourcePolicyBase,
1563
+ jsii.proxy_for(_aws_cdk_ceddda9d.Resource), # type: ignore[misc]
1564
+ ):
1565
+ @builtins.property
1566
+ @jsii.member(jsii_name="policyDocument")
1567
+ def policy_document(self) -> builtins.str:
1568
+ '''The JSON to use as the Resource-based Policy.'''
1569
+ return typing.cast(builtins.str, jsii.get(self, "policyDocument"))
1570
+
1571
+ @builtins.property
1572
+ @jsii.member(jsii_name="workspace")
1573
+ def workspace(self) -> "IWorkspace":
1574
+ '''The workspace to attach the policy to.'''
1575
+ return typing.cast("IWorkspace", jsii.get(self, "workspace"))
1576
+
1577
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the abstract class
1578
+ typing.cast(typing.Any, ResourcePolicyBase).__jsii_proxy_class__ = lambda : _ResourcePolicyBaseProxy
1579
+
1580
+
1581
+ @jsii.data_type(
1582
+ jsii_type="@robhan-cdk-lib/aws_aps.ResourcePolicyProps",
1583
+ jsii_struct_bases=[],
1584
+ name_mapping={"policy_document": "policyDocument", "workspace": "workspace"},
1585
+ )
1586
+ class ResourcePolicyProps:
1587
+ def __init__(
1588
+ self,
1589
+ *,
1590
+ policy_document: builtins.str,
1591
+ workspace: "IWorkspace",
1592
+ ) -> None:
1593
+ '''Properties for creating an Amazon Managed Service for Prometheus Resource Policy.
1594
+
1595
+ :param policy_document: The JSON to use as the Resource-based Policy.
1596
+ :param workspace: The workspace to attach the policy to.
1597
+ '''
1598
+ if __debug__:
1599
+ type_hints = typing.get_type_hints(_typecheckingstub__e64bdaac8096e1f570bf3bdd34320a336689a41b7fadad148bbe26533f682a36)
1600
+ check_type(argname="argument policy_document", value=policy_document, expected_type=type_hints["policy_document"])
1601
+ check_type(argname="argument workspace", value=workspace, expected_type=type_hints["workspace"])
1602
+ self._values: typing.Dict[builtins.str, typing.Any] = {
1603
+ "policy_document": policy_document,
1604
+ "workspace": workspace,
1605
+ }
1606
+
1607
+ @builtins.property
1608
+ def policy_document(self) -> builtins.str:
1609
+ '''The JSON to use as the Resource-based Policy.'''
1610
+ result = self._values.get("policy_document")
1611
+ assert result is not None, "Required property 'policy_document' is missing"
1612
+ return typing.cast(builtins.str, result)
1613
+
1614
+ @builtins.property
1615
+ def workspace(self) -> "IWorkspace":
1616
+ '''The workspace to attach the policy to.'''
1617
+ result = self._values.get("workspace")
1618
+ assert result is not None, "Required property 'workspace' is missing"
1619
+ return typing.cast("IWorkspace", result)
1620
+
1621
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1622
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1623
+
1624
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1625
+ return not (rhs == self)
1626
+
1627
+ def __repr__(self) -> str:
1628
+ return "ResourcePolicyProps(%s)" % ", ".join(
1629
+ k + "=" + repr(v) for k, v in self._values.items()
1630
+ )
1631
+
1632
+
1633
+ @jsii.data_type(
1634
+ jsii_type="@robhan-cdk-lib/aws_aps.RoleConfiguration",
1635
+ jsii_struct_bases=[],
1636
+ name_mapping={"source_role": "sourceRole", "target_role": "targetRole"},
1637
+ )
1638
+ class RoleConfiguration:
1639
+ def __init__(
1640
+ self,
1641
+ *,
1642
+ source_role: typing.Optional["_aws_cdk_aws_iam_ceddda9d.IRole"] = None,
1643
+ target_role: typing.Optional["_aws_cdk_aws_iam_ceddda9d.IRole"] = None,
1644
+ ) -> None:
1645
+ '''The role configuration in an Amazon Managed Service for Prometheus scraper.
1646
+
1647
+ :param source_role: The source role.
1648
+ :param target_role: The target role.
1649
+ '''
1650
+ if __debug__:
1651
+ type_hints = typing.get_type_hints(_typecheckingstub__e96c135bdcece9823caf073421082af151c59b6d52a5918bb38689bbca7ab2a3)
1652
+ check_type(argname="argument source_role", value=source_role, expected_type=type_hints["source_role"])
1653
+ check_type(argname="argument target_role", value=target_role, expected_type=type_hints["target_role"])
1654
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
1655
+ if source_role is not None:
1656
+ self._values["source_role"] = source_role
1657
+ if target_role is not None:
1658
+ self._values["target_role"] = target_role
1659
+
1660
+ @builtins.property
1661
+ def source_role(self) -> typing.Optional["_aws_cdk_aws_iam_ceddda9d.IRole"]:
1662
+ '''The source role.'''
1663
+ result = self._values.get("source_role")
1664
+ return typing.cast(typing.Optional["_aws_cdk_aws_iam_ceddda9d.IRole"], result)
1665
+
1666
+ @builtins.property
1667
+ def target_role(self) -> typing.Optional["_aws_cdk_aws_iam_ceddda9d.IRole"]:
1668
+ '''The target role.'''
1669
+ result = self._values.get("target_role")
1670
+ return typing.cast(typing.Optional["_aws_cdk_aws_iam_ceddda9d.IRole"], result)
1671
+
1672
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1673
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1674
+
1675
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1014
1676
  return not (rhs == self)
1015
1677
 
1016
1678
  def __repr__(self) -> str:
@@ -1036,7 +1698,7 @@ class RuleGroupsNamespaceAttributes:
1036
1698
  data: builtins.str,
1037
1699
  name: builtins.str,
1038
1700
  rule_groups_namespace_arn: builtins.str,
1039
- workspace: IWorkspace,
1701
+ workspace: "IWorkspace",
1040
1702
  ) -> None:
1041
1703
  '''Properties for importing a rule groups namespace in an Amazon Managed Service for Prometheus workspace from attributes.
1042
1704
 
@@ -1083,11 +1745,11 @@ class RuleGroupsNamespaceAttributes:
1083
1745
  return typing.cast(builtins.str, result)
1084
1746
 
1085
1747
  @builtins.property
1086
- def workspace(self) -> IWorkspace:
1748
+ def workspace(self) -> "IWorkspace":
1087
1749
  '''The workspace to add the rule groups namespace.'''
1088
1750
  result = self._values.get("workspace")
1089
1751
  assert result is not None, "Required property 'workspace' is missing"
1090
- return typing.cast(IWorkspace, result)
1752
+ return typing.cast("IWorkspace", result)
1091
1753
 
1092
1754
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
1093
1755
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -1109,7 +1771,7 @@ class RuleGroupsNamespaceBase(
1109
1771
  ):
1110
1772
  def __init__(
1111
1773
  self,
1112
- scope: _constructs_77d1e7e8.Construct,
1774
+ scope: "_constructs_77d1e7e8.Construct",
1113
1775
  id: builtins.str,
1114
1776
  *,
1115
1777
  account: typing.Optional[builtins.str] = None,
@@ -1162,7 +1824,7 @@ class RuleGroupsNamespaceBase(
1162
1824
  @builtins.property
1163
1825
  @jsii.member(jsii_name="workspace")
1164
1826
  @abc.abstractmethod
1165
- def workspace(self) -> IWorkspace:
1827
+ def workspace(self) -> "IWorkspace":
1166
1828
  '''The workspace to add the rule groups namespace.'''
1167
1829
  ...
1168
1830
 
@@ -1191,9 +1853,9 @@ class _RuleGroupsNamespaceBaseProxy(
1191
1853
 
1192
1854
  @builtins.property
1193
1855
  @jsii.member(jsii_name="workspace")
1194
- def workspace(self) -> IWorkspace:
1856
+ def workspace(self) -> "IWorkspace":
1195
1857
  '''The workspace to add the rule groups namespace.'''
1196
- return typing.cast(IWorkspace, jsii.get(self, "workspace"))
1858
+ return typing.cast("IWorkspace", jsii.get(self, "workspace"))
1197
1859
 
1198
1860
  # Adding a "__jsii_proxy_class__(): typing.Type" function to the abstract class
1199
1861
  typing.cast(typing.Any, RuleGroupsNamespaceBase).__jsii_proxy_class__ = lambda : _RuleGroupsNamespaceBaseProxy
@@ -1210,7 +1872,7 @@ class RuleGroupsNamespaceProps:
1210
1872
  *,
1211
1873
  data: builtins.str,
1212
1874
  name: builtins.str,
1213
- workspace: IWorkspace,
1875
+ workspace: "IWorkspace",
1214
1876
  ) -> None:
1215
1877
  '''Properties for creating a rule groups namespace in an Amazon Managed Service for Prometheus workspace.
1216
1878
 
@@ -1247,11 +1909,11 @@ class RuleGroupsNamespaceProps:
1247
1909
  return typing.cast(builtins.str, result)
1248
1910
 
1249
1911
  @builtins.property
1250
- def workspace(self) -> IWorkspace:
1912
+ def workspace(self) -> "IWorkspace":
1251
1913
  '''The workspace to add the rule groups namespace.'''
1252
1914
  result = self._values.get("workspace")
1253
1915
  assert result is not None, "Required property 'workspace' is missing"
1254
- return typing.cast(IWorkspace, result)
1916
+ return typing.cast("IWorkspace", result)
1255
1917
 
1256
1918
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
1257
1919
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -1318,12 +1980,12 @@ class ScraperAttributes:
1318
1980
  def __init__(
1319
1981
  self,
1320
1982
  *,
1321
- destination: typing.Union[Destination, typing.Dict[builtins.str, typing.Any]],
1322
- scrape_configuration: typing.Union[ScrapeConfiguration, typing.Dict[builtins.str, typing.Any]],
1983
+ destination: typing.Union["Destination", typing.Dict[builtins.str, typing.Any]],
1984
+ scrape_configuration: typing.Union["ScrapeConfiguration", typing.Dict[builtins.str, typing.Any]],
1323
1985
  scraper_arn: builtins.str,
1324
1986
  source: typing.Union["Source", typing.Dict[builtins.str, typing.Any]],
1325
1987
  alias: typing.Optional[builtins.str] = None,
1326
- role_configuration: typing.Optional[typing.Union[RoleConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
1988
+ role_configuration: typing.Optional[typing.Union["RoleConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
1327
1989
  ) -> None:
1328
1990
  '''Properties for importing an Amazon Managed Service for Prometheus Scraper from attributes.
1329
1991
 
@@ -1362,18 +2024,18 @@ class ScraperAttributes:
1362
2024
  self._values["role_configuration"] = role_configuration
1363
2025
 
1364
2026
  @builtins.property
1365
- def destination(self) -> Destination:
2027
+ def destination(self) -> "Destination":
1366
2028
  '''The Amazon Managed Service for Prometheus workspace the scraper sends metrics to.'''
1367
2029
  result = self._values.get("destination")
1368
2030
  assert result is not None, "Required property 'destination' is missing"
1369
- return typing.cast(Destination, result)
2031
+ return typing.cast("Destination", result)
1370
2032
 
1371
2033
  @builtins.property
1372
- def scrape_configuration(self) -> ScrapeConfiguration:
2034
+ def scrape_configuration(self) -> "ScrapeConfiguration":
1373
2035
  '''The configuration in use by the scraper.'''
1374
2036
  result = self._values.get("scrape_configuration")
1375
2037
  assert result is not None, "Required property 'scrape_configuration' is missing"
1376
- return typing.cast(ScrapeConfiguration, result)
2038
+ return typing.cast("ScrapeConfiguration", result)
1377
2039
 
1378
2040
  @builtins.property
1379
2041
  def scraper_arn(self) -> builtins.str:
@@ -1401,10 +2063,10 @@ class ScraperAttributes:
1401
2063
  return typing.cast(typing.Optional[builtins.str], result)
1402
2064
 
1403
2065
  @builtins.property
1404
- def role_configuration(self) -> typing.Optional[RoleConfiguration]:
2066
+ def role_configuration(self) -> typing.Optional["RoleConfiguration"]:
1405
2067
  '''The role configuration in an Amazon Managed Service for Prometheus scraper.'''
1406
2068
  result = self._values.get("role_configuration")
1407
- return typing.cast(typing.Optional[RoleConfiguration], result)
2069
+ return typing.cast(typing.Optional["RoleConfiguration"], result)
1408
2070
 
1409
2071
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
1410
2072
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -1426,7 +2088,7 @@ class ScraperBase(
1426
2088
  ):
1427
2089
  def __init__(
1428
2090
  self,
1429
- scope: _constructs_77d1e7e8.Construct,
2091
+ scope: "_constructs_77d1e7e8.Construct",
1430
2092
  id: builtins.str,
1431
2093
  *,
1432
2094
  account: typing.Optional[builtins.str] = None,
@@ -1468,14 +2130,14 @@ class ScraperBase(
1468
2130
  @builtins.property
1469
2131
  @jsii.member(jsii_name="destination")
1470
2132
  @abc.abstractmethod
1471
- def destination(self) -> Destination:
2133
+ def destination(self) -> "Destination":
1472
2134
  '''The Amazon Managed Service for Prometheus workspace the scraper sends metrics to.'''
1473
2135
  ...
1474
2136
 
1475
2137
  @builtins.property
1476
2138
  @jsii.member(jsii_name="scrapeConfiguration")
1477
2139
  @abc.abstractmethod
1478
- def scrape_configuration(self) -> ScrapeConfiguration:
2140
+ def scrape_configuration(self) -> "ScrapeConfiguration":
1479
2141
  '''The configuration in use by the scraper.'''
1480
2142
  ...
1481
2143
 
@@ -1515,7 +2177,7 @@ class ScraperBase(
1515
2177
  @builtins.property
1516
2178
  @jsii.member(jsii_name="roleConfiguration")
1517
2179
  @abc.abstractmethod
1518
- def role_configuration(self) -> typing.Optional[RoleConfiguration]:
2180
+ def role_configuration(self) -> typing.Optional["RoleConfiguration"]:
1519
2181
  '''The role configuration in an Amazon Managed Service for Prometheus scraper.'''
1520
2182
  ...
1521
2183
 
@@ -1526,15 +2188,15 @@ class _ScraperBaseProxy(
1526
2188
  ):
1527
2189
  @builtins.property
1528
2190
  @jsii.member(jsii_name="destination")
1529
- def destination(self) -> Destination:
2191
+ def destination(self) -> "Destination":
1530
2192
  '''The Amazon Managed Service for Prometheus workspace the scraper sends metrics to.'''
1531
- return typing.cast(Destination, jsii.get(self, "destination"))
2193
+ return typing.cast("Destination", jsii.get(self, "destination"))
1532
2194
 
1533
2195
  @builtins.property
1534
2196
  @jsii.member(jsii_name="scrapeConfiguration")
1535
- def scrape_configuration(self) -> ScrapeConfiguration:
2197
+ def scrape_configuration(self) -> "ScrapeConfiguration":
1536
2198
  '''The configuration in use by the scraper.'''
1537
- return typing.cast(ScrapeConfiguration, jsii.get(self, "scrapeConfiguration"))
2199
+ return typing.cast("ScrapeConfiguration", jsii.get(self, "scrapeConfiguration"))
1538
2200
 
1539
2201
  @builtins.property
1540
2202
  @jsii.member(jsii_name="scraperArn")
@@ -1567,9 +2229,9 @@ class _ScraperBaseProxy(
1567
2229
 
1568
2230
  @builtins.property
1569
2231
  @jsii.member(jsii_name="roleConfiguration")
1570
- def role_configuration(self) -> typing.Optional[RoleConfiguration]:
2232
+ def role_configuration(self) -> typing.Optional["RoleConfiguration"]:
1571
2233
  '''The role configuration in an Amazon Managed Service for Prometheus scraper.'''
1572
- return typing.cast(typing.Optional[RoleConfiguration], jsii.get(self, "roleConfiguration"))
2234
+ return typing.cast(typing.Optional["RoleConfiguration"], jsii.get(self, "roleConfiguration"))
1573
2235
 
1574
2236
  # Adding a "__jsii_proxy_class__(): typing.Type" function to the abstract class
1575
2237
  typing.cast(typing.Any, ScraperBase).__jsii_proxy_class__ = lambda : _ScraperBaseProxy
@@ -1590,11 +2252,11 @@ class ScraperProps:
1590
2252
  def __init__(
1591
2253
  self,
1592
2254
  *,
1593
- destination: typing.Union[Destination, typing.Dict[builtins.str, typing.Any]],
1594
- scrape_configuration: typing.Union[ScrapeConfiguration, typing.Dict[builtins.str, typing.Any]],
2255
+ destination: typing.Union["Destination", typing.Dict[builtins.str, typing.Any]],
2256
+ scrape_configuration: typing.Union["ScrapeConfiguration", typing.Dict[builtins.str, typing.Any]],
1595
2257
  source: typing.Union["Source", typing.Dict[builtins.str, typing.Any]],
1596
2258
  alias: typing.Optional[builtins.str] = None,
1597
- role_configuration: typing.Optional[typing.Union[RoleConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2259
+ role_configuration: typing.Optional[typing.Union["RoleConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
1598
2260
  ) -> None:
1599
2261
  '''Properties for creating an Amazon Managed Service for Prometheus Scraper.
1600
2262
 
@@ -1630,18 +2292,18 @@ class ScraperProps:
1630
2292
  self._values["role_configuration"] = role_configuration
1631
2293
 
1632
2294
  @builtins.property
1633
- def destination(self) -> Destination:
2295
+ def destination(self) -> "Destination":
1634
2296
  '''The Amazon Managed Service for Prometheus workspace the scraper sends metrics to.'''
1635
2297
  result = self._values.get("destination")
1636
2298
  assert result is not None, "Required property 'destination' is missing"
1637
- return typing.cast(Destination, result)
2299
+ return typing.cast("Destination", result)
1638
2300
 
1639
2301
  @builtins.property
1640
- def scrape_configuration(self) -> ScrapeConfiguration:
2302
+ def scrape_configuration(self) -> "ScrapeConfiguration":
1641
2303
  '''The configuration in use by the scraper.'''
1642
2304
  result = self._values.get("scrape_configuration")
1643
2305
  assert result is not None, "Required property 'scrape_configuration' is missing"
1644
- return typing.cast(ScrapeConfiguration, result)
2306
+ return typing.cast("ScrapeConfiguration", result)
1645
2307
 
1646
2308
  @builtins.property
1647
2309
  def source(self) -> "Source":
@@ -1662,10 +2324,10 @@ class ScraperProps:
1662
2324
  return typing.cast(typing.Optional[builtins.str], result)
1663
2325
 
1664
2326
  @builtins.property
1665
- def role_configuration(self) -> typing.Optional[RoleConfiguration]:
2327
+ def role_configuration(self) -> typing.Optional["RoleConfiguration"]:
1666
2328
  '''The role configuration in an Amazon Managed Service for Prometheus scraper.'''
1667
2329
  result = self._values.get("role_configuration")
1668
- return typing.cast(typing.Optional[RoleConfiguration], result)
2330
+ return typing.cast(typing.Optional["RoleConfiguration"], result)
1669
2331
 
1670
2332
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
1671
2333
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -1688,7 +2350,7 @@ class Source:
1688
2350
  def __init__(
1689
2351
  self,
1690
2352
  *,
1691
- eks_configuration: typing.Union[EksConfiguration, typing.Dict[builtins.str, typing.Any]],
2353
+ eks_configuration: typing.Union["EksConfiguration", typing.Dict[builtins.str, typing.Any]],
1692
2354
  ) -> None:
1693
2355
  '''The source of collected metrics for a scraper.
1694
2356
 
@@ -1704,11 +2366,11 @@ class Source:
1704
2366
  }
1705
2367
 
1706
2368
  @builtins.property
1707
- def eks_configuration(self) -> EksConfiguration:
2369
+ def eks_configuration(self) -> "EksConfiguration":
1708
2370
  '''The Amazon EKS cluster from which a scraper collects metrics.'''
1709
2371
  result = self._values.get("eks_configuration")
1710
2372
  assert result is not None, "Required property 'eks_configuration' is missing"
1711
- return typing.cast(EksConfiguration, result)
2373
+ return typing.cast("EksConfiguration", result)
1712
2374
 
1713
2375
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
1714
2376
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -1742,9 +2404,9 @@ class WorkspaceAttributes:
1742
2404
  workspace_arn: builtins.str,
1743
2405
  alert_manager_definition: typing.Optional[builtins.str] = None,
1744
2406
  alias: typing.Optional[builtins.str] = None,
1745
- kms_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey] = None,
1746
- logging_configuration: typing.Optional[typing.Union[LoggingConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
1747
- query_logging_configuration: typing.Optional[typing.Union[QueryLoggingConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2407
+ kms_key: typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"] = None,
2408
+ logging_configuration: typing.Optional[typing.Union["LoggingConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
2409
+ query_logging_configuration: typing.Optional[typing.Union["QueryLoggingConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
1748
2410
  workspace_configuration: typing.Optional[typing.Union["WorkspaceConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
1749
2411
  ) -> None:
1750
2412
  '''Properties for importing an Amazon Managed Service for Prometheus Workspace from attributes.
@@ -1812,25 +2474,27 @@ class WorkspaceAttributes:
1812
2474
  return typing.cast(typing.Optional[builtins.str], result)
1813
2475
 
1814
2476
  @builtins.property
1815
- def kms_key(self) -> typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey]:
2477
+ def kms_key(self) -> typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"]:
1816
2478
  '''The customer managed AWS KMS key to use for encrypting data within your workspace.'''
1817
2479
  result = self._values.get("kms_key")
1818
- return typing.cast(typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey], result)
2480
+ return typing.cast(typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"], result)
1819
2481
 
1820
2482
  @builtins.property
1821
- def logging_configuration(self) -> typing.Optional[LoggingConfiguration]:
2483
+ def logging_configuration(self) -> typing.Optional["LoggingConfiguration"]:
1822
2484
  '''Contains information about the current rules and alerting logging configuration for the workspace.
1823
2485
 
1824
2486
  Note: These logging configurations are only for rules and alerting logs.
1825
2487
  '''
1826
2488
  result = self._values.get("logging_configuration")
1827
- return typing.cast(typing.Optional[LoggingConfiguration], result)
2489
+ return typing.cast(typing.Optional["LoggingConfiguration"], result)
1828
2490
 
1829
2491
  @builtins.property
1830
- def query_logging_configuration(self) -> typing.Optional[QueryLoggingConfiguration]:
2492
+ def query_logging_configuration(
2493
+ self,
2494
+ ) -> typing.Optional["QueryLoggingConfiguration"]:
1831
2495
  '''The definition of logging configuration in an Amazon Managed Service for Prometheus workspace.'''
1832
2496
  result = self._values.get("query_logging_configuration")
1833
- return typing.cast(typing.Optional[QueryLoggingConfiguration], result)
2497
+ return typing.cast(typing.Optional["QueryLoggingConfiguration"], result)
1834
2498
 
1835
2499
  @builtins.property
1836
2500
  def workspace_configuration(self) -> typing.Optional["WorkspaceConfiguration"]:
@@ -1858,7 +2522,7 @@ class WorkspaceBase(
1858
2522
  ):
1859
2523
  def __init__(
1860
2524
  self,
1861
- scope: _constructs_77d1e7e8.Construct,
2525
+ scope: "_constructs_77d1e7e8.Construct",
1862
2526
  id: builtins.str,
1863
2527
  *,
1864
2528
  account: typing.Optional[builtins.str] = None,
@@ -1932,14 +2596,14 @@ class WorkspaceBase(
1932
2596
  @builtins.property
1933
2597
  @jsii.member(jsii_name="kmsKey")
1934
2598
  @abc.abstractmethod
1935
- def kms_key(self) -> typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey]:
2599
+ def kms_key(self) -> typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"]:
1936
2600
  '''The customer managed AWS KMS key to use for encrypting data within your workspace.'''
1937
2601
  ...
1938
2602
 
1939
2603
  @builtins.property
1940
2604
  @jsii.member(jsii_name="loggingConfiguration")
1941
2605
  @abc.abstractmethod
1942
- def logging_configuration(self) -> typing.Optional[LoggingConfiguration]:
2606
+ def logging_configuration(self) -> typing.Optional["LoggingConfiguration"]:
1943
2607
  '''Contains information about the current rules and alerting logging configuration for the workspace.
1944
2608
 
1945
2609
  Note: These logging configurations are only for rules and alerting logs.
@@ -1949,7 +2613,9 @@ class WorkspaceBase(
1949
2613
  @builtins.property
1950
2614
  @jsii.member(jsii_name="queryLoggingConfiguration")
1951
2615
  @abc.abstractmethod
1952
- def query_logging_configuration(self) -> typing.Optional[QueryLoggingConfiguration]:
2616
+ def query_logging_configuration(
2617
+ self,
2618
+ ) -> typing.Optional["QueryLoggingConfiguration"]:
1953
2619
  '''The definition of logging configuration in an Amazon Managed Service for Prometheus workspace.'''
1954
2620
  ...
1955
2621
 
@@ -1995,24 +2661,26 @@ class _WorkspaceBaseProxy(
1995
2661
 
1996
2662
  @builtins.property
1997
2663
  @jsii.member(jsii_name="kmsKey")
1998
- def kms_key(self) -> typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey]:
2664
+ def kms_key(self) -> typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"]:
1999
2665
  '''The customer managed AWS KMS key to use for encrypting data within your workspace.'''
2000
- return typing.cast(typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey], jsii.get(self, "kmsKey"))
2666
+ return typing.cast(typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"], jsii.get(self, "kmsKey"))
2001
2667
 
2002
2668
  @builtins.property
2003
2669
  @jsii.member(jsii_name="loggingConfiguration")
2004
- def logging_configuration(self) -> typing.Optional[LoggingConfiguration]:
2670
+ def logging_configuration(self) -> typing.Optional["LoggingConfiguration"]:
2005
2671
  '''Contains information about the current rules and alerting logging configuration for the workspace.
2006
2672
 
2007
2673
  Note: These logging configurations are only for rules and alerting logs.
2008
2674
  '''
2009
- return typing.cast(typing.Optional[LoggingConfiguration], jsii.get(self, "loggingConfiguration"))
2675
+ return typing.cast(typing.Optional["LoggingConfiguration"], jsii.get(self, "loggingConfiguration"))
2010
2676
 
2011
2677
  @builtins.property
2012
2678
  @jsii.member(jsii_name="queryLoggingConfiguration")
2013
- def query_logging_configuration(self) -> typing.Optional[QueryLoggingConfiguration]:
2679
+ def query_logging_configuration(
2680
+ self,
2681
+ ) -> typing.Optional["QueryLoggingConfiguration"]:
2014
2682
  '''The definition of logging configuration in an Amazon Managed Service for Prometheus workspace.'''
2015
- return typing.cast(typing.Optional[QueryLoggingConfiguration], jsii.get(self, "queryLoggingConfiguration"))
2683
+ return typing.cast(typing.Optional["QueryLoggingConfiguration"], jsii.get(self, "queryLoggingConfiguration"))
2016
2684
 
2017
2685
  @builtins.property
2018
2686
  @jsii.member(jsii_name="workspaceConfiguration")
@@ -2036,7 +2704,7 @@ class WorkspaceConfiguration:
2036
2704
  def __init__(
2037
2705
  self,
2038
2706
  *,
2039
- limits_per_label_sets: typing.Optional[typing.Sequence[typing.Union[LimitsPerLabelSet, typing.Dict[builtins.str, typing.Any]]]] = None,
2707
+ limits_per_label_sets: typing.Optional[typing.Sequence[typing.Union["LimitsPerLabelSet", typing.Dict[builtins.str, typing.Any]]]] = None,
2040
2708
  retention_period_in_days: typing.Optional[jsii.Number] = None,
2041
2709
  ) -> None:
2042
2710
  '''Use this structure to define label sets and the ingestion limits for time series that match label sets, and to specify the retention period of the workspace.
@@ -2055,7 +2723,9 @@ class WorkspaceConfiguration:
2055
2723
  self._values["retention_period_in_days"] = retention_period_in_days
2056
2724
 
2057
2725
  @builtins.property
2058
- def limits_per_label_sets(self) -> typing.Optional[typing.List[LimitsPerLabelSet]]:
2726
+ def limits_per_label_sets(
2727
+ self,
2728
+ ) -> typing.Optional[typing.List["LimitsPerLabelSet"]]:
2059
2729
  '''This is an array of structures, where each structure defines a label set for the workspace, and defines the ingestion limit for active time series for each of those label sets.
2060
2730
 
2061
2731
  Each
@@ -2064,7 +2734,7 @@ class WorkspaceConfiguration:
2064
2734
  Minimum 0
2065
2735
  '''
2066
2736
  result = self._values.get("limits_per_label_sets")
2067
- return typing.cast(typing.Optional[typing.List[LimitsPerLabelSet]], result)
2737
+ return typing.cast(typing.Optional[typing.List["LimitsPerLabelSet"]], result)
2068
2738
 
2069
2739
  @builtins.property
2070
2740
  def retention_period_in_days(self) -> typing.Optional[jsii.Number]:
@@ -2105,10 +2775,10 @@ class WorkspaceProps:
2105
2775
  *,
2106
2776
  alert_manager_definition: typing.Optional[builtins.str] = None,
2107
2777
  alias: typing.Optional[builtins.str] = None,
2108
- kms_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey] = None,
2109
- logging_configuration: typing.Optional[typing.Union[LoggingConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2110
- query_logging_configuration: typing.Optional[typing.Union[QueryLoggingConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2111
- workspace_configuration: typing.Optional[typing.Union[WorkspaceConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2778
+ kms_key: typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"] = None,
2779
+ logging_configuration: typing.Optional[typing.Union["LoggingConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
2780
+ query_logging_configuration: typing.Optional[typing.Union["QueryLoggingConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
2781
+ workspace_configuration: typing.Optional[typing.Union["WorkspaceConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
2112
2782
  ) -> None:
2113
2783
  '''Properties for creating an Amazon Managed Service for Prometheus Workspace.
2114
2784
 
@@ -2163,31 +2833,33 @@ class WorkspaceProps:
2163
2833
  return typing.cast(typing.Optional[builtins.str], result)
2164
2834
 
2165
2835
  @builtins.property
2166
- def kms_key(self) -> typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey]:
2836
+ def kms_key(self) -> typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"]:
2167
2837
  '''The customer managed AWS KMS key to use for encrypting data within your workspace.'''
2168
2838
  result = self._values.get("kms_key")
2169
- return typing.cast(typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey], result)
2839
+ return typing.cast(typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"], result)
2170
2840
 
2171
2841
  @builtins.property
2172
- def logging_configuration(self) -> typing.Optional[LoggingConfiguration]:
2842
+ def logging_configuration(self) -> typing.Optional["LoggingConfiguration"]:
2173
2843
  '''Contains information about the current rules and alerting logging configuration for the workspace.
2174
2844
 
2175
2845
  Note: These logging configurations are only for rules and alerting logs.
2176
2846
  '''
2177
2847
  result = self._values.get("logging_configuration")
2178
- return typing.cast(typing.Optional[LoggingConfiguration], result)
2848
+ return typing.cast(typing.Optional["LoggingConfiguration"], result)
2179
2849
 
2180
2850
  @builtins.property
2181
- def query_logging_configuration(self) -> typing.Optional[QueryLoggingConfiguration]:
2851
+ def query_logging_configuration(
2852
+ self,
2853
+ ) -> typing.Optional["QueryLoggingConfiguration"]:
2182
2854
  '''The definition of logging configuration in an Amazon Managed Service for Prometheus workspace.'''
2183
2855
  result = self._values.get("query_logging_configuration")
2184
- return typing.cast(typing.Optional[QueryLoggingConfiguration], result)
2856
+ return typing.cast(typing.Optional["QueryLoggingConfiguration"], result)
2185
2857
 
2186
2858
  @builtins.property
2187
- def workspace_configuration(self) -> typing.Optional[WorkspaceConfiguration]:
2859
+ def workspace_configuration(self) -> typing.Optional["WorkspaceConfiguration"]:
2188
2860
  '''Use this structure to define label sets and the ingestion limits for time series that match label sets, and to specify the retention period of the workspace.'''
2189
2861
  result = self._values.get("workspace_configuration")
2190
- return typing.cast(typing.Optional[WorkspaceConfiguration], result)
2862
+ return typing.cast(typing.Optional["WorkspaceConfiguration"], result)
2191
2863
 
2192
2864
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
2193
2865
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -2201,6 +2873,228 @@ class WorkspaceProps:
2201
2873
  )
2202
2874
 
2203
2875
 
2876
+ @jsii.implements(IAnomalyDetector)
2877
+ class AnomalyDetectorBase(
2878
+ _aws_cdk_ceddda9d.Resource,
2879
+ metaclass=jsii.JSIIAbstractClass,
2880
+ jsii_type="@robhan-cdk-lib/aws_aps.AnomalyDetectorBase",
2881
+ ):
2882
+ def __init__(
2883
+ self,
2884
+ scope: "_constructs_77d1e7e8.Construct",
2885
+ id: builtins.str,
2886
+ *,
2887
+ account: typing.Optional[builtins.str] = None,
2888
+ environment_from_arn: typing.Optional[builtins.str] = None,
2889
+ physical_name: typing.Optional[builtins.str] = None,
2890
+ region: typing.Optional[builtins.str] = None,
2891
+ ) -> None:
2892
+ '''
2893
+ :param scope: -
2894
+ :param id: -
2895
+ :param account: The AWS account ID this resource belongs to. Default: - the resource is in the same account as the stack it belongs to
2896
+ :param environment_from_arn: ARN to deduce region and account from. The ARN is parsed and the account and region are taken from the ARN. This should be used for imported resources. Cannot be supplied together with either ``account`` or ``region``. Default: - take environment from ``account``, ``region`` parameters, or use Stack environment.
2897
+ :param physical_name: The value passed in by users to the physical name prop of the resource. - ``undefined`` implies that a physical name will be allocated by CloudFormation during deployment. - a concrete value implies a specific physical name - ``PhysicalName.GENERATE_IF_NEEDED`` is a marker that indicates that a physical will only be generated by the CDK if it is needed for cross-environment references. Otherwise, it will be allocated by CloudFormation. Default: - The physical name will be allocated by CloudFormation at deployment time
2898
+ :param region: The AWS region this resource belongs to. Default: - the resource is in the same region as the stack it belongs to
2899
+ '''
2900
+ if __debug__:
2901
+ type_hints = typing.get_type_hints(_typecheckingstub__763ce8aef513d695a9ea5e157a4299be537296b8475d4cac315b4f595f7d0536)
2902
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
2903
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
2904
+ props = _aws_cdk_ceddda9d.ResourceProps(
2905
+ account=account,
2906
+ environment_from_arn=environment_from_arn,
2907
+ physical_name=physical_name,
2908
+ region=region,
2909
+ )
2910
+
2911
+ jsii.create(self.__class__, self, [scope, id, props])
2912
+
2913
+ @builtins.property
2914
+ @jsii.member(jsii_name="alias")
2915
+ @abc.abstractmethod
2916
+ def alias(self) -> builtins.str:
2917
+ '''The user-friendly name of the anomaly detector. 1 to 64 characters length.
2918
+
2919
+ Minimum length of 1. Maximum length of 64.
2920
+ Pattern: [0-9A-Za-z][-.0-9A-Z_a-z]*
2921
+ '''
2922
+ ...
2923
+
2924
+ @builtins.property
2925
+ @jsii.member(jsii_name="anomalyDetectorArn")
2926
+ @abc.abstractmethod
2927
+ def anomaly_detector_arn(self) -> builtins.str:
2928
+ '''The Amazon Resource Name (ARN) of the anomaly detector.
2929
+
2930
+ :attribute: true
2931
+ '''
2932
+ ...
2933
+
2934
+ @builtins.property
2935
+ @jsii.member(jsii_name="configuration")
2936
+ @abc.abstractmethod
2937
+ def configuration(self) -> "AnomalyDetectorConfiguration":
2938
+ '''The algorithm configuration of the anomaly detector.'''
2939
+ ...
2940
+
2941
+ @builtins.property
2942
+ @jsii.member(jsii_name="workspace")
2943
+ @abc.abstractmethod
2944
+ def workspace(self) -> "IWorkspace":
2945
+ '''An Amazon Managed Service for Prometheus workspace is a logical and isolated Prometheus server dedicated to ingesting, storing, and querying your Prometheus-compatible metrics.'''
2946
+ ...
2947
+
2948
+ @builtins.property
2949
+ @jsii.member(jsii_name="evaluationIntervalInSeconds")
2950
+ @abc.abstractmethod
2951
+ def evaluation_interval_in_seconds(self) -> typing.Optional[jsii.Number]:
2952
+ '''The frequency, in seconds, at which the anomaly detector evaluates metrics.
2953
+
2954
+ Minimum value of 30. Maximum value of 86400.
2955
+ '''
2956
+ ...
2957
+
2958
+ @builtins.property
2959
+ @jsii.member(jsii_name="labels")
2960
+ @abc.abstractmethod
2961
+ def labels(self) -> typing.Optional[typing.List["Label"]]:
2962
+ '''The Amazon Managed Service for Prometheus metric labels associated with the anomaly detector.
2963
+
2964
+ Map Entries: Minimum number of 0 items. Maximum number of 140 items.
2965
+ Key Length Constraints: Minimum length of 1. Maximum length of 7168.
2966
+ Key Pattern: (?!__)[a-zA-Z_][a-zA-Z0-9_]*
2967
+ Value Length Constraints: Minimum length of 1. Maximum length of 7168.
2968
+ '''
2969
+ ...
2970
+
2971
+ @builtins.property
2972
+ @jsii.member(jsii_name="missingDataAction")
2973
+ @abc.abstractmethod
2974
+ def missing_data_action(self) -> typing.Optional["MissingDataAction"]:
2975
+ '''The action taken when data is missing during evaluation.'''
2976
+ ...
2977
+
2978
+
2979
+ class _AnomalyDetectorBaseProxy(
2980
+ AnomalyDetectorBase,
2981
+ jsii.proxy_for(_aws_cdk_ceddda9d.Resource), # type: ignore[misc]
2982
+ ):
2983
+ @builtins.property
2984
+ @jsii.member(jsii_name="alias")
2985
+ def alias(self) -> builtins.str:
2986
+ '''The user-friendly name of the anomaly detector. 1 to 64 characters length.
2987
+
2988
+ Minimum length of 1. Maximum length of 64.
2989
+ Pattern: [0-9A-Za-z][-.0-9A-Z_a-z]*
2990
+ '''
2991
+ return typing.cast(builtins.str, jsii.get(self, "alias"))
2992
+
2993
+ @builtins.property
2994
+ @jsii.member(jsii_name="anomalyDetectorArn")
2995
+ def anomaly_detector_arn(self) -> builtins.str:
2996
+ '''The Amazon Resource Name (ARN) of the anomaly detector.
2997
+
2998
+ :attribute: true
2999
+ '''
3000
+ return typing.cast(builtins.str, jsii.get(self, "anomalyDetectorArn"))
3001
+
3002
+ @builtins.property
3003
+ @jsii.member(jsii_name="configuration")
3004
+ def configuration(self) -> "AnomalyDetectorConfiguration":
3005
+ '''The algorithm configuration of the anomaly detector.'''
3006
+ return typing.cast("AnomalyDetectorConfiguration", jsii.get(self, "configuration"))
3007
+
3008
+ @builtins.property
3009
+ @jsii.member(jsii_name="workspace")
3010
+ def workspace(self) -> "IWorkspace":
3011
+ '''An Amazon Managed Service for Prometheus workspace is a logical and isolated Prometheus server dedicated to ingesting, storing, and querying your Prometheus-compatible metrics.'''
3012
+ return typing.cast("IWorkspace", jsii.get(self, "workspace"))
3013
+
3014
+ @builtins.property
3015
+ @jsii.member(jsii_name="evaluationIntervalInSeconds")
3016
+ def evaluation_interval_in_seconds(self) -> typing.Optional[jsii.Number]:
3017
+ '''The frequency, in seconds, at which the anomaly detector evaluates metrics.
3018
+
3019
+ Minimum value of 30. Maximum value of 86400.
3020
+ '''
3021
+ return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "evaluationIntervalInSeconds"))
3022
+
3023
+ @builtins.property
3024
+ @jsii.member(jsii_name="labels")
3025
+ def labels(self) -> typing.Optional[typing.List["Label"]]:
3026
+ '''The Amazon Managed Service for Prometheus metric labels associated with the anomaly detector.
3027
+
3028
+ Map Entries: Minimum number of 0 items. Maximum number of 140 items.
3029
+ Key Length Constraints: Minimum length of 1. Maximum length of 7168.
3030
+ Key Pattern: (?!__)[a-zA-Z_][a-zA-Z0-9_]*
3031
+ Value Length Constraints: Minimum length of 1. Maximum length of 7168.
3032
+ '''
3033
+ return typing.cast(typing.Optional[typing.List["Label"]], jsii.get(self, "labels"))
3034
+
3035
+ @builtins.property
3036
+ @jsii.member(jsii_name="missingDataAction")
3037
+ def missing_data_action(self) -> typing.Optional["MissingDataAction"]:
3038
+ '''The action taken when data is missing during evaluation.'''
3039
+ return typing.cast(typing.Optional["MissingDataAction"], jsii.get(self, "missingDataAction"))
3040
+
3041
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the abstract class
3042
+ typing.cast(typing.Any, AnomalyDetectorBase).__jsii_proxy_class__ = lambda : _AnomalyDetectorBaseProxy
3043
+
3044
+
3045
+ class ResourcePolicy(
3046
+ ResourcePolicyBase,
3047
+ metaclass=jsii.JSIIMeta,
3048
+ jsii_type="@robhan-cdk-lib/aws_aps.ResourcePolicy",
3049
+ ):
3050
+ def __init__(
3051
+ self,
3052
+ scope: "_constructs_77d1e7e8.Construct",
3053
+ id: builtins.str,
3054
+ *,
3055
+ policy_document: builtins.str,
3056
+ workspace: "IWorkspace",
3057
+ ) -> None:
3058
+ '''
3059
+ :param scope: -
3060
+ :param id: -
3061
+ :param policy_document: The JSON to use as the Resource-based Policy.
3062
+ :param workspace: The workspace to attach the policy to.
3063
+ '''
3064
+ if __debug__:
3065
+ type_hints = typing.get_type_hints(_typecheckingstub__152018d2f86ee27c3ac817bf409dc2fae4034315290b87fd5d6c906625b633d3)
3066
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3067
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
3068
+ props = ResourcePolicyProps(
3069
+ policy_document=policy_document, workspace=workspace
3070
+ )
3071
+
3072
+ jsii.create(self.__class__, self, [scope, id, props])
3073
+
3074
+ @jsii.member(jsii_name="isResourcePolicy")
3075
+ @builtins.classmethod
3076
+ def is_resource_policy(cls, x: typing.Any) -> builtins.bool:
3077
+ '''
3078
+ :param x: -
3079
+ '''
3080
+ if __debug__:
3081
+ type_hints = typing.get_type_hints(_typecheckingstub__b7b7c7ca19cd491541f3243572cf47da8425bab13c98330c2653c2302cfa6b53)
3082
+ check_type(argname="argument x", value=x, expected_type=type_hints["x"])
3083
+ return typing.cast(builtins.bool, jsii.sinvoke(cls, "isResourcePolicy", [x]))
3084
+
3085
+ @builtins.property
3086
+ @jsii.member(jsii_name="policyDocument")
3087
+ def policy_document(self) -> builtins.str:
3088
+ '''The JSON to use as the Resource-based Policy.'''
3089
+ return typing.cast(builtins.str, jsii.get(self, "policyDocument"))
3090
+
3091
+ @builtins.property
3092
+ @jsii.member(jsii_name="workspace")
3093
+ def workspace(self) -> "IWorkspace":
3094
+ '''The workspace to attach the policy to.'''
3095
+ return typing.cast("IWorkspace", jsii.get(self, "workspace"))
3096
+
3097
+
2204
3098
  class RuleGroupsNamespace(
2205
3099
  RuleGroupsNamespaceBase,
2206
3100
  metaclass=jsii.JSIIMeta,
@@ -2214,12 +3108,12 @@ class RuleGroupsNamespace(
2214
3108
 
2215
3109
  def __init__(
2216
3110
  self,
2217
- scope: _constructs_77d1e7e8.Construct,
3111
+ scope: "_constructs_77d1e7e8.Construct",
2218
3112
  id: builtins.str,
2219
3113
  *,
2220
3114
  data: builtins.str,
2221
3115
  name: builtins.str,
2222
- workspace: IWorkspace,
3116
+ workspace: "IWorkspace",
2223
3117
  ) -> None:
2224
3118
  '''
2225
3119
  :param scope: -
@@ -2240,14 +3134,14 @@ class RuleGroupsNamespace(
2240
3134
  @builtins.classmethod
2241
3135
  def from_rule_groups_namespace_attributes(
2242
3136
  cls,
2243
- scope: _constructs_77d1e7e8.Construct,
3137
+ scope: "_constructs_77d1e7e8.Construct",
2244
3138
  id: builtins.str,
2245
3139
  *,
2246
3140
  data: builtins.str,
2247
3141
  name: builtins.str,
2248
3142
  rule_groups_namespace_arn: builtins.str,
2249
- workspace: IWorkspace,
2250
- ) -> IRuleGroupsNamespace:
3143
+ workspace: "IWorkspace",
3144
+ ) -> "IRuleGroupsNamespace":
2251
3145
  '''
2252
3146
  :param scope: -
2253
3147
  :param id: -
@@ -2267,7 +3161,7 @@ class RuleGroupsNamespace(
2267
3161
  workspace=workspace,
2268
3162
  )
2269
3163
 
2270
- return typing.cast(IRuleGroupsNamespace, jsii.sinvoke(cls, "fromRuleGroupsNamespaceAttributes", [scope, id, attrs]))
3164
+ return typing.cast("IRuleGroupsNamespace", jsii.sinvoke(cls, "fromRuleGroupsNamespaceAttributes", [scope, id, attrs]))
2271
3165
 
2272
3166
  @jsii.member(jsii_name="isRuleGroupsNamespace")
2273
3167
  @builtins.classmethod
@@ -2300,9 +3194,9 @@ class RuleGroupsNamespace(
2300
3194
 
2301
3195
  @builtins.property
2302
3196
  @jsii.member(jsii_name="workspace")
2303
- def workspace(self) -> IWorkspace:
3197
+ def workspace(self) -> "IWorkspace":
2304
3198
  '''The workspace to add the rule groups namespace.'''
2305
- return typing.cast(IWorkspace, jsii.get(self, "workspace"))
3199
+ return typing.cast("IWorkspace", jsii.get(self, "workspace"))
2306
3200
 
2307
3201
 
2308
3202
  class Scraper(
@@ -2312,14 +3206,14 @@ class Scraper(
2312
3206
  ):
2313
3207
  def __init__(
2314
3208
  self,
2315
- scope: _constructs_77d1e7e8.Construct,
3209
+ scope: "_constructs_77d1e7e8.Construct",
2316
3210
  id: builtins.str,
2317
3211
  *,
2318
- destination: typing.Union[Destination, typing.Dict[builtins.str, typing.Any]],
2319
- scrape_configuration: typing.Union[ScrapeConfiguration, typing.Dict[builtins.str, typing.Any]],
2320
- source: typing.Union[Source, typing.Dict[builtins.str, typing.Any]],
3212
+ destination: typing.Union["Destination", typing.Dict[builtins.str, typing.Any]],
3213
+ scrape_configuration: typing.Union["ScrapeConfiguration", typing.Dict[builtins.str, typing.Any]],
3214
+ source: typing.Union["Source", typing.Dict[builtins.str, typing.Any]],
2321
3215
  alias: typing.Optional[builtins.str] = None,
2322
- role_configuration: typing.Optional[typing.Union[RoleConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
3216
+ role_configuration: typing.Optional[typing.Union["RoleConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
2323
3217
  ) -> None:
2324
3218
  '''
2325
3219
  :param scope: -
@@ -2348,16 +3242,16 @@ class Scraper(
2348
3242
  @builtins.classmethod
2349
3243
  def from_scraper_attributes(
2350
3244
  cls,
2351
- scope: _constructs_77d1e7e8.Construct,
3245
+ scope: "_constructs_77d1e7e8.Construct",
2352
3246
  id: builtins.str,
2353
3247
  *,
2354
- destination: typing.Union[Destination, typing.Dict[builtins.str, typing.Any]],
2355
- scrape_configuration: typing.Union[ScrapeConfiguration, typing.Dict[builtins.str, typing.Any]],
3248
+ destination: typing.Union["Destination", typing.Dict[builtins.str, typing.Any]],
3249
+ scrape_configuration: typing.Union["ScrapeConfiguration", typing.Dict[builtins.str, typing.Any]],
2356
3250
  scraper_arn: builtins.str,
2357
- source: typing.Union[Source, typing.Dict[builtins.str, typing.Any]],
3251
+ source: typing.Union["Source", typing.Dict[builtins.str, typing.Any]],
2358
3252
  alias: typing.Optional[builtins.str] = None,
2359
- role_configuration: typing.Optional[typing.Union[RoleConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2360
- ) -> IScraper:
3253
+ role_configuration: typing.Optional[typing.Union["RoleConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
3254
+ ) -> "IScraper":
2361
3255
  '''
2362
3256
  :param scope: -
2363
3257
  :param id: -
@@ -2381,7 +3275,7 @@ class Scraper(
2381
3275
  role_configuration=role_configuration,
2382
3276
  )
2383
3277
 
2384
- return typing.cast(IScraper, jsii.sinvoke(cls, "fromScraperAttributes", [scope, id, attrs]))
3278
+ return typing.cast("IScraper", jsii.sinvoke(cls, "fromScraperAttributes", [scope, id, attrs]))
2385
3279
 
2386
3280
  @jsii.member(jsii_name="isScraper")
2387
3281
  @builtins.classmethod
@@ -2396,15 +3290,15 @@ class Scraper(
2396
3290
 
2397
3291
  @builtins.property
2398
3292
  @jsii.member(jsii_name="destination")
2399
- def destination(self) -> Destination:
3293
+ def destination(self) -> "Destination":
2400
3294
  '''The Amazon Managed Service for Prometheus workspace the scraper sends metrics to.'''
2401
- return typing.cast(Destination, jsii.get(self, "destination"))
3295
+ return typing.cast("Destination", jsii.get(self, "destination"))
2402
3296
 
2403
3297
  @builtins.property
2404
3298
  @jsii.member(jsii_name="scrapeConfiguration")
2405
- def scrape_configuration(self) -> ScrapeConfiguration:
3299
+ def scrape_configuration(self) -> "ScrapeConfiguration":
2406
3300
  '''The configuration in use by the scraper.'''
2407
- return typing.cast(ScrapeConfiguration, jsii.get(self, "scrapeConfiguration"))
3301
+ return typing.cast("ScrapeConfiguration", jsii.get(self, "scrapeConfiguration"))
2408
3302
 
2409
3303
  @builtins.property
2410
3304
  @jsii.member(jsii_name="scraperArn")
@@ -2420,9 +3314,9 @@ class Scraper(
2420
3314
 
2421
3315
  @builtins.property
2422
3316
  @jsii.member(jsii_name="source")
2423
- def source(self) -> Source:
3317
+ def source(self) -> "Source":
2424
3318
  '''The Amazon EKS cluster from which the scraper collects metrics.'''
2425
- return typing.cast(Source, jsii.get(self, "source"))
3319
+ return typing.cast("Source", jsii.get(self, "source"))
2426
3320
 
2427
3321
  @builtins.property
2428
3322
  @jsii.member(jsii_name="alias")
@@ -2432,9 +3326,9 @@ class Scraper(
2432
3326
 
2433
3327
  @builtins.property
2434
3328
  @jsii.member(jsii_name="roleConfiguration")
2435
- def role_configuration(self) -> typing.Optional[RoleConfiguration]:
3329
+ def role_configuration(self) -> typing.Optional["RoleConfiguration"]:
2436
3330
  '''The role configuration in an Amazon Managed Service for Prometheus scraper.'''
2437
- return typing.cast(typing.Optional[RoleConfiguration], jsii.get(self, "roleConfiguration"))
3331
+ return typing.cast(typing.Optional["RoleConfiguration"], jsii.get(self, "roleConfiguration"))
2438
3332
 
2439
3333
 
2440
3334
  class Workspace(
@@ -2444,15 +3338,15 @@ class Workspace(
2444
3338
  ):
2445
3339
  def __init__(
2446
3340
  self,
2447
- scope: _constructs_77d1e7e8.Construct,
3341
+ scope: "_constructs_77d1e7e8.Construct",
2448
3342
  id: builtins.str,
2449
3343
  *,
2450
3344
  alert_manager_definition: typing.Optional[builtins.str] = None,
2451
3345
  alias: typing.Optional[builtins.str] = None,
2452
- kms_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey] = None,
2453
- logging_configuration: typing.Optional[typing.Union[LoggingConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2454
- query_logging_configuration: typing.Optional[typing.Union[QueryLoggingConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2455
- workspace_configuration: typing.Optional[typing.Union[WorkspaceConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
3346
+ kms_key: typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"] = None,
3347
+ logging_configuration: typing.Optional[typing.Union["LoggingConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
3348
+ query_logging_configuration: typing.Optional[typing.Union["QueryLoggingConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
3349
+ workspace_configuration: typing.Optional[typing.Union["WorkspaceConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
2456
3350
  ) -> None:
2457
3351
  '''
2458
3352
  :param scope: -
@@ -2483,17 +3377,17 @@ class Workspace(
2483
3377
  @builtins.classmethod
2484
3378
  def from_workspace_attributes(
2485
3379
  cls,
2486
- scope: _constructs_77d1e7e8.Construct,
3380
+ scope: "_constructs_77d1e7e8.Construct",
2487
3381
  id: builtins.str,
2488
3382
  *,
2489
3383
  workspace_arn: builtins.str,
2490
3384
  alert_manager_definition: typing.Optional[builtins.str] = None,
2491
3385
  alias: typing.Optional[builtins.str] = None,
2492
- kms_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey] = None,
2493
- logging_configuration: typing.Optional[typing.Union[LoggingConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2494
- query_logging_configuration: typing.Optional[typing.Union[QueryLoggingConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2495
- workspace_configuration: typing.Optional[typing.Union[WorkspaceConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2496
- ) -> IWorkspace:
3386
+ kms_key: typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"] = None,
3387
+ logging_configuration: typing.Optional[typing.Union["LoggingConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
3388
+ query_logging_configuration: typing.Optional[typing.Union["QueryLoggingConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
3389
+ workspace_configuration: typing.Optional[typing.Union["WorkspaceConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
3390
+ ) -> "IWorkspace":
2497
3391
  '''
2498
3392
  :param scope: -
2499
3393
  :param id: -
@@ -2519,7 +3413,7 @@ class Workspace(
2519
3413
  workspace_configuration=workspace_configuration,
2520
3414
  )
2521
3415
 
2522
- return typing.cast(IWorkspace, jsii.sinvoke(cls, "fromWorkspaceAttributes", [scope, id, attrs]))
3416
+ return typing.cast("IWorkspace", jsii.sinvoke(cls, "fromWorkspaceAttributes", [scope, id, attrs]))
2523
3417
 
2524
3418
  @jsii.member(jsii_name="isWorkspace")
2525
3419
  @builtins.classmethod
@@ -2568,47 +3462,170 @@ class Workspace(
2568
3462
 
2569
3463
  @builtins.property
2570
3464
  @jsii.member(jsii_name="kmsKey")
2571
- def kms_key(self) -> typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey]:
3465
+ def kms_key(self) -> typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"]:
2572
3466
  '''The customer managed AWS KMS key to use for encrypting data within your workspace.'''
2573
- return typing.cast(typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey], jsii.get(self, "kmsKey"))
3467
+ return typing.cast(typing.Optional["_aws_cdk_aws_kms_ceddda9d.IKey"], jsii.get(self, "kmsKey"))
2574
3468
 
2575
3469
  @builtins.property
2576
3470
  @jsii.member(jsii_name="loggingConfiguration")
2577
- def logging_configuration(self) -> typing.Optional[LoggingConfiguration]:
3471
+ def logging_configuration(self) -> typing.Optional["LoggingConfiguration"]:
2578
3472
  '''Contains information about the current rules and alerting logging configuration for the workspace.
2579
3473
 
2580
3474
  Note: These logging configurations are only for rules and alerting logs.
2581
3475
  '''
2582
- return typing.cast(typing.Optional[LoggingConfiguration], jsii.get(self, "loggingConfiguration"))
3476
+ return typing.cast(typing.Optional["LoggingConfiguration"], jsii.get(self, "loggingConfiguration"))
2583
3477
 
2584
3478
  @builtins.property
2585
3479
  @jsii.member(jsii_name="queryLoggingConfiguration")
2586
- def query_logging_configuration(self) -> typing.Optional[QueryLoggingConfiguration]:
3480
+ def query_logging_configuration(
3481
+ self,
3482
+ ) -> typing.Optional["QueryLoggingConfiguration"]:
2587
3483
  '''The definition of logging configuration in an Amazon Managed Service for Prometheus workspace.'''
2588
- return typing.cast(typing.Optional[QueryLoggingConfiguration], jsii.get(self, "queryLoggingConfiguration"))
3484
+ return typing.cast(typing.Optional["QueryLoggingConfiguration"], jsii.get(self, "queryLoggingConfiguration"))
2589
3485
 
2590
3486
  @builtins.property
2591
3487
  @jsii.member(jsii_name="workspaceConfiguration")
2592
- def workspace_configuration(self) -> typing.Optional[WorkspaceConfiguration]:
3488
+ def workspace_configuration(self) -> typing.Optional["WorkspaceConfiguration"]:
2593
3489
  '''Use this structure to define label sets and the ingestion limits for time series that match label sets, and to specify the retention period of the workspace.'''
2594
- return typing.cast(typing.Optional[WorkspaceConfiguration], jsii.get(self, "workspaceConfiguration"))
3490
+ return typing.cast(typing.Optional["WorkspaceConfiguration"], jsii.get(self, "workspaceConfiguration"))
3491
+
3492
+
3493
+ class AnomalyDetector(
3494
+ AnomalyDetectorBase,
3495
+ metaclass=jsii.JSIIMeta,
3496
+ jsii_type="@robhan-cdk-lib/aws_aps.AnomalyDetector",
3497
+ ):
3498
+ def __init__(
3499
+ self,
3500
+ scope: "_constructs_77d1e7e8.Construct",
3501
+ id: builtins.str,
3502
+ *,
3503
+ alias: builtins.str,
3504
+ configuration: typing.Union["AnomalyDetectorConfiguration", typing.Dict[builtins.str, typing.Any]],
3505
+ workspace: "IWorkspace",
3506
+ evaluation_interval_in_seconds: typing.Optional[jsii.Number] = None,
3507
+ labels: typing.Optional[typing.Sequence[typing.Union["Label", typing.Dict[builtins.str, typing.Any]]]] = None,
3508
+ missing_data_action: typing.Optional[typing.Union["MissingDataAction", typing.Dict[builtins.str, typing.Any]]] = None,
3509
+ ) -> None:
3510
+ '''
3511
+ :param scope: -
3512
+ :param id: -
3513
+ :param alias: The user-friendly name of the anomaly detector. 1 to 128 characters length.
3514
+ :param configuration: The algorithm configuration of the anomaly detector.
3515
+ :param workspace: An Amazon Managed Service for Prometheus workspace is a logical and isolated Prometheus server dedicated to ingesting, storing, and querying your Prometheus-compatible metrics.
3516
+ :param evaluation_interval_in_seconds: The frequency, in seconds, at which the anomaly detector evaluates metrics. Minimum value of 30. Maximum value of 86400.
3517
+ :param labels: The Amazon Managed Service for Prometheus metric labels associated with the anomaly detector. Map Entries: Minimum number of 0 items. Maximum number of 140 items. Key Length Constraints: Minimum length of 1. Maximum length of 7168. Key Pattern: (?!__)[a-zA-Z_][a-zA-Z0-9_]* Value Length Constraints: Minimum length of 1. Maximum length of 7168.
3518
+ :param missing_data_action: The action taken when data is missing during evaluation.
3519
+ '''
3520
+ if __debug__:
3521
+ type_hints = typing.get_type_hints(_typecheckingstub__8e9cf951baecb48090e806ba79cfa6dec111ec6ec0305bb1c72f18f7e5a6cc4f)
3522
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3523
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
3524
+ props = AnomalyDetectorProps(
3525
+ alias=alias,
3526
+ configuration=configuration,
3527
+ workspace=workspace,
3528
+ evaluation_interval_in_seconds=evaluation_interval_in_seconds,
3529
+ labels=labels,
3530
+ missing_data_action=missing_data_action,
3531
+ )
3532
+
3533
+ jsii.create(self.__class__, self, [scope, id, props])
3534
+
3535
+ @jsii.member(jsii_name="isAnomalyDetector")
3536
+ @builtins.classmethod
3537
+ def is_anomaly_detector(cls, x: typing.Any) -> builtins.bool:
3538
+ '''
3539
+ :param x: -
3540
+ '''
3541
+ if __debug__:
3542
+ type_hints = typing.get_type_hints(_typecheckingstub__c5a92d8e3a483a119470088f310c1ea46fcbcafd285ccfeed903da2461af3188)
3543
+ check_type(argname="argument x", value=x, expected_type=type_hints["x"])
3544
+ return typing.cast(builtins.bool, jsii.sinvoke(cls, "isAnomalyDetector", [x]))
3545
+
3546
+ @builtins.property
3547
+ @jsii.member(jsii_name="alias")
3548
+ def alias(self) -> builtins.str:
3549
+ '''The user-friendly name of the anomaly detector. 1 to 64 characters length.
3550
+
3551
+ Minimum length of 1. Maximum length of 64.
3552
+ Pattern: [0-9A-Za-z][-.0-9A-Z_a-z]*
3553
+ '''
3554
+ return typing.cast(builtins.str, jsii.get(self, "alias"))
3555
+
3556
+ @builtins.property
3557
+ @jsii.member(jsii_name="anomalyDetectorArn")
3558
+ def anomaly_detector_arn(self) -> builtins.str:
3559
+ '''The Amazon Resource Name (ARN) of the anomaly detector.'''
3560
+ return typing.cast(builtins.str, jsii.get(self, "anomalyDetectorArn"))
3561
+
3562
+ @builtins.property
3563
+ @jsii.member(jsii_name="configuration")
3564
+ def configuration(self) -> "AnomalyDetectorConfiguration":
3565
+ '''The algorithm configuration of the anomaly detector.'''
3566
+ return typing.cast("AnomalyDetectorConfiguration", jsii.get(self, "configuration"))
3567
+
3568
+ @builtins.property
3569
+ @jsii.member(jsii_name="workspace")
3570
+ def workspace(self) -> "IWorkspace":
3571
+ '''An Amazon Managed Service for Prometheus workspace is a logical and isolated Prometheus server dedicated to ingesting, storing, and querying your Prometheus-compatible metrics.'''
3572
+ return typing.cast("IWorkspace", jsii.get(self, "workspace"))
3573
+
3574
+ @builtins.property
3575
+ @jsii.member(jsii_name="evaluationIntervalInSeconds")
3576
+ def evaluation_interval_in_seconds(self) -> typing.Optional[jsii.Number]:
3577
+ '''The frequency, in seconds, at which the anomaly detector evaluates metrics.
3578
+
3579
+ Minimum value of 30. Maximum value of 86400.
3580
+ '''
3581
+ return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "evaluationIntervalInSeconds"))
3582
+
3583
+ @builtins.property
3584
+ @jsii.member(jsii_name="labels")
3585
+ def labels(self) -> typing.Optional[typing.List["Label"]]:
3586
+ '''The Amazon Managed Service for Prometheus metric labels associated with the anomaly detector.
3587
+
3588
+ Map Entries: Minimum number of 0 items. Maximum number of 140 items.
3589
+ Key Length Constraints: Minimum length of 1. Maximum length of 7168.
3590
+ Key Pattern: (?!__)[a-zA-Z_][a-zA-Z0-9_]*
3591
+ Value Length Constraints: Minimum length of 1. Maximum length of 7168.
3592
+ '''
3593
+ return typing.cast(typing.Optional[typing.List["Label"]], jsii.get(self, "labels"))
3594
+
3595
+ @builtins.property
3596
+ @jsii.member(jsii_name="missingDataAction")
3597
+ def missing_data_action(self) -> typing.Optional["MissingDataAction"]:
3598
+ '''The action taken when data is missing during evaluation.'''
3599
+ return typing.cast(typing.Optional["MissingDataAction"], jsii.get(self, "missingDataAction"))
2595
3600
 
2596
3601
 
2597
3602
  __all__ = [
2598
3603
  "AmpConfiguration",
3604
+ "AnomalyDetector",
3605
+ "AnomalyDetectorBase",
3606
+ "AnomalyDetectorConfiguration",
3607
+ "AnomalyDetectorProps",
2599
3608
  "CloudWatchLogDestination",
2600
3609
  "Destination",
2601
3610
  "EksConfiguration",
3611
+ "IAnomalyDetector",
3612
+ "IResourcePolicy",
2602
3613
  "IRuleGroupsNamespace",
2603
3614
  "IScraper",
2604
3615
  "IWorkspace",
3616
+ "IgnoreNearExpected",
2605
3617
  "Label",
2606
3618
  "LimitsPerLabelSet",
2607
3619
  "LimitsPerLabelSetEntry",
2608
3620
  "LoggingConfiguration",
2609
3621
  "LoggingDestination",
2610
3622
  "LoggingFilter",
3623
+ "MissingDataAction",
2611
3624
  "QueryLoggingConfiguration",
3625
+ "RandomCutForestConfiguration",
3626
+ "ResourcePolicy",
3627
+ "ResourcePolicyBase",
3628
+ "ResourcePolicyProps",
2612
3629
  "RoleConfiguration",
2613
3630
  "RuleGroupsNamespace",
2614
3631
  "RuleGroupsNamespaceAttributes",
@@ -2636,6 +3653,25 @@ def _typecheckingstub__9b57f1ed441699407024d3a67f6d0ecf1fd33175a38d466e4e90e1909
2636
3653
  """Type checking stubs"""
2637
3654
  pass
2638
3655
 
3656
+ def _typecheckingstub__488e50421526d1e316a7bd2f186eccb1fc4bf1daba066e779c147e9e9dbc747a(
3657
+ *,
3658
+ random_cut_forest: typing.Union[RandomCutForestConfiguration, typing.Dict[builtins.str, typing.Any]],
3659
+ ) -> None:
3660
+ """Type checking stubs"""
3661
+ pass
3662
+
3663
+ def _typecheckingstub__d73bc4f90dcbc90f45d5d011fc423d2638eb9cfe65810e23594184c620ce38aa(
3664
+ *,
3665
+ alias: builtins.str,
3666
+ configuration: typing.Union[AnomalyDetectorConfiguration, typing.Dict[builtins.str, typing.Any]],
3667
+ workspace: IWorkspace,
3668
+ evaluation_interval_in_seconds: typing.Optional[jsii.Number] = None,
3669
+ labels: typing.Optional[typing.Sequence[typing.Union[Label, typing.Dict[builtins.str, typing.Any]]]] = None,
3670
+ missing_data_action: typing.Optional[typing.Union[MissingDataAction, typing.Dict[builtins.str, typing.Any]]] = None,
3671
+ ) -> None:
3672
+ """Type checking stubs"""
3673
+ pass
3674
+
2639
3675
  def _typecheckingstub__f4c8d116f44cd0ce0c010e39612b1f9f3d190e82d3f5f4c0372ae03517a31a79(
2640
3676
  *,
2641
3677
  log_group: _aws_cdk_aws_logs_ceddda9d.ILogGroup,
@@ -2659,6 +3695,14 @@ def _typecheckingstub__9e3526038ce65e3714e7b69cac8f1dac03b300f7ee7b6eb0a81f578bb
2659
3695
  """Type checking stubs"""
2660
3696
  pass
2661
3697
 
3698
+ def _typecheckingstub__fa12ec68028f74d5d8f1d96a0b99090659c404c86bd0ec936014ab264467ca22(
3699
+ *,
3700
+ amount: typing.Optional[jsii.Number] = None,
3701
+ ratio: typing.Optional[jsii.Number] = None,
3702
+ ) -> None:
3703
+ """Type checking stubs"""
3704
+ pass
3705
+
2662
3706
  def _typecheckingstub__5c797aa51820ba19e3974b523e246d357e3b44ff0bc743b0f1171b5ae9bebdea(
2663
3707
  *,
2664
3708
  name: builtins.str,
@@ -2704,6 +3748,14 @@ def _typecheckingstub__c7beea1121128e5f35f0720b90b21713abba4beef8755e891bbf87c2a
2704
3748
  """Type checking stubs"""
2705
3749
  pass
2706
3750
 
3751
+ def _typecheckingstub__4de31fdb80b9646037b68b88ae1dae6b46be704ab84a3c61100b29e91fc959c2(
3752
+ *,
3753
+ mark_as_anomaly: typing.Optional[builtins.bool] = None,
3754
+ skip: typing.Optional[builtins.bool] = None,
3755
+ ) -> None:
3756
+ """Type checking stubs"""
3757
+ pass
3758
+
2707
3759
  def _typecheckingstub__092820c29e1435155b193e5488fd2841dcea5141110ab984fa14a237e2f4a4ae(
2708
3760
  *,
2709
3761
  destinations: typing.Sequence[typing.Union[LoggingDestination, typing.Dict[builtins.str, typing.Any]]],
@@ -2711,6 +3763,37 @@ def _typecheckingstub__092820c29e1435155b193e5488fd2841dcea5141110ab984fa14a237e
2711
3763
  """Type checking stubs"""
2712
3764
  pass
2713
3765
 
3766
+ def _typecheckingstub__c44dedd708a153df90c20f2738e66c34f510bb7ed036637ccb7a1bde1f3394b8(
3767
+ *,
3768
+ query: builtins.str,
3769
+ ignore_near_expected_from_above: typing.Optional[typing.Union[IgnoreNearExpected, typing.Dict[builtins.str, typing.Any]]] = None,
3770
+ ignore_near_expected_from_below: typing.Optional[typing.Union[IgnoreNearExpected, typing.Dict[builtins.str, typing.Any]]] = None,
3771
+ sample_size: typing.Optional[jsii.Number] = None,
3772
+ shingle_size: typing.Optional[jsii.Number] = None,
3773
+ ) -> None:
3774
+ """Type checking stubs"""
3775
+ pass
3776
+
3777
+ def _typecheckingstub__1705a6716ddb826f74670d4b351789ae363cbbc6a4fda6389f3fe972e4ad37e8(
3778
+ scope: _constructs_77d1e7e8.Construct,
3779
+ id: builtins.str,
3780
+ *,
3781
+ account: typing.Optional[builtins.str] = None,
3782
+ environment_from_arn: typing.Optional[builtins.str] = None,
3783
+ physical_name: typing.Optional[builtins.str] = None,
3784
+ region: typing.Optional[builtins.str] = None,
3785
+ ) -> None:
3786
+ """Type checking stubs"""
3787
+ pass
3788
+
3789
+ def _typecheckingstub__e64bdaac8096e1f570bf3bdd34320a336689a41b7fadad148bbe26533f682a36(
3790
+ *,
3791
+ policy_document: builtins.str,
3792
+ workspace: IWorkspace,
3793
+ ) -> None:
3794
+ """Type checking stubs"""
3795
+ pass
3796
+
2714
3797
  def _typecheckingstub__e96c135bdcece9823caf073421082af151c59b6d52a5918bb38689bbca7ab2a3(
2715
3798
  *,
2716
3799
  source_role: typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole] = None,
@@ -2856,6 +3939,34 @@ def _typecheckingstub__204cf0cc18e2fd2c643a33020d11a1d61cbfe8a2abd5cd5bda6a222e0
2856
3939
  """Type checking stubs"""
2857
3940
  pass
2858
3941
 
3942
+ def _typecheckingstub__763ce8aef513d695a9ea5e157a4299be537296b8475d4cac315b4f595f7d0536(
3943
+ scope: _constructs_77d1e7e8.Construct,
3944
+ id: builtins.str,
3945
+ *,
3946
+ account: typing.Optional[builtins.str] = None,
3947
+ environment_from_arn: typing.Optional[builtins.str] = None,
3948
+ physical_name: typing.Optional[builtins.str] = None,
3949
+ region: typing.Optional[builtins.str] = None,
3950
+ ) -> None:
3951
+ """Type checking stubs"""
3952
+ pass
3953
+
3954
+ def _typecheckingstub__152018d2f86ee27c3ac817bf409dc2fae4034315290b87fd5d6c906625b633d3(
3955
+ scope: _constructs_77d1e7e8.Construct,
3956
+ id: builtins.str,
3957
+ *,
3958
+ policy_document: builtins.str,
3959
+ workspace: IWorkspace,
3960
+ ) -> None:
3961
+ """Type checking stubs"""
3962
+ pass
3963
+
3964
+ def _typecheckingstub__b7b7c7ca19cd491541f3243572cf47da8425bab13c98330c2653c2302cfa6b53(
3965
+ x: typing.Any,
3966
+ ) -> None:
3967
+ """Type checking stubs"""
3968
+ pass
3969
+
2859
3970
  def _typecheckingstub__6d20ad42e4be3f2ea717b0a2a018087c9c8a4437ea677e47f420ba1b0b9d445d(
2860
3971
  scope: _constructs_77d1e7e8.Construct,
2861
3972
  id: builtins.str,
@@ -2952,3 +4063,26 @@ def _typecheckingstub__fe05f7c3509dfbf0a171e57ba19ea445d159aeb564d5e5a1ee5815df7
2952
4063
  ) -> None:
2953
4064
  """Type checking stubs"""
2954
4065
  pass
4066
+
4067
+ def _typecheckingstub__8e9cf951baecb48090e806ba79cfa6dec111ec6ec0305bb1c72f18f7e5a6cc4f(
4068
+ scope: _constructs_77d1e7e8.Construct,
4069
+ id: builtins.str,
4070
+ *,
4071
+ alias: builtins.str,
4072
+ configuration: typing.Union[AnomalyDetectorConfiguration, typing.Dict[builtins.str, typing.Any]],
4073
+ workspace: IWorkspace,
4074
+ evaluation_interval_in_seconds: typing.Optional[jsii.Number] = None,
4075
+ labels: typing.Optional[typing.Sequence[typing.Union[Label, typing.Dict[builtins.str, typing.Any]]]] = None,
4076
+ missing_data_action: typing.Optional[typing.Union[MissingDataAction, typing.Dict[builtins.str, typing.Any]]] = None,
4077
+ ) -> None:
4078
+ """Type checking stubs"""
4079
+ pass
4080
+
4081
+ def _typecheckingstub__c5a92d8e3a483a119470088f310c1ea46fcbcafd285ccfeed903da2461af3188(
4082
+ x: typing.Any,
4083
+ ) -> None:
4084
+ """Type checking stubs"""
4085
+ pass
4086
+
4087
+ for cls in [IAnomalyDetector, IResourcePolicy, IRuleGroupsNamespace, IScraper, IWorkspace]:
4088
+ typing.cast(typing.Any, cls).__protocol_attrs__ = typing.cast(typing.Any, cls).__protocol_attrs__ - set(['__jsii_proxy_class__', '__jsii_type__'])