@cdklabs/multi-az-observability 0.0.1-alpha.33 → 0.0.1-alpha.35

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.
Files changed (31) hide show
  1. package/.jsii +42 -27
  2. package/API.md +44 -28
  3. package/lib/alarmsandrules/IOperationAlarmsAndRules.d.ts +6 -5
  4. package/lib/alarmsandrules/IOperationAlarmsAndRules.js +1 -1
  5. package/lib/alarmsandrules/IServiceAlarmsAndRules.d.ts +21 -9
  6. package/lib/alarmsandrules/IServiceAlarmsAndRules.js +1 -1
  7. package/lib/alarmsandrules/OperationAlarmsAndRules.d.ts +5 -4
  8. package/lib/alarmsandrules/OperationAlarmsAndRules.js +11 -11
  9. package/lib/alarmsandrules/ServiceAlarmsAndRules.d.ts +19 -13
  10. package/lib/alarmsandrules/ServiceAlarmsAndRules.js +30 -154
  11. package/lib/azmapper/AvailabilityZoneMapper.js +1 -1
  12. package/lib/basic_observability/BasicServiceMultiAZObservability.js +1 -1
  13. package/lib/canaries/src/canary.zip +0 -0
  14. package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +10 -10
  15. package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.d.ts +1 -0
  16. package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +251 -22
  17. package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.d.ts +4 -8
  18. package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.js +1 -1
  19. package/lib/monitoring/src/monitoring-layer.zip +0 -0
  20. package/lib/outlier-detection/src/outlier-detection.zip +0 -0
  21. package/lib/outlier-detection/src/scipy-layer.zip +0 -0
  22. package/lib/services/CanaryMetrics.js +1 -1
  23. package/lib/services/CanaryTestMetricsOverride.js +1 -1
  24. package/lib/services/ContributorInsightRuleDetails.js +1 -1
  25. package/lib/services/InstrumentedServiceMultiAZObservability.js +4 -5
  26. package/lib/services/Operation.js +1 -1
  27. package/lib/services/OperationMetricDetails.js +1 -1
  28. package/lib/services/Service.js +1 -1
  29. package/lib/services/ServiceMetricDetails.js +1 -1
  30. package/lib/services/props/MetricDimensions.js +1 -1
  31. package/package.json +1 -1
package/.jsii CHANGED
@@ -7342,13 +7342,28 @@
7342
7342
  "abstract": true,
7343
7343
  "docs": {
7344
7344
  "stability": "experimental",
7345
- "summary": "An alarm for fault count exceeding a regional threshold for all critical operations."
7345
+ "summary": "An alarm indicating there is availability or latency impact on a critical operation that is not scoped to a single availability zone as measured by the server-side and/or canary (if present)."
7346
7346
  },
7347
7347
  "locationInModule": {
7348
7348
  "filename": "src/alarmsandrules/IServiceAlarmsAndRules.ts",
7349
- "line": 43
7349
+ "line": 40
7350
+ },
7351
+ "name": "regionalImpactAlarm",
7352
+ "type": {
7353
+ "fqn": "aws-cdk-lib.aws_cloudwatch.IAlarm"
7354
+ }
7355
+ },
7356
+ {
7357
+ "abstract": true,
7358
+ "docs": {
7359
+ "stability": "experimental",
7360
+ "summary": "An alarm indicating there is availability or latency impact on a critical operation that is not scoped to a single availability zone as measured by the server-side."
7361
+ },
7362
+ "locationInModule": {
7363
+ "filename": "src/alarmsandrules/IServiceAlarmsAndRules.ts",
7364
+ "line": 46
7350
7365
  },
7351
- "name": "regionalFaultCountServerSideAlarm",
7366
+ "name": "regionalServerSideImpactAlarm",
7352
7367
  "type": {
7353
7368
  "fqn": "aws-cdk-lib.aws_cloudwatch.IAlarm"
7354
7369
  }
@@ -7368,6 +7383,22 @@
7368
7383
  "fqn": "@cdklabs/multi-az-observability.IService"
7369
7384
  }
7370
7385
  },
7386
+ {
7387
+ "abstract": true,
7388
+ "docs": {
7389
+ "remarks": "It triggers\non any impact to a critical operation either zonally scoped or regionally scoped.",
7390
+ "stability": "experimental",
7391
+ "summary": "This is the top level alarm you should tie notifications/paging/alerting to."
7392
+ },
7393
+ "locationInModule": {
7394
+ "filename": "src/alarmsandrules/IServiceAlarmsAndRules.ts",
7395
+ "line": 52
7396
+ },
7397
+ "name": "serviceImpactAlarm",
7398
+ "type": {
7399
+ "fqn": "aws-cdk-lib.aws_cloudwatch.IAlarm"
7400
+ }
7401
+ },
7371
7402
  {
7372
7403
  "abstract": true,
7373
7404
  "docs": {
@@ -7385,14 +7416,14 @@
7385
7416
  "elementtype": {
7386
7417
  "fqn": "aws-cdk-lib.aws_cloudwatch.IAlarm"
7387
7418
  },
7388
- "kind": "array"
7419
+ "kind": "map"
7389
7420
  }
7390
7421
  }
7391
7422
  },
7392
7423
  {
7393
7424
  "abstract": true,
7394
7425
  "docs": {
7395
- "remarks": "There is 1 alarm per AZ that triggers\non availability or atency impact to any critical operation in that AZ. These are useful\nfor deployment monitoring to not inadvertently fail when a canary can't contact an AZ\nduring a deployment.",
7426
+ "remarks": "There is 1 alarm per AZ that triggers\non availability or latency impact to any critical operation in that AZ. These are useful\nfor deployment monitoring to not inadvertently fail when a canary can't contact an AZ\nduring a deployment.",
7396
7427
  "stability": "experimental",
7397
7428
  "summary": "The zonal server-side isolated impact alarms."
7398
7429
  },
@@ -7406,7 +7437,7 @@
7406
7437
  "elementtype": {
7407
7438
  "fqn": "aws-cdk-lib.aws_cloudwatch.IAlarm"
7408
7439
  },
7409
- "kind": "array"
7440
+ "kind": "map"
7410
7441
  }
7411
7442
  }
7412
7443
  },
@@ -7414,29 +7445,13 @@
7414
7445
  "abstract": true,
7415
7446
  "docs": {
7416
7447
  "stability": "experimental",
7417
- "summary": "An alarm for regional availability impact of any critical operation as measured by the canary."
7448
+ "summary": "An alarm indicating the canary has discovered an availability or latency impact on a critical operation while testing the regional endpoint."
7418
7449
  },
7419
7450
  "locationInModule": {
7420
7451
  "filename": "src/alarmsandrules/IServiceAlarmsAndRules.ts",
7421
- "line": 38
7422
- },
7423
- "name": "regionalAvailabilityCanaryAlarm",
7424
- "optional": true,
7425
- "type": {
7426
- "fqn": "aws-cdk-lib.aws_cloudwatch.IAlarm"
7427
- }
7428
- },
7429
- {
7430
- "abstract": true,
7431
- "docs": {
7432
- "stability": "experimental",
7433
- "summary": "An alarm for regional availability or latency impact of any critical operation as measured by the canary."
7434
- },
7435
- "locationInModule": {
7436
- "filename": "src/alarmsandrules/IServiceAlarmsAndRules.ts",
7437
- "line": 33
7452
+ "line": 34
7438
7453
  },
7439
- "name": "regionalAvailabilityOrLatencyCanaryAlarm",
7454
+ "name": "regionalCanaryAlarm",
7440
7455
  "optional": true,
7441
7456
  "type": {
7442
7457
  "fqn": "aws-cdk-lib.aws_cloudwatch.IAlarm"
@@ -10387,6 +10402,6 @@
10387
10402
  "symbolId": "src/services/props/ServiceProps:ServiceProps"
10388
10403
  }
10389
10404
  },
10390
- "version": "0.0.1-alpha.33",
10391
- "fingerprint": "c4ZKaskAM4zzFeSpKd2DpsRHahLvgQq+jqmz/LjNGLA="
10405
+ "version": "0.0.1-alpha.35",
10406
+ "fingerprint": "NQhLG+gPYcxMxShj535/ECq/3Ovu+VAXeaTMUZaJSZI="
10392
10407
  }
package/API.md CHANGED
@@ -4893,24 +4893,37 @@ Service level alarms and rules using critical operations.
4893
4893
 
4894
4894
  | **Name** | **Type** | **Description** |
4895
4895
  | --- | --- | --- |
4896
- | <code><a href="#@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.regionalFaultCountServerSideAlarm">regionalFaultCountServerSideAlarm</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarm</code> | An alarm for fault count exceeding a regional threshold for all critical operations. |
4896
+ | <code><a href="#@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.regionalImpactAlarm">regionalImpactAlarm</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarm</code> | An alarm indicating there is availability or latency impact on a critical operation that is not scoped to a single availability zone as measured by the server-side and/or canary (if present). |
4897
+ | <code><a href="#@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.regionalServerSideImpactAlarm">regionalServerSideImpactAlarm</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarm</code> | An alarm indicating there is availability or latency impact on a critical operation that is not scoped to a single availability zone as measured by the server-side. |
4897
4898
  | <code><a href="#@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.service">service</a></code> | <code><a href="#@cdklabs/multi-az-observability.IService">IService</a></code> | The service these alarms and rules are for. |
4898
- | <code><a href="#@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.zonalAggregateIsolatedImpactAlarms">zonalAggregateIsolatedImpactAlarms</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarm[]</code> | The zonal aggregate isolated impact alarms. |
4899
- | <code><a href="#@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.zonalServerSideIsolatedImpactAlarms">zonalServerSideIsolatedImpactAlarms</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarm[]</code> | The zonal server-side isolated impact alarms. |
4900
- | <code><a href="#@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.regionalAvailabilityCanaryAlarm">regionalAvailabilityCanaryAlarm</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarm</code> | An alarm for regional availability impact of any critical operation as measured by the canary. |
4901
- | <code><a href="#@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.regionalAvailabilityOrLatencyCanaryAlarm">regionalAvailabilityOrLatencyCanaryAlarm</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarm</code> | An alarm for regional availability or latency impact of any critical operation as measured by the canary. |
4899
+ | <code><a href="#@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.serviceImpactAlarm">serviceImpactAlarm</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarm</code> | This is the top level alarm you should tie notifications/paging/alerting to. |
4900
+ | <code><a href="#@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.zonalAggregateIsolatedImpactAlarms">zonalAggregateIsolatedImpactAlarms</a></code> | <code>{[ key: string ]: aws-cdk-lib.aws_cloudwatch.IAlarm}</code> | The zonal aggregate isolated impact alarms. |
4901
+ | <code><a href="#@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.zonalServerSideIsolatedImpactAlarms">zonalServerSideIsolatedImpactAlarms</a></code> | <code>{[ key: string ]: aws-cdk-lib.aws_cloudwatch.IAlarm}</code> | The zonal server-side isolated impact alarms. |
4902
+ | <code><a href="#@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.regionalCanaryAlarm">regionalCanaryAlarm</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarm</code> | An alarm indicating the canary has discovered an availability or latency impact on a critical operation while testing the regional endpoint. |
4902
4903
 
4903
4904
  ---
4904
4905
 
4905
- ##### `regionalFaultCountServerSideAlarm`<sup>Required</sup> <a name="regionalFaultCountServerSideAlarm" id="@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.regionalFaultCountServerSideAlarm"></a>
4906
+ ##### `regionalImpactAlarm`<sup>Required</sup> <a name="regionalImpactAlarm" id="@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.regionalImpactAlarm"></a>
4906
4907
 
4907
4908
  ```typescript
4908
- public readonly regionalFaultCountServerSideAlarm: IAlarm;
4909
+ public readonly regionalImpactAlarm: IAlarm;
4909
4910
  ```
4910
4911
 
4911
4912
  - *Type:* aws-cdk-lib.aws_cloudwatch.IAlarm
4912
4913
 
4913
- An alarm for fault count exceeding a regional threshold for all critical operations.
4914
+ An alarm indicating there is availability or latency impact on a critical operation that is not scoped to a single availability zone as measured by the server-side and/or canary (if present).
4915
+
4916
+ ---
4917
+
4918
+ ##### `regionalServerSideImpactAlarm`<sup>Required</sup> <a name="regionalServerSideImpactAlarm" id="@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.regionalServerSideImpactAlarm"></a>
4919
+
4920
+ ```typescript
4921
+ public readonly regionalServerSideImpactAlarm: IAlarm;
4922
+ ```
4923
+
4924
+ - *Type:* aws-cdk-lib.aws_cloudwatch.IAlarm
4925
+
4926
+ An alarm indicating there is availability or latency impact on a critical operation that is not scoped to a single availability zone as measured by the server-side.
4914
4927
 
4915
4928
  ---
4916
4929
 
@@ -4926,13 +4939,28 @@ The service these alarms and rules are for.
4926
4939
 
4927
4940
  ---
4928
4941
 
4942
+ ##### `serviceImpactAlarm`<sup>Required</sup> <a name="serviceImpactAlarm" id="@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.serviceImpactAlarm"></a>
4943
+
4944
+ ```typescript
4945
+ public readonly serviceImpactAlarm: IAlarm;
4946
+ ```
4947
+
4948
+ - *Type:* aws-cdk-lib.aws_cloudwatch.IAlarm
4949
+
4950
+ This is the top level alarm you should tie notifications/paging/alerting to.
4951
+
4952
+ It triggers
4953
+ on any impact to a critical operation either zonally scoped or regionally scoped.
4954
+
4955
+ ---
4956
+
4929
4957
  ##### `zonalAggregateIsolatedImpactAlarms`<sup>Required</sup> <a name="zonalAggregateIsolatedImpactAlarms" id="@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.zonalAggregateIsolatedImpactAlarms"></a>
4930
4958
 
4931
4959
  ```typescript
4932
- public readonly zonalAggregateIsolatedImpactAlarms: IAlarm[];
4960
+ public readonly zonalAggregateIsolatedImpactAlarms: {[ key: string ]: IAlarm};
4933
4961
  ```
4934
4962
 
4935
- - *Type:* aws-cdk-lib.aws_cloudwatch.IAlarm[]
4963
+ - *Type:* {[ key: string ]: aws-cdk-lib.aws_cloudwatch.IAlarm}
4936
4964
 
4937
4965
  The zonal aggregate isolated impact alarms.
4938
4966
 
@@ -4945,41 +4973,29 @@ that indicates it has isolated impact as measured by canaries or server-side.
4945
4973
  ##### `zonalServerSideIsolatedImpactAlarms`<sup>Required</sup> <a name="zonalServerSideIsolatedImpactAlarms" id="@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.zonalServerSideIsolatedImpactAlarms"></a>
4946
4974
 
4947
4975
  ```typescript
4948
- public readonly zonalServerSideIsolatedImpactAlarms: IAlarm[];
4976
+ public readonly zonalServerSideIsolatedImpactAlarms: {[ key: string ]: IAlarm};
4949
4977
  ```
4950
4978
 
4951
- - *Type:* aws-cdk-lib.aws_cloudwatch.IAlarm[]
4979
+ - *Type:* {[ key: string ]: aws-cdk-lib.aws_cloudwatch.IAlarm}
4952
4980
 
4953
4981
  The zonal server-side isolated impact alarms.
4954
4982
 
4955
4983
  There is 1 alarm per AZ that triggers
4956
- on availability or atency impact to any critical operation in that AZ. These are useful
4984
+ on availability or latency impact to any critical operation in that AZ. These are useful
4957
4985
  for deployment monitoring to not inadvertently fail when a canary can't contact an AZ
4958
4986
  during a deployment.
4959
4987
 
4960
4988
  ---
4961
4989
 
4962
- ##### `regionalAvailabilityCanaryAlarm`<sup>Optional</sup> <a name="regionalAvailabilityCanaryAlarm" id="@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.regionalAvailabilityCanaryAlarm"></a>
4963
-
4964
- ```typescript
4965
- public readonly regionalAvailabilityCanaryAlarm: IAlarm;
4966
- ```
4967
-
4968
- - *Type:* aws-cdk-lib.aws_cloudwatch.IAlarm
4969
-
4970
- An alarm for regional availability impact of any critical operation as measured by the canary.
4971
-
4972
- ---
4973
-
4974
- ##### `regionalAvailabilityOrLatencyCanaryAlarm`<sup>Optional</sup> <a name="regionalAvailabilityOrLatencyCanaryAlarm" id="@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.regionalAvailabilityOrLatencyCanaryAlarm"></a>
4990
+ ##### `regionalCanaryAlarm`<sup>Optional</sup> <a name="regionalCanaryAlarm" id="@cdklabs/multi-az-observability.IServiceAlarmsAndRules.property.regionalCanaryAlarm"></a>
4975
4991
 
4976
4992
  ```typescript
4977
- public readonly regionalAvailabilityOrLatencyCanaryAlarm: IAlarm;
4993
+ public readonly regionalCanaryAlarm: IAlarm;
4978
4994
  ```
4979
4995
 
4980
4996
  - *Type:* aws-cdk-lib.aws_cloudwatch.IAlarm
4981
4997
 
4982
- An alarm for regional availability or latency impact of any critical operation as measured by the canary.
4998
+ An alarm indicating the canary has discovered an availability or latency impact on a critical operation while testing the regional endpoint.
4983
4999
 
4984
5000
  ---
4985
5001
 
@@ -13,7 +13,8 @@ export interface IOperationAlarmsAndRules {
13
13
  */
14
14
  readonly operation: IOperation;
15
15
  /**
16
- * An alarm indicating regionally scoped impact, not zonal
16
+ * An alarm indicating availability or latency impact has been detected by the server-side
17
+ * and/or canary (if present) and the impact is regionally scoped, not zonal
17
18
  */
18
19
  readonly regionalImpactAlarm: IAlarm;
19
20
  /**
@@ -25,15 +26,15 @@ export interface IOperationAlarmsAndRules {
25
26
  */
26
27
  readonly canaryRegionalAlarmsAndRules?: ICanaryOperationRegionalAlarmsAndRules;
27
28
  /**
28
- * The aggregate zonal alarm indexed by Availability Zone name.
29
+ * The aggregate, server-side and canary combined, zonal alarm indexed by Availability Zone name.
29
30
  */
30
- readonly aggregateZonalAlarmsMap: {
31
+ readonly aggregateZonalAlarms: {
31
32
  [key: string]: IAlarm;
32
33
  };
33
34
  /**
34
35
  * The server side zonal alarms and rules, indexed by Availability Zone name.
35
36
  */
36
- readonly serverSideZonalAlarmsAndRulesMap: {
37
+ readonly serverSideZonalAlarmsAndRules: {
37
38
  [key: string]: IServerSideOperationZonalAlarmsAndRules;
38
39
  };
39
40
  /**
@@ -41,7 +42,7 @@ export interface IOperationAlarmsAndRules {
41
42
  *
42
43
  * @default - This is an empty dictionary if canary metric details are not provided
43
44
  */
44
- readonly canaryZonalAlarmsAndRulesMap?: {
45
+ readonly canaryZonalAlarmsAndRules?: {
45
46
  [key: string]: ICanaryOperationZonalAlarmsAndRules;
46
47
  };
47
48
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FsYXJtc2FuZHJ1bGVzL0lPcGVyYXRpb25BbGFybXNBbmRSdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgSUFsYXJtIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElDYW5hcnlPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9JQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJU2VydmVyU2lkZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvSU9wZXJhdGlvbic7XG5cbi8qKlxuICogQ3JlYXRlcyBhbGFybXMgYW5kIHJ1bGVzIGZvciBhbiBvcGVyYXRpb24gZm9yIGJvdGggcmVnaW9uYWwgYW5kIHpvbmFsIG1ldHJpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMge1xuICAvKipcbiAgICogVGhlIG9wZXJhdGlvbiB0aGUgYWxhcm1zIGFuZCBydWxlcyBhcmUgY3JlYXRlZCBmb3JcbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbjogSU9wZXJhdGlvbjtcblxuICAvKipcbiAgICogQW4gYWxhcm0gaW5kaWNhdGluZyByZWdpb25hbGx5IHNjb3BlZCBpbXBhY3QsIG5vdCB6b25hbFxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uYWxJbXBhY3RBbGFybTogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIHNpZGUgcmVnaW9uYWwgYWxhcm1zIGFuZCBydWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXM6IElTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcztcblxuICAvKipcbiAgICogVGhlIGNhbmFyeSByZWdpb25hbCBhbGFybXMgYW5kIHJ1bGVzXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlSZWdpb25hbEFsYXJtc0FuZFJ1bGVzPzogSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBhZ2dyZWdhdGUgem9uYWwgYWxhcm0gaW5kZXhlZCBieSBBdmFpbGFiaWxpdHkgWm9uZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYWdncmVnYXRlWm9uYWxBbGFybXNNYXA6IHsgW2tleTogc3RyaW5nXTogSUFsYXJtIH07XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2ZXIgc2lkZSB6b25hbCBhbGFybXMgYW5kIHJ1bGVzLCBpbmRleGVkIGJ5IEF2YWlsYWJpbGl0eSBab25lIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlWm9uYWxBbGFybXNBbmRSdWxlc01hcDoge1trZXk6IHN0cmluZ106IElTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc307XG5cbiAgLyoqXG4gICAqIFRoZSBjYW5hcnkgem9uYWwgYWxhcm1zIGFuZCBydWxlcywgaW5kZXhlZCBieSBBdmFpbGFiaWxpdHkgWm9uZSBuYW1lLlxuICAgKiBcbiAgICogQGRlZmF1bHQgLSBUaGlzIGlzIGFuIGVtcHR5IGRpY3Rpb25hcnkgaWYgY2FuYXJ5IG1ldHJpYyBkZXRhaWxzIGFyZSBub3QgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeVpvbmFsQWxhcm1zQW5kUnVsZXNNYXA/OiB7W2tleTogc3RyaW5nXTogSUNhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXN9O1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FsYXJtc2FuZHJ1bGVzL0lPcGVyYXRpb25BbGFybXNBbmRSdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgSUFsYXJtIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElDYW5hcnlPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9JQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJU2VydmVyU2lkZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvSU9wZXJhdGlvbic7XG5cbi8qKlxuICogQ3JlYXRlcyBhbGFybXMgYW5kIHJ1bGVzIGZvciBhbiBvcGVyYXRpb24gZm9yIGJvdGggcmVnaW9uYWwgYW5kIHpvbmFsIG1ldHJpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMge1xuICAvKipcbiAgICogVGhlIG9wZXJhdGlvbiB0aGUgYWxhcm1zIGFuZCBydWxlcyBhcmUgY3JlYXRlZCBmb3JcbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbjogSU9wZXJhdGlvbjtcblxuICAvKipcbiAgICogQW4gYWxhcm0gaW5kaWNhdGluZyBhdmFpbGFiaWxpdHkgb3IgbGF0ZW5jeSBpbXBhY3QgaGFzIGJlZW4gZGV0ZWN0ZWQgYnkgdGhlIHNlcnZlci1zaWRlIFxuICAgKiBhbmQvb3IgY2FuYXJ5IChpZiBwcmVzZW50KSBhbmQgdGhlIGltcGFjdCBpcyByZWdpb25hbGx5IHNjb3BlZCwgbm90IHpvbmFsXG4gICAqL1xuICByZWFkb25seSByZWdpb25hbEltcGFjdEFsYXJtOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2ZXIgc2lkZSByZWdpb25hbCBhbGFybXMgYW5kIHJ1bGVzXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlUmVnaW9uYWxBbGFybXNBbmRSdWxlczogSVNlcnZlclNpZGVPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FuYXJ5IHJlZ2lvbmFsIGFsYXJtcyBhbmQgcnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXM/OiBJQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcztcblxuICAvKipcbiAgICogVGhlIGFnZ3JlZ2F0ZSwgc2VydmVyLXNpZGUgYW5kIGNhbmFyeSBjb21iaW5lZCwgem9uYWwgYWxhcm0gaW5kZXhlZCBieSBBdmFpbGFiaWxpdHkgWm9uZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYWdncmVnYXRlWm9uYWxBbGFybXM6IHtba2V5OiBzdHJpbmddOiBJQWxhcm19O1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIHNpZGUgem9uYWwgYWxhcm1zIGFuZCBydWxlcywgaW5kZXhlZCBieSBBdmFpbGFiaWxpdHkgWm9uZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXM6IHtba2V5OiBzdHJpbmddOiBJU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXN9O1xuXG4gIC8qKlxuICAgKiBUaGUgY2FuYXJ5IHpvbmFsIGFsYXJtcyBhbmQgcnVsZXMsIGluZGV4ZWQgYnkgQXZhaWxhYmlsaXR5IFpvbmUgbmFtZS5cbiAgICogXG4gICAqIEBkZWZhdWx0IC0gVGhpcyBpcyBhbiBlbXB0eSBkaWN0aW9uYXJ5IGlmIGNhbmFyeSBtZXRyaWMgZGV0YWlscyBhcmUgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlab25hbEFsYXJtc0FuZFJ1bGVzPzoge1trZXk6IHN0cmluZ106IElDYW5hcnlPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzfTtcbn1cbiJdfQ==
@@ -13,24 +13,36 @@ export interface IServiceAlarmsAndRules {
13
13
  * triggers for availability or latency impact to any critical operation in that AZ
14
14
  * that indicates it has isolated impact as measured by canaries or server-side.
15
15
  */
16
- zonalAggregateIsolatedImpactAlarms: IAlarm[];
16
+ zonalAggregateIsolatedImpactAlarms: {
17
+ [key: string]: IAlarm;
18
+ };
17
19
  /**
18
20
  * The zonal server-side isolated impact alarms. There is 1 alarm per AZ that triggers
19
- * on availability or atency impact to any critical operation in that AZ. These are useful
21
+ * on availability or latency impact to any critical operation in that AZ. These are useful
20
22
  * for deployment monitoring to not inadvertently fail when a canary can't contact an AZ
21
23
  * during a deployment.
22
24
  */
23
- zonalServerSideIsolatedImpactAlarms: IAlarm[];
25
+ zonalServerSideIsolatedImpactAlarms: {
26
+ [key: string]: IAlarm;
27
+ };
24
28
  /**
25
- * An alarm for regional availability or latency impact of any critical operation as measured by the canary.
29
+ * An alarm indicating the canary has discovered an availability or latency impact on a critical
30
+ * operation while testing the regional endpoint.
26
31
  */
27
- regionalAvailabilityOrLatencyCanaryAlarm?: IAlarm;
32
+ regionalCanaryAlarm?: IAlarm;
28
33
  /**
29
- * An alarm for regional availability impact of any critical operation as measured by the canary.
34
+ * An alarm indicating there is availability or latency impact on a critical operation
35
+ * that is not scoped to a single availability zone as measured by the server-side and/or canary (if present)
30
36
  */
31
- regionalAvailabilityCanaryAlarm?: IAlarm;
37
+ regionalImpactAlarm: IAlarm;
32
38
  /**
33
- * An alarm for fault count exceeding a regional threshold for all critical operations.
39
+ * An alarm indicating there is availability or latency impact on a critical operation
40
+ * that is not scoped to a single availability zone as measured by the server-side
34
41
  */
35
- regionalFaultCountServerSideAlarm: IAlarm;
42
+ regionalServerSideImpactAlarm: IAlarm;
43
+ /**
44
+ * This is the top level alarm you should tie notifications/paging/alerting to. It triggers
45
+ * on any impact to a critical operation either zonally scoped or regionally scoped.
46
+ */
47
+ serviceImpactAlarm: IAlarm;
36
48
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVNlcnZpY2VBbGFybXNBbmRSdWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbGFybXNhbmRydWxlcy9JU2VydmljZUFsYXJtc0FuZFJ1bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJQWxhcm0gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL0lTZXJ2aWNlJztcblxuLyoqXG4gKiBTZXJ2aWNlIGxldmVsIGFsYXJtcyBhbmQgcnVsZXMgdXNpbmcgY3JpdGljYWwgb3BlcmF0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElTZXJ2aWNlQWxhcm1zQW5kUnVsZXMge1xuICAvKipcbiAgICogVGhlIHNlcnZpY2UgdGhlc2UgYWxhcm1zIGFuZCBydWxlcyBhcmUgZm9yXG4gICAqL1xuICBzZXJ2aWNlOiBJU2VydmljZTtcblxuICAvKipcbiAgICogVGhlIHpvbmFsIGFnZ3JlZ2F0ZSBpc29sYXRlZCBpbXBhY3QgYWxhcm1zLiBUaGVyZSBpcyAxIGFsYXJtIHBlciBBWiB0aGF0XG4gICAqIHRyaWdnZXJzIGZvciBhdmFpbGFiaWxpdHkgb3IgbGF0ZW5jeSBpbXBhY3QgdG8gYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBpbiB0aGF0IEFaXG4gICAqIHRoYXQgaW5kaWNhdGVzIGl0IGhhcyBpc29sYXRlZCBpbXBhY3QgYXMgbWVhc3VyZWQgYnkgY2FuYXJpZXMgb3Igc2VydmVyLXNpZGUuXG4gICAqL1xuICB6b25hbEFnZ3JlZ2F0ZUlzb2xhdGVkSW1wYWN0QWxhcm1zOiBJQWxhcm1bXTtcblxuICAvKipcbiAgICogVGhlIHpvbmFsIHNlcnZlci1zaWRlIGlzb2xhdGVkIGltcGFjdCBhbGFybXMuIFRoZXJlIGlzIDEgYWxhcm0gcGVyIEFaIHRoYXQgdHJpZ2dlcnNcbiAgICogb24gYXZhaWxhYmlsaXR5IG9yIGF0ZW5jeSBpbXBhY3QgdG8gYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBpbiB0aGF0IEFaLiBUaGVzZSBhcmUgdXNlZnVsXG4gICAqIGZvciBkZXBsb3ltZW50IG1vbml0b3JpbmcgdG8gbm90IGluYWR2ZXJ0ZW50bHkgZmFpbCB3aGVuIGEgY2FuYXJ5IGNhbid0IGNvbnRhY3QgYW4gQVpcbiAgICogZHVyaW5nIGEgZGVwbG95bWVudC5cbiAgICovXG4gIHpvbmFsU2VydmVyU2lkZUlzb2xhdGVkSW1wYWN0QWxhcm1zOiBJQWxhcm1bXTtcblxuICAvKipcbiAgICogQW4gYWxhcm0gZm9yIHJlZ2lvbmFsIGF2YWlsYWJpbGl0eSBvciBsYXRlbmN5IGltcGFjdCBvZiBhbnkgY3JpdGljYWwgb3BlcmF0aW9uIGFzIG1lYXN1cmVkIGJ5IHRoZSBjYW5hcnkuXG4gICAqL1xuICByZWdpb25hbEF2YWlsYWJpbGl0eU9yTGF0ZW5jeUNhbmFyeUFsYXJtPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBmb3IgcmVnaW9uYWwgYXZhaWxhYmlsaXR5IGltcGFjdCBvZiBhbnkgY3JpdGljYWwgb3BlcmF0aW9uIGFzIG1lYXN1cmVkIGJ5IHRoZSBjYW5hcnkuXG4gICAqL1xuICByZWdpb25hbEF2YWlsYWJpbGl0eUNhbmFyeUFsYXJtPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBmb3IgZmF1bHQgY291bnQgZXhjZWVkaW5nIGEgcmVnaW9uYWwgdGhyZXNob2xkIGZvciBhbGwgY3JpdGljYWwgb3BlcmF0aW9ucy5cbiAgICovXG4gIHJlZ2lvbmFsRmF1bHRDb3VudFNlcnZlclNpZGVBbGFybTogSUFsYXJtO1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVNlcnZpY2VBbGFybXNBbmRSdWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbGFybXNhbmRydWxlcy9JU2VydmljZUFsYXJtc0FuZFJ1bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJQWxhcm0gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL0lTZXJ2aWNlJztcblxuLyoqXG4gKiBTZXJ2aWNlIGxldmVsIGFsYXJtcyBhbmQgcnVsZXMgdXNpbmcgY3JpdGljYWwgb3BlcmF0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElTZXJ2aWNlQWxhcm1zQW5kUnVsZXMge1xuICAvKipcbiAgICogVGhlIHNlcnZpY2UgdGhlc2UgYWxhcm1zIGFuZCBydWxlcyBhcmUgZm9yXG4gICAqL1xuICBzZXJ2aWNlOiBJU2VydmljZTtcblxuICAvKipcbiAgICogVGhlIHpvbmFsIGFnZ3JlZ2F0ZSBpc29sYXRlZCBpbXBhY3QgYWxhcm1zLiBUaGVyZSBpcyAxIGFsYXJtIHBlciBBWiB0aGF0XG4gICAqIHRyaWdnZXJzIGZvciBhdmFpbGFiaWxpdHkgb3IgbGF0ZW5jeSBpbXBhY3QgdG8gYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBpbiB0aGF0IEFaXG4gICAqIHRoYXQgaW5kaWNhdGVzIGl0IGhhcyBpc29sYXRlZCBpbXBhY3QgYXMgbWVhc3VyZWQgYnkgY2FuYXJpZXMgb3Igc2VydmVyLXNpZGUuXG4gICAqL1xuICB6b25hbEFnZ3JlZ2F0ZUlzb2xhdGVkSW1wYWN0QWxhcm1zOiB7W2tleTogc3RyaW5nXTogSUFsYXJtfTtcblxuICAvKipcbiAgICogVGhlIHpvbmFsIHNlcnZlci1zaWRlIGlzb2xhdGVkIGltcGFjdCBhbGFybXMuIFRoZXJlIGlzIDEgYWxhcm0gcGVyIEFaIHRoYXQgdHJpZ2dlcnNcbiAgICogb24gYXZhaWxhYmlsaXR5IG9yIGxhdGVuY3kgaW1wYWN0IHRvIGFueSBjcml0aWNhbCBvcGVyYXRpb24gaW4gdGhhdCBBWi4gVGhlc2UgYXJlIHVzZWZ1bFxuICAgKiBmb3IgZGVwbG95bWVudCBtb25pdG9yaW5nIHRvIG5vdCBpbmFkdmVydGVudGx5IGZhaWwgd2hlbiBhIGNhbmFyeSBjYW4ndCBjb250YWN0IGFuIEFaXG4gICAqIGR1cmluZyBhIGRlcGxveW1lbnQuXG4gICAqL1xuICB6b25hbFNlcnZlclNpZGVJc29sYXRlZEltcGFjdEFsYXJtczoge1trZXk6IHN0cmluZ106IElBbGFybX07XG5cbiAgLyoqXG4gICAqIEFuIGFsYXJtIGluZGljYXRpbmcgdGhlIGNhbmFyeSBoYXMgZGlzY292ZXJlZCBhbiBhdmFpbGFiaWxpdHkgb3IgbGF0ZW5jeSBpbXBhY3Qgb24gYSBjcml0aWNhbFxuICAgKiBvcGVyYXRpb24gd2hpbGUgdGVzdGluZyB0aGUgcmVnaW9uYWwgZW5kcG9pbnQuXG4gICAqL1xuICByZWdpb25hbENhbmFyeUFsYXJtPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBpbmRpY2F0aW5nIHRoZXJlIGlzIGF2YWlsYWJpbGl0eSBvciBsYXRlbmN5IGltcGFjdCBvbiBhIGNyaXRpY2FsIG9wZXJhdGlvblxuICAgKiB0aGF0IGlzIG5vdCBzY29wZWQgdG8gYSBzaW5nbGUgYXZhaWxhYmlsaXR5IHpvbmUgYXMgbWVhc3VyZWQgYnkgdGhlIHNlcnZlci1zaWRlIGFuZC9vciBjYW5hcnkgKGlmIHByZXNlbnQpXG4gICAqL1xuICByZWdpb25hbEltcGFjdEFsYXJtOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEFuIGFsYXJtIGluZGljYXRpbmcgdGhlcmUgaXMgYXZhaWxhYmlsaXR5IG9yIGxhdGVuY3kgaW1wYWN0IG9uIGEgY3JpdGljYWwgb3BlcmF0aW9uXG4gICAqIHRoYXQgaXMgbm90IHNjb3BlZCB0byBhIHNpbmdsZSBhdmFpbGFiaWxpdHkgem9uZSBhcyBtZWFzdXJlZCBieSB0aGUgc2VydmVyLXNpZGVcbiAgICovXG4gIHJlZ2lvbmFsU2VydmVyU2lkZUltcGFjdEFsYXJtOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIHRvcCBsZXZlbCBhbGFybSB5b3Ugc2hvdWxkIHRpZSBub3RpZmljYXRpb25zL3BhZ2luZy9hbGVydGluZyB0by4gSXQgdHJpZ2dlcnNcbiAgICogb24gYW55IGltcGFjdCB0byBhIGNyaXRpY2FsIG9wZXJhdGlvbiBlaXRoZXIgem9uYWxseSBzY29wZWQgb3IgcmVnaW9uYWxseSBzY29wZWQuXG4gICAqL1xuICBzZXJ2aWNlSW1wYWN0QWxhcm06IElBbGFybTtcbn1cbiJdfQ==
@@ -26,17 +26,18 @@ export declare class OperationAlarmsAndRules extends Construct implements IOpera
26
26
  /**
27
27
  * The aggregate zonal alarm indexed by Availability Zone Id.
28
28
  */
29
- readonly aggregateZonalAlarmsMap: {
29
+ readonly aggregateZonalAlarms: {
30
30
  [key: string]: IAlarm;
31
31
  };
32
32
  /**
33
- * An alarm indicating regionally scoped impact, not zonal
33
+ * An alarm indicating availability or latency impact has been detected by the server-side
34
+ * and/or canary (if present) and the impact is regionally scoped, not zonal
34
35
  */
35
36
  readonly regionalImpactAlarm: IAlarm;
36
37
  /**
37
38
  * The server side zonal alarms and rules, indexed by Availability Zone name.
38
39
  */
39
- readonly serverSideZonalAlarmsAndRulesMap: {
40
+ readonly serverSideZonalAlarmsAndRules: {
40
41
  [key: string]: IServerSideOperationZonalAlarmsAndRules;
41
42
  };
42
43
  /**
@@ -44,7 +45,7 @@ export declare class OperationAlarmsAndRules extends Construct implements IOpera
44
45
  *
45
46
  * @default - This is an empty dictionary if canary metric details are not provided
46
47
  */
47
- readonly canaryZonalAlarmsAndRulesMap?: {
48
+ readonly canaryZonalAlarmsAndRules?: {
48
49
  [key: string]: ICanaryOperationZonalAlarmsAndRules;
49
50
  };
50
51
  constructor(scope: Construct, id: string, props: OperationAlarmsAndRulesProps);
@@ -16,9 +16,9 @@ class OperationAlarmsAndRules extends constructs_1.Construct {
16
16
  constructor(scope, id, props) {
17
17
  super(scope, id);
18
18
  this.operation = props.operation;
19
- this.aggregateZonalAlarmsMap = {};
20
- this.serverSideZonalAlarmsAndRulesMap = {};
21
- this.canaryZonalAlarmsAndRulesMap = {};
19
+ this.aggregateZonalAlarms = {};
20
+ this.serverSideZonalAlarmsAndRules = {};
21
+ this.canaryZonalAlarmsAndRules = {};
22
22
  let loadBalancerArn = '';
23
23
  if (props.loadBalancer) {
24
24
  loadBalancerArn = props.loadBalancer
@@ -60,7 +60,7 @@ class OperationAlarmsAndRules extends constructs_1.Construct {
60
60
  counter: index,
61
61
  nameSuffix: '-server'
62
62
  });
63
- this.serverSideZonalAlarmsAndRulesMap[availabilityZone] = serverSideZonalAlarmsAndRules;
63
+ this.serverSideZonalAlarmsAndRules[availabilityZone] = serverSideZonalAlarmsAndRules;
64
64
  if (props.operation.canaryMetricDetails) {
65
65
  let canaryZonalAlarmsAndRules = new CanaryOperationZonalAlarmsAndRules_1.CanaryOperationZonalAlarmsAndRules(this, props.operation.operationName +
66
66
  'AZ' +
@@ -71,7 +71,7 @@ class OperationAlarmsAndRules extends constructs_1.Construct {
71
71
  counter: index,
72
72
  nameSuffix: '-canary'
73
73
  });
74
- this.canaryZonalAlarmsAndRulesMap[availabilityZone] = canaryZonalAlarmsAndRules;
74
+ this.canaryZonalAlarmsAndRules[availabilityZone] = canaryZonalAlarmsAndRules;
75
75
  let aggAlarm = new aws_cloudwatch_1.CompositeAlarm(this, props.operation.operationName +
76
76
  'AZ' +
77
77
  index +
@@ -80,7 +80,7 @@ class OperationAlarmsAndRules extends constructs_1.Construct {
80
80
  '-' +
81
81
  props.operation.operationName.toLowerCase() +
82
82
  '-aggregate-isolated-az-impact',
83
- alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(this.canaryZonalAlarmsAndRulesMap[availabilityZone].isolatedImpactAlarm, this.serverSideZonalAlarmsAndRulesMap[availabilityZone].isolatedImpactAlarm),
83
+ alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(this.canaryZonalAlarmsAndRules[availabilityZone].isolatedImpactAlarm, this.serverSideZonalAlarmsAndRules[availabilityZone].isolatedImpactAlarm),
84
84
  actionsEnabled: false,
85
85
  alarmDescription: '{"loadBalancer":"' +
86
86
  loadBalancerArn +
@@ -88,10 +88,10 @@ class OperationAlarmsAndRules extends constructs_1.Construct {
88
88
  availabilityZoneId +
89
89
  '"}',
90
90
  });
91
- this.aggregateZonalAlarmsMap[availabilityZone] = aggAlarm;
91
+ this.aggregateZonalAlarms[availabilityZone] = aggAlarm;
92
92
  }
93
93
  else {
94
- this.aggregateZonalAlarmsMap[availabilityZone] = this.serverSideZonalAlarmsAndRulesMap[availabilityZone].isolatedImpactAlarm;
94
+ this.aggregateZonalAlarms[availabilityZone] = this.serverSideZonalAlarmsAndRules[availabilityZone].isolatedImpactAlarm;
95
95
  }
96
96
  });
97
97
  // Create a regional impact alarm that is triggered if regional
@@ -100,16 +100,16 @@ class OperationAlarmsAndRules extends constructs_1.Construct {
100
100
  if (props.operation.canaryMetricDetails) {
101
101
  this.regionalImpactAlarm = new aws_cloudwatch_1.CompositeAlarm(this, props.operation.operationName + "-regional-impact-alarm", {
102
102
  compositeAlarmName: `${props.operation.service.serviceName.toLowerCase()}-${props.operation.operationName.toLowerCase()}-regional-impact`,
103
- alarmRule: aws_cloudwatch_1.AlarmRule.allOf(aws_cloudwatch_1.AlarmRule.anyOf(this.serverSideRegionalAlarmsAndRules.availabilityOrLatencyAlarm, this.canaryRegionalAlarmsAndRules.availabilityOrLatencyAlarm), aws_cloudwatch_1.AlarmRule.not(aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(this.aggregateZonalAlarmsMap))))
103
+ alarmRule: aws_cloudwatch_1.AlarmRule.allOf(aws_cloudwatch_1.AlarmRule.anyOf(this.serverSideRegionalAlarmsAndRules.availabilityOrLatencyAlarm, this.canaryRegionalAlarmsAndRules.availabilityOrLatencyAlarm), aws_cloudwatch_1.AlarmRule.not(aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(this.aggregateZonalAlarms))))
104
104
  });
105
105
  }
106
106
  else {
107
107
  this.regionalImpactAlarm = new aws_cloudwatch_1.CompositeAlarm(this, props.operation.operationName + "-regional-impact-alarm", {
108
108
  compositeAlarmName: `${props.operation.service.serviceName.toLowerCase()}-${props.operation.operationName.toLowerCase()}-regional-impact`,
109
- alarmRule: aws_cloudwatch_1.AlarmRule.allOf(this.serverSideRegionalAlarmsAndRules.availabilityOrLatencyAlarm, aws_cloudwatch_1.AlarmRule.not(aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(this.aggregateZonalAlarmsMap))))
109
+ alarmRule: aws_cloudwatch_1.AlarmRule.allOf(this.serverSideRegionalAlarmsAndRules.availabilityOrLatencyAlarm, aws_cloudwatch_1.AlarmRule.not(aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(this.aggregateZonalAlarms))))
110
110
  });
111
111
  }
112
112
  }
113
113
  }
114
114
  exports.OperationAlarmsAndRules = OperationAlarmsAndRules;
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zYW5kcnVsZXMvT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0QywrREFBK0U7QUFFL0UsMkNBQXVDO0FBQ3ZDLG1HQUFnRztBQUNoRyw2RkFBMEY7QUFPMUYsMkdBQXdHO0FBQ3hHLHFHQUFrRztBQUdsRzs7R0FFRztBQUNILE1BQWEsdUJBQ1gsU0FBUSxzQkFBUztJQXVDakIsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUM7UUFFbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsZ0NBQWdDLEdBQUcsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxFQUFFLENBQUM7UUFFdkMsSUFBSSxlQUFlLEdBQVcsRUFBRSxDQUFDO1FBRWpDLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLGVBQWUsR0FBSSxLQUFLLENBQUMsWUFBaUM7aUJBQ3ZELGVBQWUsQ0FBQztRQUNyQixDQUFDO1FBRUQsbUVBQW1FO1FBQ25FLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsZ0NBQWdDO1lBQ25DLElBQUkscUZBQXlDLENBQzNDLElBQUksRUFDSixLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRywwQkFBMEIsRUFDMUQ7Z0JBQ0UseUJBQXlCLEVBQ3ZCLEtBQUssQ0FBQyxTQUFTLENBQUMsbUNBQW1DO2dCQUNyRCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLDhCQUE4QjtnQkFDcEUsNkJBQTZCLEVB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QUFDLGFBQWEsR0FBRyx3QkFBd0IsRUFBRTtnQkFDNUcsa0JBQWtCLEVBQUUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLGtCQUFrQjtnQkFDekksU0FBUyxFQUFFLDBCQUFTLENBQUMsS0FBSyxDQUN4QixJQUFJLENBQUMsZ0NBQWdDLENBQUMsMEJBQTBCLEVBQ2hFLDBCQUFTLENBQUMsR0FBRyxDQUNYLDBCQUFTLENBQUMsS0FBSyxDQUNiLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FDL0MsQ0FDRixDQUNGO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXRNRCwwREFzTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBBbGFybVJ1bGUsIENvbXBvc2l0ZUFsYXJtLCBJQWxhcm0gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBCYXNlTG9hZEJhbGFuY2VyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9DYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IENhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0NhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElDYW5hcnlPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9JQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lPcGVyYXRpb25BbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJU2VydmVyU2lkZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBPcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzIH0gZnJvbSAnLi9wcm9wcy9PcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzJztcbmltcG9ydCB7IFNlcnZlclNpZGVPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9TZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL0lPcGVyYXRpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYWxhcm1zIGFuZCBydWxlcyBmb3IgYW4gb3BlcmF0aW9uIGZvciBib3RoIHJlZ2lvbmFsIGFuZCB6b25hbCBtZXRyaWNzXG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25BbGFybXNBbmRSdWxlc1xuICBleHRlbmRzIENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIElPcGVyYXRpb25BbGFybXNBbmRSdWxlcyB7XG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW9uIHRoZSBhbGFybXMgYW5kIHJ1bGVzIGFyZSBjcmVhdGVkIGZvclxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uOiBJT3BlcmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIHNpZGUgcmVnaW9uYWwgYWxhcm1zIGFuZCBydWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXM6IElTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcztcblxuICAvKipcbiAgICogVGhlIGNhbmFyeSByZWdpb25hbCBhbGFybXMgYW5kIHJ1bGVzXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlSZWdpb25hbEFsYXJtc0FuZFJ1bGVzPzogSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBhZ2dyZWdhdGUgem9uYWwgYWxhcm0gaW5kZXhlZCBieSBBdmFpbGFiaWxpdHkgWm9uZSBJZC5cbiAgICovXG4gIHJlYWRvbmx5IGFnZ3JlZ2F0ZVpvbmFsQWxhcm1zTWFwOiB7IFtrZXk6IHN0cmluZ106IElBbGFybSB9O1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBpbmRpY2F0aW5nIHJlZ2lvbmFsbHkgc2NvcGVkIGltcGFjdCwgbm90IHpvbmFsXG4gICAqL1xuICByZWFkb25seSByZWdpb25hbEltcGFjdEFsYXJtOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2ZXIgc2lkZSB6b25hbCBhbGFybXMgYW5kIHJ1bGVzLCBpbmRleGVkIGJ5IEF2YWlsYWJpbGl0eSBab25lIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlWm9uYWxBbGFybXNBbmRSdWxlc01hcDoge1trZXk6IHN0cmluZ106IElTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc307XG5cbiAgLyoqXG4gICAqIFRoZSBjYW5hcnkgem9uYWwgYWxhcm1zIGFuZCBydWxlcywgaW5kZXhlZCBieSBBdmFpbGFiaWxpdHkgWm9uZSBuYW1lLlxuICAgKiBcbiAgICogQGRlZmF1bHQgLSBUaGlzIGlzIGFuIGVtcHR5IGRpY3Rpb25hcnkgaWYgY2FuYXJ5IG1ldHJpYyBkZXRhaWxzIGFyZSBub3QgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeVpvbmFsQWxhcm1zQW5kUnVsZXNNYXA/OiB7W2tleTogc3RyaW5nXTogSUNhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXN9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMub3BlcmF0aW9uID0gcHJvcHMub3BlcmF0aW9uO1xuICAgIHRoaXMuYWdncmVnYXRlWm9uYWxBbGFybXNNYXAgPSB7fTtcbiAgICB0aGlzLnNlcnZlclNpZGVab25hbEFsYXJtc0FuZFJ1bGVzTWFwID0ge307XG4gICAgdGhpcy5jYW5hcnlab25hbEFsYXJtc0FuZFJ1bGVzTWFwID0ge307XG5cbiAgICBsZXQgbG9hZEJhbGFuY2VyQXJuOiBzdHJpbmcgPSAnJztcblxuICAgIGlmIChwcm9wcy5sb2FkQmFsYW5jZXIpIHtcbiAgICAgIGxvYWRCYWxhbmNlckFybiA9IChwcm9wcy5sb2FkQmFsYW5jZXIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgLmxvYWRCYWxhbmNlckFybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGVzIHRoZSByZWdpb25hbCBpbXBhY3QgYWxhcm1zIGFuZCBjb250cmlidXRvciBpbnNpZ2h0IHJ1bGVzXG4gICAgLy8gZm9yIGNvbnRyaWJ1dG9ycyB0byByZWdpb25hbCBmYXVsdHMgYW5kIGxhdGVuY3lcbiAgICB0aGlzLnNlcnZlclNpZGVSZWdpb25hbEFsYXJtc0FuZFJ1bGVzID1cbiAgICAgIG5ldyBTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgcHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyAnU2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zJyxcbiAgICAgICAge1xuICAgICAgICAgIGF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHM6XG4gICAgICAgICAgICBwcm9wcy5vcGVyYXRpb24uc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgbGF0ZW5jeU1ldHJpY0RldGFpbHM6IHByb3BzLm9wZXJhdGlvbi5zZXJ2ZXJTaWRlTGF0ZW5jeU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHM6IHByb3BzLm9wZXJhdGlvblxuICAgICAgICAgICAgLnNlcnZlclNpZGVDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlsc1xuICAgICAgICAgICAgPyBwcm9wcy5vcGVyYXRpb24uc2VydmVyU2lkZUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzXG4gICAgICAgICAgICA6IHByb3BzLm9wZXJhdGlvbi5zZXJ2aWNlLmRlZmF1bHRDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyxcbiAgICAgICAgICBuYW1lU3VmZml4OiAnLXNlcnZlcicsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgLy8gSWYgY2FuYXJ5IG1ldHJpY3MgYXJlIGRlZmluZWQsIGNyZWF0ZSB0aGUgcmVnaW9uYWwgaW1wYWN0XG4gICAgLy8gYWxhcm1zIFxuICAgIGlmIChwcm9wcy5vcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscykge1xuICAgICAgdGhpcy5jYW5hcnlSZWdpb25hbEFsYXJtc0FuZFJ1bGVzID1cbiAgICAgICAgbmV3IENhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArICdDYW5hcnlSZWdpb25hbEFsYXJtcycsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsczpcbiAgICAgICAgICAgICAgcHJvcHMub3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICAgIGxhdGVuY3lNZXRyaWNEZXRhaWxzOlxuICAgICAgICAgICAgICBwcm9wcy5vcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICAgIG5hbWVTdWZmaXg6ICctY2FuYXJ5JyxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgem9uYWwgaXNvbGF0ZWQgaW1wYWN0IGFsYXJtc1xuICAgIHByb3BzLm9wZXJhdGlvbi5zZXJ2aWNlLmF2YWlsYWJpbGl0eVpvbmVOYW1lcy5mb3JFYWNoKChhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGxldCBhekxldHRlcjogc3RyaW5nID0gYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcbiAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyA9IHByb3BzLmF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgbGV0IHNlcnZlclNpZGVab25hbEFsYXJtc0FuZFJ1bGVzOiBJU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgPSBuZXcgU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICtcbiAgICAgICAgICAnQVonICtcbiAgICAgICAgICBpbmRleCArXG4gICAgICAgICAgJ1NlcnZlclNpZGVab25hbEFsYXJtc0FuZFJ1bGVzJyxcbiAgICAgICAge1xuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgb3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wczogcHJvcHMsXG4gICAgICAgICAgY291bnRlcjogaW5kZXgsXG4gICAgICAgICAgbmFtZVN1ZmZpeDogJy1zZXJ2ZXInXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICB0aGlzLnNlcnZlclNpZGVab25hbEFsYXJtc0FuZFJ1bGVzTWFwW2F2YWlsYWJpbGl0eVpvbmVdID0gc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXM7XG5cbiAgICAgIGlmIChwcm9wcy5vcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscykge1xuICAgICAgICBsZXQgY2FuYXJ5Wm9uYWxBbGFybXNBbmRSdWxlczogSUNhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgPSBuZXcgQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyhcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICtcbiAgICAgICAgICAgICdBWicgK1xuICAgICAgICAgICAgaW5kZXggK1xuICAgICAgICAgICAgJ0NhbmFyeVpvbmFsQWxhcm1zQW5kUnVsZXMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICBvcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIGNvdW50ZXI6IGluZGV4LFxuICAgICAgICAgICAgbmFtZVN1ZmZpeDogJy1jYW5hcnknXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNhbmFyeVpvbmFsQWxhcm1zQW5kUnVsZXNNYXAhW2F2YWlsYWJpbGl0eVpvbmVdID0gY2FuYXJ5Wm9uYWxBbGFybXNBbmRSdWxlcztcblxuICAgICAgICBsZXQgYWdnQWxhcm06IElBbGFybSA9IG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICtcbiAgICAgICAgICAgICdBWicgK1xuICAgICAgICAgICAgaW5kZXggK1xuICAgICAgICAgICAgJ0FnZ3JlZ2F0ZVpvbmFsSXNvbGF0ZWRJbXBhY3RBbGFybScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOlxuICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQgK1xuICAgICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgICBwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAgICAgJy1hZ2dyZWdhdGUtaXNvbGF0ZWQtYXotaW1wYWN0JyxcbiAgICAgICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgICAgICB0aGlzLmNhbmFyeVpvbmFsQWxhcm1zQW5kUnVsZXNNYXAhW2F2YWlsYWJpbGl0eVpvbmVdLmlzb2xhdGVkSW1wYWN0QWxhcm0sXG4gICAgICAgICAgICAgIHRoaXMuc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXNNYXBbYXZhaWxhYmlsaXR5Wm9uZV0uaXNvbGF0ZWRJbXBhY3RBbGFybVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFjdGlvbnNFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGFsYXJtRGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICd7XCJsb2FkQmFsYW5jZXJcIjpcIicgK1xuICAgICAgICAgICAgICBsb2FkQmFsYW5jZXJBcm4gK1xuICAgICAgICAgICAgICAnXCIsXCJhei1pZFwiOlwiJyArXG4gICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCArXG4gICAgICAgICAgICAgICdcIn0nLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmFnZ3JlZ2F0ZVpvbmFsQWxhcm1zTWFwW2F2YWlsYWJpbGl0eVpvbmVdID0gYWdnQWxhcm07XG4gICAgICB9IGVsc2UgeyAgICAgICBcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGVab25hbEFsYXJtc01hcFthdmFpbGFiaWxpdHlab25lXSA9IHRoaXMuc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXNNYXBbYXZhaWxhYmlsaXR5Wm9uZV0uaXNvbGF0ZWRJbXBhY3RBbGFybSAgICBcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBhIHJlZ2lvbmFsIGltcGFjdCBhbGFybSB0aGF0IGlzIHRyaWdnZXJlZCBpZiByZWdpb25hbFxuICAgIC8vIG1ldHJpY3MgZm9yIGF2YWlsYWJpbGl0eSBvciBsYXRlbmN5IGRyb3AgYW5kIHRoZXJlIGlzbid0IGEgc2luZ2xlXG4gICAgLy8gQVogaW1wYWN0IGFsYXJtIFxuICAgIGlmIChwcm9wcy5vcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscykge1xuICAgICAgdGhpcy5yZWdpb25hbEltcGFjdEFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKHRoaXMsIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICsgXCItcmVnaW9uYWwtaW1wYWN0LWFsYXJtXCIsIHtcbiAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOiBgJHtwcm9wcy5vcGVyYXRpb24uc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpfS0ke3Byb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLnRvTG93ZXJDYXNlKCl9LXJlZ2lvbmFsLWltcGFjdGAsXG4gICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFsbE9mKFxuICAgICAgICAgIEFsYXJtUnVsZS5hbnlPZihcbiAgICAgICAgICAgIHRoaXMuc2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMuYXZhaWxhYmlsaXR5T3JMYXRlbmN5QWxhcm0sXG4gICAgICAgICAgICB0aGlzLmNhbmFyeVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMhLmF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFsYXJtXG4gICAgICAgICAgKSxcbiAgICAgICAgICBBbGFybVJ1bGUubm90KFxuICAgICAgICAgICAgQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKHRoaXMuYWdncmVnYXRlWm9uYWxBbGFybXNNYXApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnJlZ2lvbmFsSW1wYWN0QWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0odGhpcywgcHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyBcIi1yZWdpb25hbC1pbXBhY3QtYWxhcm1cIiwge1xuICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6IGAke3Byb3BzLm9wZXJhdGlvbi5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCl9LSR7cHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUudG9Mb3dlckNhc2UoKX0tcmVnaW9uYWwtaW1wYWN0YCxcbiAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYWxsT2YoXG4gICAgICAgICAgdGhpcy5zZXJ2ZXJTaWRlUmVnaW9uYWxBbGFybXNBbmRSdWxlcy5hdmFpbGFiaWxpdHlPckxhdGVuY3lBbGFybSwgICAgIFxuICAgICAgICAgIEFsYXJtUnVsZS5ub3QoXG4gICAgICAgICAgICBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXModGhpcy5hZ2dyZWdhdGVab25hbEFsYXJtc01hcClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSJdfQ==
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zYW5kcnVsZXMvT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0QywrREFBK0U7QUFFL0UsMkNBQXVDO0FBQ3ZDLG1HQUFnRztBQUNoRyw2RkFBMEY7QUFPMUYsMkdBQXdHO0FBQ3hHLHFHQUFrRztBQUdsRzs7R0FFRztBQUNILE1BQWEsdUJBQ1gsU0FBUSxzQkFBUztJQXdDakIsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUM7UUFFbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsNkJBQTZCLEdBQUcsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUM7UUFFcEMsSUFBSSxlQUFlLEdBQVcsRUFBRSxDQUFDO1FBRWpDLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLGVBQWUsR0FBSSxLQUFLLENBQUMsWUFBaUM7aUJBQ3ZELGVBQWUsQ0FBQztRQUNyQixDQUFDO1FBRUQsbUVBQW1FO1FBQ25FLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsZ0NBQWdDO1lBQ25DLElBQUkscUZBQXlDLENBQzNDLElBQUksRUFDSixLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRywwQkFBMEIsRUFDMUQ7Z0JBQ0UseUJBQXlCLEVBQ3ZCLEtBQUssQ0FBQyxTQUFTLENBQUMsbUNBQW1DO2dCQUNyRCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLDhCQUE4QjtnQkFDcEUsNkJBQTZCLEVB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QUFDLGFBQWEsR0FBRyx3QkFBd0IsRUFBRTtnQkFDNUcsa0JBQWtCLEVBQUUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLGtCQUFrQjtnQkFDekksU0FBUyxFQUFFLDBCQUFTLENBQUMsS0FBSyxDQUN4QixJQUFJLENBQUMsZ0NBQWdDLENBQUMsMEJBQTBCLEVBQ2hFLDBCQUFTLENBQUMsR0FBRyxDQUNYLDBCQUFTLENBQUMsS0FBSyxDQUNiLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FDNUMsQ0FDRixDQUNGO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXZNRCwwREF1TUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBBbGFybVJ1bGUsIENvbXBvc2l0ZUFsYXJtLCBJQWxhcm0gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBCYXNlTG9hZEJhbGFuY2VyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9DYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IENhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0NhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElDYW5hcnlPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9JQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lPcGVyYXRpb25BbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJU2VydmVyU2lkZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBPcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzIH0gZnJvbSAnLi9wcm9wcy9PcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzJztcbmltcG9ydCB7IFNlcnZlclNpZGVPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9TZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL0lPcGVyYXRpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYWxhcm1zIGFuZCBydWxlcyBmb3IgYW4gb3BlcmF0aW9uIGZvciBib3RoIHJlZ2lvbmFsIGFuZCB6b25hbCBtZXRyaWNzXG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25BbGFybXNBbmRSdWxlc1xuICBleHRlbmRzIENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIElPcGVyYXRpb25BbGFybXNBbmRSdWxlcyB7XG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW9uIHRoZSBhbGFybXMgYW5kIHJ1bGVzIGFyZSBjcmVhdGVkIGZvclxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uOiBJT3BlcmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIHNpZGUgcmVnaW9uYWwgYWxhcm1zIGFuZCBydWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXM6IElTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcztcblxuICAvKipcbiAgICogVGhlIGNhbmFyeSByZWdpb25hbCBhbGFybXMgYW5kIHJ1bGVzXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlSZWdpb25hbEFsYXJtc0FuZFJ1bGVzPzogSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBhZ2dyZWdhdGUgem9uYWwgYWxhcm0gaW5kZXhlZCBieSBBdmFpbGFiaWxpdHkgWm9uZSBJZC5cbiAgICovXG4gIHJlYWRvbmx5IGFnZ3JlZ2F0ZVpvbmFsQWxhcm1zOiB7IFtrZXk6IHN0cmluZ106IElBbGFybSB9O1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBpbmRpY2F0aW5nIGF2YWlsYWJpbGl0eSBvciBsYXRlbmN5IGltcGFjdCBoYXMgYmVlbiBkZXRlY3RlZCBieSB0aGUgc2VydmVyLXNpZGUgXG4gICAqIGFuZC9vciBjYW5hcnkgKGlmIHByZXNlbnQpIGFuZCB0aGUgaW1wYWN0IGlzIHJlZ2lvbmFsbHkgc2NvcGVkLCBub3Qgem9uYWxcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbmFsSW1wYWN0QWxhcm06IElBbGFybTtcblxuICAvKipcbiAgICogVGhlIHNlcnZlciBzaWRlIHpvbmFsIGFsYXJtcyBhbmQgcnVsZXMsIGluZGV4ZWQgYnkgQXZhaWxhYmlsaXR5IFpvbmUgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZlclNpZGVab25hbEFsYXJtc0FuZFJ1bGVzOiB7W2tleTogc3RyaW5nXTogSVNlcnZlclNpZGVPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzfTtcblxuICAvKipcbiAgICogVGhlIGNhbmFyeSB6b25hbCBhbGFybXMgYW5kIHJ1bGVzLCBpbmRleGVkIGJ5IEF2YWlsYWJpbGl0eSBab25lIG5hbWUuXG4gICAqIFxuICAgKiBAZGVmYXVsdCAtIFRoaXMgaXMgYW4gZW1wdHkgZGljdGlvbmFyeSBpZiBjYW5hcnkgbWV0cmljIGRldGFpbHMgYXJlIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5Wm9uYWxBbGFybXNBbmRSdWxlcz86IHtba2V5OiBzdHJpbmddOiBJQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBPcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5vcGVyYXRpb24gPSBwcm9wcy5vcGVyYXRpb247XG4gICAgdGhpcy5hZ2dyZWdhdGVab25hbEFsYXJtcyA9IHt9O1xuICAgIHRoaXMuc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXMgPSB7fTtcbiAgICB0aGlzLmNhbmFyeVpvbmFsQWxhcm1zQW5kUnVsZXMgPSB7fTtcblxuICAgIGxldCBsb2FkQmFsYW5jZXJBcm46IHN0cmluZyA9ICcnO1xuXG4gICAgaWYgKHByb3BzLmxvYWRCYWxhbmNlcikge1xuICAgICAgbG9hZEJhbGFuY2VyQXJuID0gKHByb3BzLmxvYWRCYWxhbmNlciBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAubG9hZEJhbGFuY2VyQXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZXMgdGhlIHJlZ2lvbmFsIGltcGFjdCBhbGFybXMgYW5kIGNvbnRyaWJ1dG9yIGluc2lnaHQgcnVsZXNcbiAgICAvLyBmb3IgY29udHJpYnV0b3JzIHRvIHJlZ2lvbmFsIGZhdWx0cyBhbmQgbGF0ZW5jeVxuICAgIHRoaXMuc2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgPVxuICAgICAgbmV3IFNlcnZlclNpZGVPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArICdTZXJ2ZXJTaWRlUmVnaW9uYWxBbGFybXMnLFxuICAgICAgICB7XG4gICAgICAgICAgYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsczpcbiAgICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBsYXRlbmN5TWV0cmljRGV0YWlsczogcHJvcHMub3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBjb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlsczogcHJvcHMub3BlcmF0aW9uXG4gICAgICAgICAgICAuc2VydmVyU2lkZUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzXG4gICAgICAgICAgICA/IHByb3BzLm9wZXJhdGlvbi5zZXJ2ZXJTaWRlQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHNcbiAgICAgICAgICAgIDogcHJvcHMub3BlcmF0aW9uLnNlcnZpY2UuZGVmYXVsdENvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzLFxuICAgICAgICAgIG5hbWVTdWZmaXg6ICctc2VydmVyJyxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAvLyBJZiBjYW5hcnkgbWV0cmljcyBhcmUgZGVmaW5lZCwgY3JlYXRlIHRoZSByZWdpb25hbCBpbXBhY3RcbiAgICAvLyBhbGFybXMgXG4gICAgaWYgKHByb3BzLm9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzKSB7XG4gICAgICB0aGlzLmNhbmFyeVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgPVxuICAgICAgICBuZXcgQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyhcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICsgJ0NhbmFyeVJlZ2lvbmFsQWxhcm1zJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzOlxuICAgICAgICAgICAgICBwcm9wcy5vcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgIC5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgbGF0ZW5jeU1ldHJpY0RldGFpbHM6XG4gICAgICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgbmFtZVN1ZmZpeDogJy1jYW5hcnknLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSB6b25hbCBpc29sYXRlZCBpbXBhY3QgYWxhcm1zXG4gICAgcHJvcHMub3BlcmF0aW9uLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLmZvckVhY2goKGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgbGV0IGF6TGV0dGVyOiBzdHJpbmcgPSBhdmFpbGFiaWxpdHlab25lLnN1YnN0cmluZyhhdmFpbGFiaWxpdHlab25lLmxlbmd0aCAtIDEpO1xuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nID0gcHJvcHMuYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICBsZXQgc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXM6IElTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyA9IG5ldyBTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgcHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgK1xuICAgICAgICAgICdBWicgK1xuICAgICAgICAgIGluZGV4ICtcbiAgICAgICAgICAnU2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXMnLFxuICAgICAgICB7XG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICBvcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzOiBwcm9wcyxcbiAgICAgICAgICBjb3VudGVyOiBpbmRleCxcbiAgICAgICAgICBuYW1lU3VmZml4OiAnLXNlcnZlcidcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXNbYXZhaWxhYmlsaXR5Wm9uZV0gPSBzZXJ2ZXJTaWRlWm9uYWxBbGFybXNBbmRSdWxlcztcblxuICAgICAgaWYgKHByb3BzLm9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzKSB7XG4gICAgICAgIGxldCBjYW5hcnlab25hbEFsYXJtc0FuZFJ1bGVzOiBJQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyA9IG5ldyBDYW5hcnlPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgK1xuICAgICAgICAgICAgJ0FaJyArXG4gICAgICAgICAgICBpbmRleCArXG4gICAgICAgICAgICAnQ2FuYXJ5Wm9uYWxBbGFybXNBbmRSdWxlcycsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICAgIG9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgY291bnRlcjogaW5kZXgsXG4gICAgICAgICAgICBuYW1lU3VmZml4OiAnLWNhbmFyeSdcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY2FuYXJ5Wm9uYWxBbGFybXNBbmRSdWxlcyFbYXZhaWxhYmlsaXR5Wm9uZV0gPSBjYW5hcnlab25hbEFsYXJtc0FuZFJ1bGVzO1xuXG4gICAgICAgIGxldCBhZ2dBbGFybTogSUFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgK1xuICAgICAgICAgICAgJ0FaJyArXG4gICAgICAgICAgICBpbmRleCArXG4gICAgICAgICAgICAnQWdncmVnYXRlWm9uYWxJc29sYXRlZEltcGFjdEFsYXJtJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6XG4gICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCArXG4gICAgICAgICAgICAgICctJyArXG4gICAgICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLnRvTG93ZXJDYXNlKCkgK1xuICAgICAgICAgICAgICAnLWFnZ3JlZ2F0ZS1pc29sYXRlZC1hei1pbXBhY3QnLFxuICAgICAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgICAgIHRoaXMuY2FuYXJ5Wm9uYWxBbGFybXNBbmRSdWxlcyFbYXZhaWxhYmlsaXR5Wm9uZV0uaXNvbGF0ZWRJbXBhY3RBbGFybSxcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2ZXJTaWRlWm9uYWxBbGFybXNBbmRSdWxlc1thdmFpbGFiaWxpdHlab25lXS5pc29sYXRlZEltcGFjdEFsYXJtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWN0aW9uc0VuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgJ3tcImxvYWRCYWxhbmNlclwiOlwiJyArXG4gICAgICAgICAgICAgIGxvYWRCYWxhbmNlckFybiArXG4gICAgICAgICAgICAgICdcIixcImF6LWlkXCI6XCInICtcbiAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkICtcbiAgICAgICAgICAgICAgJ1wifScsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuYWdncmVnYXRlWm9uYWxBbGFybXNbYXZhaWxhYmlsaXR5Wm9uZV0gPSBhZ2dBbGFybTtcbiAgICAgIH0gZWxzZSB7ICAgICAgIFxuICAgICAgICB0aGlzLmFnZ3JlZ2F0ZVpvbmFsQWxhcm1zW2F2YWlsYWJpbGl0eVpvbmVdID0gdGhpcy5zZXJ2ZXJTaWRlWm9uYWxBbGFybXNBbmRSdWxlc1thdmFpbGFiaWxpdHlab25lXS5pc29sYXRlZEltcGFjdEFsYXJtICAgIFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIGEgcmVnaW9uYWwgaW1wYWN0IGFsYXJtIHRoYXQgaXMgdHJpZ2dlcmVkIGlmIHJlZ2lvbmFsXG4gICAgLy8gbWV0cmljcyBmb3IgYXZhaWxhYmlsaXR5IG9yIGxhdGVuY3kgZHJvcCBhbmQgdGhlcmUgaXNuJ3QgYSBzaW5nbGVcbiAgICAvLyBBWiBpbXBhY3QgYWxhcm0gXG4gICAgaWYgKHByb3BzLm9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzKSB7XG4gICAgICB0aGlzLnJlZ2lvbmFsSW1wYWN0QWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0odGhpcywgcHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyBcIi1yZWdpb25hbC1pbXBhY3QtYWxhcm1cIiwge1xuICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6IGAke3Byb3BzLm9wZXJhdGlvbi5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCl9LSR7cHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUudG9Mb3dlckNhc2UoKX0tcmVnaW9uYWwtaW1wYWN0YCxcbiAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYWxsT2YoXG4gICAgICAgICAgQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgICAgdGhpcy5zZXJ2ZXJTaWRlUmVnaW9uYWxBbGFybXNBbmRSdWxlcy5hdmFpbGFiaWxpdHlPckxhdGVuY3lBbGFybSxcbiAgICAgICAgICAgIHRoaXMuY2FuYXJ5UmVnaW9uYWxBbGFybXNBbmRSdWxlcyEuYXZhaWxhYmlsaXR5T3JMYXRlbmN5QWxhcm1cbiAgICAgICAgICApLFxuICAgICAgICAgIEFsYXJtUnVsZS5ub3QoXG4gICAgICAgICAgICBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXModGhpcy5hZ2dyZWdhdGVab25hbEFsYXJtcylcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucmVnaW9uYWxJbXBhY3RBbGFybSA9IG5ldyBDb21wb3NpdGVBbGFybSh0aGlzLCBwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArIFwiLXJlZ2lvbmFsLWltcGFjdC1hbGFybVwiLCB7XG4gICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTogYCR7cHJvcHMub3BlcmF0aW9uLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKX0tJHtwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpfS1yZWdpb25hbC1pbXBhY3RgLFxuICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbGxPZihcbiAgICAgICAgICB0aGlzLnNlcnZlclNpZGVSZWdpb25hbEFsYXJtc0FuZFJ1bGVzLmF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFsYXJtLCAgICAgXG4gICAgICAgICAgQWxhcm1SdWxlLm5vdChcbiAgICAgICAgICAgIEFsYXJtUnVsZS5hbnlPZihcbiAgICAgICAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyh0aGlzLmFnZ3JlZ2F0ZVpvbmFsQWxhcm1zKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59Il19
@@ -16,31 +16,37 @@ export declare class ServiceAlarmsAndRules extends Construct implements IService
16
16
  * triggers for availability or latency impact to any critical operation in that AZ
17
17
  * that indicates it has isolated impact as measured by canaries or server-side.
18
18
  */
19
- zonalAggregateIsolatedImpactAlarms: IAlarm[];
19
+ zonalAggregateIsolatedImpactAlarms: {
20
+ [key: string]: IAlarm;
21
+ };
20
22
  /**
21
23
  * The zonal server-side isolated impact alarms. There is 1 alarm per AZ that triggers
22
- * on availability or atency impact to any critical operation in that AZ. These are useful
24
+ * on availability or latency impact to any critical operation in that AZ. These are useful
23
25
  * for deployment monitoring to not inadvertently fail when a canary can't contact an AZ
24
26
  * during a deployment.
25
27
  */
26
- zonalServerSideIsolatedImpactAlarms: IAlarm[];
28
+ zonalServerSideIsolatedImpactAlarms: {
29
+ [key: string]: IAlarm;
30
+ };
27
31
  /**
28
- * An alarm for regional availability or latency impact of any critical operation as measured by the canary.
32
+ * An alarm indicating the canary has discovered an availability or latency impact on a critical
33
+ * operation while testing the regional endpoint.
29
34
  */
30
- regionalAvailabilityOrLatencyCanaryAlarm?: IAlarm;
35
+ regionalCanaryAlarm?: IAlarm;
31
36
  /**
32
- * An alarm for regional availability impact of any critical operation as measured by the canary.
37
+ * An alarm indicating there is availability or latency impact on a critical operation
38
+ * that is not scoped to a single availability zone as measured by the server-side and/or canary (if present)
33
39
  */
34
- regionalAvailabilityCanaryAlarm?: IAlarm;
40
+ regionalImpactAlarm: IAlarm;
35
41
  /**
36
- * An alarm for regional availability or latency impact of any critical operation as measured by the server-side.
42
+ * An alarm indicating there is availability or latency impact on a critical operation
43
+ * that is not scoped to a single availability zone as measured by the server-side
37
44
  */
45
+ regionalServerSideImpactAlarm: IAlarm;
38
46
  /**
39
- * An alarm for regional availability impact of any critical operation as measured by the server-side.
47
+ * This is the top level alarm you should tie notifications/paging/alerting to. It triggers
48
+ * on any impact to a critical operation either zonally scoped or regionally scoped.
40
49
  */
41
- /**
42
- * An alarm for fault count exceeding a regional threshold for all critical operations.
43
- */
44
- regionalFaultCountServerSideAlarm: IAlarm;
50
+ serviceImpactAlarm: IAlarm;
45
51
  constructor(scope: Construct, id: string, props: ServiceAlarmsAndRulesProps);
46
52
  }