@cdklabs/multi-az-observability 0.0.0-alpha.0
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.
- package/.jsii +10177 -0
- package/API.md +5119 -0
- package/LICENSE +202 -0
- package/README.md +175 -0
- package/cdk.json +68 -0
- package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.d.ts +214 -0
- package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.js +763 -0
- package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.d.ts +22 -0
- package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.js +21 -0
- package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.d.ts +34 -0
- package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.js +39 -0
- package/lib/alarmsandrules/CanaryOperationRegionalAlarmsAndRules.d.ts +7 -0
- package/lib/alarmsandrules/CanaryOperationRegionalAlarmsAndRules.js +11 -0
- package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.d.ts +16 -0
- package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.js +17 -0
- package/lib/alarmsandrules/IBaseOperationRegionalAlarmsAndRules.d.ts +18 -0
- package/lib/alarmsandrules/IBaseOperationRegionalAlarmsAndRules.js +3 -0
- package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.d.ts +30 -0
- package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.js +3 -0
- package/lib/alarmsandrules/ICanaryOperationRegionalAlarmsAndRules.d.ts +6 -0
- package/lib/alarmsandrules/ICanaryOperationRegionalAlarmsAndRules.js +3 -0
- package/lib/alarmsandrules/ICanaryOperationZonalAlarmsAndRules.d.ts +12 -0
- package/lib/alarmsandrules/ICanaryOperationZonalAlarmsAndRules.js +3 -0
- package/lib/alarmsandrules/IOperationAlarmsAndRules.d.ts +55 -0
- package/lib/alarmsandrules/IOperationAlarmsAndRules.js +3 -0
- package/lib/alarmsandrules/IServerSideOperationRegionalAlarmsAndRules.d.ts +15 -0
- package/lib/alarmsandrules/IServerSideOperationRegionalAlarmsAndRules.js +3 -0
- package/lib/alarmsandrules/IServerSideOperationZonalAlarmsAndRules.d.ts +36 -0
- package/lib/alarmsandrules/IServerSideOperationZonalAlarmsAndRules.js +3 -0
- package/lib/alarmsandrules/IServiceAlarmsAndRules.d.ts +44 -0
- package/lib/alarmsandrules/IServiceAlarmsAndRules.js +3 -0
- package/lib/alarmsandrules/InsightRuleBody.d.ts +67 -0
- package/lib/alarmsandrules/InsightRuleBody.js +46 -0
- package/lib/alarmsandrules/OperationAlarmsAndRules.d.ts +59 -0
- package/lib/alarmsandrules/OperationAlarmsAndRules.js +135 -0
- package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.d.ts +19 -0
- package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.js +22 -0
- package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.d.ts +40 -0
- package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.js +46 -0
- package/lib/alarmsandrules/ServiceAlarmsAndRules.d.ts +48 -0
- package/lib/alarmsandrules/ServiceAlarmsAndRules.js +166 -0
- package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.d.ts +24 -0
- package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.js +3 -0
- package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.d.ts +62 -0
- package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.js +3 -0
- package/lib/alarmsandrules/props/CanaryOperationRegionalAlarmsAndRulesProps.d.ts +6 -0
- package/lib/alarmsandrules/props/CanaryOperationRegionalAlarmsAndRulesProps.js +3 -0
- package/lib/alarmsandrules/props/CanaryOperationZonalAlarmsAndRulesProps.d.ts +6 -0
- package/lib/alarmsandrules/props/CanaryOperationZonalAlarmsAndRulesProps.js +3 -0
- package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.d.ts +45 -0
- package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.js +3 -0
- package/lib/alarmsandrules/props/ServerSideOperationRegionalAlarmsAndRulesProps.d.ts +6 -0
- package/lib/alarmsandrules/props/ServerSideOperationRegionalAlarmsAndRulesProps.js +3 -0
- package/lib/alarmsandrules/props/ServerSideOperationZonalAlarmsAndRulesProps.d.ts +6 -0
- package/lib/alarmsandrules/props/ServerSideOperationZonalAlarmsAndRulesProps.js +3 -0
- package/lib/alarmsandrules/props/ServiceAlarmsAndRulesProps.d.ts +13 -0
- package/lib/alarmsandrules/props/ServiceAlarmsAndRulesProps.js +3 -0
- package/lib/azmapper/AvailabilityZoneMapper.d.ts +86 -0
- package/lib/azmapper/AvailabilityZoneMapper.js +200 -0
- package/lib/azmapper/IAvailabilityZoneMapper.d.ts +86 -0
- package/lib/azmapper/IAvailabilityZoneMapper.js +3 -0
- package/lib/azmapper/props/AvailabilityZoneMapperProps.d.ts +13 -0
- package/lib/azmapper/props/AvailabilityZoneMapperProps.js +3 -0
- package/lib/azmapper/src/index.py +107 -0
- package/lib/canaries/CanaryFunction.d.ts +16 -0
- package/lib/canaries/CanaryFunction.js +152 -0
- package/lib/canaries/CanaryTest.d.ts +10 -0
- package/lib/canaries/CanaryTest.js +84 -0
- package/lib/canaries/ICanaryFunction.d.ts +6 -0
- package/lib/canaries/ICanaryFunction.js +3 -0
- package/lib/canaries/props/AddCanaryTestProps.d.ts +66 -0
- package/lib/canaries/props/AddCanaryTestProps.js +3 -0
- package/lib/canaries/props/CanaryFunctionProps.d.ts +29 -0
- package/lib/canaries/props/CanaryFunctionProps.js +3 -0
- package/lib/canaries/props/CanaryTestProps.d.ts +21 -0
- package/lib/canaries/props/CanaryTestProps.js +3 -0
- package/lib/canaries/props/NetworkConfigurationProps.d.ts +16 -0
- package/lib/canaries/props/NetworkConfigurationProps.js +3 -0
- package/lib/canaries/src/canary.zip +0 -0
- package/lib/dashboards/BasicServiceDashboard.d.ts +10 -0
- package/lib/dashboards/BasicServiceDashboard.js +130 -0
- package/lib/dashboards/ContributorInsightsWidget.d.ts +22 -0
- package/lib/dashboards/ContributorInsightsWidget.js +55 -0
- package/lib/dashboards/IOperationAvailabilityAndLatencyDashboard.d.ts +10 -0
- package/lib/dashboards/IOperationAvailabilityAndLatencyDashboard.js +3 -0
- package/lib/dashboards/IServiceAvailabilityAndLatencyDashboard.d.ts +10 -0
- package/lib/dashboards/IServiceAvailabilityAndLatencyDashboard.js +3 -0
- package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.d.ts +20 -0
- package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +588 -0
- package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.d.ts +24 -0
- package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +475 -0
- package/lib/dashboards/props/BasicServiceDashboardProps.d.ts +23 -0
- package/lib/dashboards/props/BasicServiceDashboardProps.js +3 -0
- package/lib/dashboards/props/ContributorInsightWidgetProps.d.ts +31 -0
- package/lib/dashboards/props/ContributorInsightWidgetProps.js +3 -0
- package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.d.ts +84 -0
- package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.js +3 -0
- package/lib/dashboards/props/OperationAvailabilityWidgetProps.d.ts +37 -0
- package/lib/dashboards/props/OperationAvailabilityWidgetProps.js +3 -0
- package/lib/dashboards/props/OperationLatencyWidgetProps.d.ts +37 -0
- package/lib/dashboards/props/OperationLatencyWidgetProps.js +3 -0
- package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.d.ts +30 -0
- package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.js +3 -0
- package/lib/index.d.ts +35 -0
- package/lib/index.js +30 -0
- package/lib/metrics/ApplicationLoadBalancerMetrics.d.ts +36 -0
- package/lib/metrics/ApplicationLoadBalancerMetrics.js +150 -0
- package/lib/metrics/AvailabilityAndLatencyMetrics.d.ts +61 -0
- package/lib/metrics/AvailabilityAndLatencyMetrics.js +212 -0
- package/lib/metrics/NetworkLoadBalancerMetrics.d.ts +19 -0
- package/lib/metrics/NetworkLoadBalancerMetrics.js +48 -0
- package/lib/metrics/RegionalAvailabilityMetrics.d.ts +19 -0
- package/lib/metrics/RegionalAvailabilityMetrics.js +71 -0
- package/lib/metrics/RegionalLatencyMetrics.d.ts +33 -0
- package/lib/metrics/RegionalLatencyMetrics.js +69 -0
- package/lib/metrics/ZonalAvailabilityMetrics.d.ts +19 -0
- package/lib/metrics/ZonalAvailabilityMetrics.js +71 -0
- package/lib/metrics/ZonalLatencyMetrics.d.ts +29 -0
- package/lib/metrics/ZonalLatencyMetrics.js +65 -0
- package/lib/metrics/props/AvailabilityAndLatencyMetricProps.d.ts +23 -0
- package/lib/metrics/props/AvailabilityAndLatencyMetricProps.js +3 -0
- package/lib/metrics/props/AvailabilityMetricProps.d.ts +11 -0
- package/lib/metrics/props/AvailabilityMetricProps.js +3 -0
- package/lib/metrics/props/LatencyMetricProps.d.ts +15 -0
- package/lib/metrics/props/LatencyMetricProps.js +3 -0
- package/lib/metrics/props/RegionalAvailabilityMetricProps.d.ts +6 -0
- package/lib/metrics/props/RegionalAvailabilityMetricProps.js +3 -0
- package/lib/metrics/props/RegionalLatencyMetricProps.d.ts +6 -0
- package/lib/metrics/props/RegionalLatencyMetricProps.js +3 -0
- package/lib/metrics/props/ServiceAvailabilityMetricProps.d.ts +23 -0
- package/lib/metrics/props/ServiceAvailabilityMetricProps.js +3 -0
- package/lib/metrics/props/ServiceLatencyMericProps.d.ts +23 -0
- package/lib/metrics/props/ServiceLatencyMericProps.js +3 -0
- package/lib/metrics/props/ZonalAvailabilityMetricProps.d.ts +10 -0
- package/lib/metrics/props/ZonalAvailabilityMetricProps.js +3 -0
- package/lib/metrics/props/ZonalLatencyMetricProps.d.ts +10 -0
- package/lib/metrics/props/ZonalLatencyMetricProps.js +3 -0
- package/lib/monitoring/src/monitoring-layer.zip +0 -0
- package/lib/outlier-detection/IOutlierDetectionFunction.d.ts +12 -0
- package/lib/outlier-detection/IOutlierDetectionFunction.js +3 -0
- package/lib/outlier-detection/OutlierDetectionFunction.d.ts +16 -0
- package/lib/outlier-detection/OutlierDetectionFunction.js +126 -0
- package/lib/outlier-detection/props/OutlierDetectionFunctionProps.d.ts +12 -0
- package/lib/outlier-detection/props/OutlierDetectionFunctionProps.js +3 -0
- package/lib/outlier-detection/src/outlier-detection.zip +0 -0
- package/lib/outlier-detection/src/scipy-layer.zip +0 -0
- package/lib/services/BasicServiceMultiAZObservability.d.ts +64 -0
- package/lib/services/BasicServiceMultiAZObservability.js +504 -0
- package/lib/services/CanaryMetrics.d.ts +17 -0
- package/lib/services/CanaryMetrics.js +19 -0
- package/lib/services/CanaryTestMetricsOverride.d.ts +39 -0
- package/lib/services/CanaryTestMetricsOverride.js +23 -0
- package/lib/services/ContributorInsightRuleDetails.d.ts +42 -0
- package/lib/services/ContributorInsightRuleDetails.js +23 -0
- package/lib/services/IBasicServiceMultiAZObservability.d.ts +45 -0
- package/lib/services/IBasicServiceMultiAZObservability.js +3 -0
- package/lib/services/ICanaryMetrics.d.ts +14 -0
- package/lib/services/ICanaryMetrics.js +3 -0
- package/lib/services/ICanaryTestMetricsOverride.d.ts +36 -0
- package/lib/services/ICanaryTestMetricsOverride.js +3 -0
- package/lib/services/IContributorInsightRuleDetails.d.ts +38 -0
- package/lib/services/IContributorInsightRuleDetails.js +3 -0
- package/lib/services/IInstrumentedServiceMultiAZObservability.d.ts +39 -0
- package/lib/services/IInstrumentedServiceMultiAZObservability.js +3 -0
- package/lib/services/IOperation.d.ts +75 -0
- package/lib/services/IOperation.js +3 -0
- package/lib/services/IOperationMetricDetails.d.ts +78 -0
- package/lib/services/IOperationMetricDetails.js +3 -0
- package/lib/services/IService.d.ts +76 -0
- package/lib/services/IService.js +3 -0
- package/lib/services/IServiceMetricDetails.d.ts +68 -0
- package/lib/services/IServiceMetricDetails.js +3 -0
- package/lib/services/InstrumentedServiceMultiAZObservability.d.ts +55 -0
- package/lib/services/InstrumentedServiceMultiAZObservability.js +310 -0
- package/lib/services/Operation.d.ts +78 -0
- package/lib/services/Operation.js +34 -0
- package/lib/services/OperationMetricDetails.d.ts +82 -0
- package/lib/services/OperationMetricDetails.js +50 -0
- package/lib/services/Service.d.ts +80 -0
- package/lib/services/Service.js +36 -0
- package/lib/services/ServiceMetricDetails.d.ts +71 -0
- package/lib/services/ServiceMetricDetails.js +28 -0
- package/lib/services/props/BasicServiceMultiAZObservabilityProps.d.ts +126 -0
- package/lib/services/props/BasicServiceMultiAZObservabilityProps.js +3 -0
- package/lib/services/props/CanaryMetricProps.d.ts +14 -0
- package/lib/services/props/CanaryMetricProps.js +3 -0
- package/lib/services/props/CanaryTestMetricsOverrideProps.d.ts +47 -0
- package/lib/services/props/CanaryTestMetricsOverrideProps.js +3 -0
- package/lib/services/props/ContributorInsightRuleDetailsProps.d.ts +38 -0
- package/lib/services/props/ContributorInsightRuleDetailsProps.js +3 -0
- package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.d.ts +88 -0
- package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.js +3 -0
- package/lib/services/props/MetricDimensions.d.ts +61 -0
- package/lib/services/props/MetricDimensions.js +63 -0
- package/lib/services/props/OperationMetricDetailsProps.d.ts +97 -0
- package/lib/services/props/OperationMetricDetailsProps.js +3 -0
- package/lib/services/props/OperationProps.d.ts +93 -0
- package/lib/services/props/OperationProps.js +3 -0
- package/lib/services/props/ServiceMetricDetailsProps.d.ts +68 -0
- package/lib/services/props/ServiceMetricDetailsProps.js +3 -0
- package/lib/services/props/ServiceProps.d.ts +69 -0
- package/lib/services/props/ServiceProps.js +3 -0
- package/lib/utilities/AvailabilityMetricType.d.ts +26 -0
- package/lib/utilities/AvailabilityMetricType.js +33 -0
- package/lib/utilities/LatencyMetricType.d.ts +13 -0
- package/lib/utilities/LatencyMetricType.js +20 -0
- package/lib/utilities/OutlierDetectionAlgorithm.d.ts +42 -0
- package/lib/utilities/OutlierDetectionAlgorithm.js +49 -0
- package/lib/utilities/StackWithDynamicSource.d.ts +14 -0
- package/lib/utilities/StackWithDynamicSource.js +82 -0
- package/package.json +176 -0
- package/rosetta/default.ts-fixture +13 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ServiceAlarmsAndRules = void 0;
|
|
4
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
5
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
|
|
8
|
+
const constructs_1 = require("constructs");
|
|
9
|
+
const AvailabilityAndLatencyMetrics_1 = require("../metrics/AvailabilityAndLatencyMetrics");
|
|
10
|
+
const RegionalAvailabilityMetrics_1 = require("../metrics/RegionalAvailabilityMetrics");
|
|
11
|
+
const AvailabilityMetricType_1 = require("../utilities/AvailabilityMetricType");
|
|
12
|
+
/**
|
|
13
|
+
* Service level alarms and rules using critical operations
|
|
14
|
+
*/
|
|
15
|
+
class ServiceAlarmsAndRules extends constructs_1.Construct {
|
|
16
|
+
constructor(scope, id, props) {
|
|
17
|
+
super(scope, id);
|
|
18
|
+
this.service = props.service;
|
|
19
|
+
let criticalOperations = props.service.operations
|
|
20
|
+
.filter((x) => x.critical == true)
|
|
21
|
+
.map((x) => x.operationName);
|
|
22
|
+
let counter = 1;
|
|
23
|
+
this.zonalAggregateIsolatedImpactAlarms = [];
|
|
24
|
+
this.zonalServerSideIsolatedImpactAlarms = [];
|
|
25
|
+
let availabilityZoneIds = props.service.availabilityZoneNames.map((x) => {
|
|
26
|
+
return props.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(x.substring(x.length - 1));
|
|
27
|
+
});
|
|
28
|
+
for (let i = 0; i < availabilityZoneIds.length; i++) {
|
|
29
|
+
let availabilityZonedId = availabilityZoneIds[i];
|
|
30
|
+
this.zonalAggregateIsolatedImpactAlarms.push(new aws_cloudwatch_1.CompositeAlarm(this, 'AZ' + counter + 'ServiceAggregateIsolatedImpactAlarm', {
|
|
31
|
+
compositeAlarmName: availabilityZonedId +
|
|
32
|
+
'-' +
|
|
33
|
+
props.service.serviceName.toLowerCase() +
|
|
34
|
+
'-isolated-impact-aggregate-alarm',
|
|
35
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(Object.entries(props.perOperationAlarmsAndRules).reduce((filtered, [key, value]) => {
|
|
36
|
+
if (criticalOperations.indexOf(key) > -1) {
|
|
37
|
+
filtered[key] = value;
|
|
38
|
+
}
|
|
39
|
+
return filtered;
|
|
40
|
+
}, {})).map((x) => x.aggregateZonalAlarms[i])),
|
|
41
|
+
}));
|
|
42
|
+
this.zonalServerSideIsolatedImpactAlarms.push(new aws_cloudwatch_1.CompositeAlarm(this, 'AZ' + counter + 'ServiceServerSideIsolatedImpactAlarm', {
|
|
43
|
+
compositeAlarmName: availabilityZonedId +
|
|
44
|
+
'-' +
|
|
45
|
+
props.service.serviceName.toLowerCase() +
|
|
46
|
+
'-isolated-impact-server-side-alarm',
|
|
47
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(Object.entries(props.perOperationAlarmsAndRules).reduce((filtered, [key, value]) => {
|
|
48
|
+
if (criticalOperations.indexOf(key) > -1) {
|
|
49
|
+
filtered[key] = value;
|
|
50
|
+
}
|
|
51
|
+
return filtered;
|
|
52
|
+
}, {})).map((x) => x.serverSideZonalAlarmsMap[availabilityZonedId])),
|
|
53
|
+
}));
|
|
54
|
+
counter++;
|
|
55
|
+
}
|
|
56
|
+
let keyPrefix = '';
|
|
57
|
+
let regionalOperationFaultCountMetrics = {};
|
|
58
|
+
props.service.operations
|
|
59
|
+
.filter((x) => x.critical == true)
|
|
60
|
+
.forEach((x) => {
|
|
61
|
+
keyPrefix = AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.nextChar(keyPrefix);
|
|
62
|
+
regionalOperationFaultCountMetrics[keyPrefix] =
|
|
63
|
+
RegionalAvailabilityMetrics_1.RegionalAvailabilityMetrics.createRegionalAvailabilityMetric({
|
|
64
|
+
label: x.operationName + ' fault count',
|
|
65
|
+
metricDetails: x.serverSideAvailabilityMetricDetails,
|
|
66
|
+
metricType: AvailabilityMetricType_1.AvailabilityMetricType.FAULT_COUNT,
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
let regionalFaultCount = new aws_cloudwatch_1.MathExpression({
|
|
70
|
+
usingMetrics: regionalOperationFaultCountMetrics,
|
|
71
|
+
expression: Object.keys(regionalOperationFaultCountMetrics).join('+'),
|
|
72
|
+
label: props.service.serviceName + ' fault count',
|
|
73
|
+
period: props.service.period,
|
|
74
|
+
});
|
|
75
|
+
this.regionalFaultCountServerSideAlarm = new aws_cloudwatch_1.Alarm(this, 'RegionalFaultCount', {
|
|
76
|
+
alarmName: aws_cdk_lib_1.Fn.ref('AWS::Region') +
|
|
77
|
+
'-' +
|
|
78
|
+
props.service.serviceName.toLowerCase() +
|
|
79
|
+
'-fault-count',
|
|
80
|
+
datapointsToAlarm: 3,
|
|
81
|
+
evaluationPeriods: 5,
|
|
82
|
+
comparisonOperator: aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
83
|
+
threshold: props.service.faultCountThreshold,
|
|
84
|
+
alarmDescription: 'Counts faults from all critical operation in the service',
|
|
85
|
+
metric: regionalFaultCount,
|
|
86
|
+
});
|
|
87
|
+
let canaryAlarms = Object.values(Object.entries(props.perOperationAlarmsAndRules).reduce((filtered, [key, value]) => {
|
|
88
|
+
if (criticalOperations.indexOf(key) > -1) {
|
|
89
|
+
filtered[key] = value;
|
|
90
|
+
}
|
|
91
|
+
return filtered;
|
|
92
|
+
}, {}))
|
|
93
|
+
.reduce((filtered, value) => {
|
|
94
|
+
if (value.canaryRegionalAlarmsAndRules !== undefined) {
|
|
95
|
+
filtered.push(value.canaryRegionalAlarmsAndRules);
|
|
96
|
+
}
|
|
97
|
+
return filtered;
|
|
98
|
+
}, [])
|
|
99
|
+
.map((x) => x.availabilityOrLatencyAlarm);
|
|
100
|
+
if (canaryAlarms !== undefined &&
|
|
101
|
+
canaryAlarms !== null &&
|
|
102
|
+
canaryAlarms.length > 0) {
|
|
103
|
+
this.regionalAvailabilityOrLatencyCanaryAlarm = new aws_cloudwatch_1.CompositeAlarm(this, 'ServiceCanaryAvailabilityOrLatencyAggregateAlarm', {
|
|
104
|
+
compositeAlarmName: aws_cdk_lib_1.Fn.ref('AWS::Region') +
|
|
105
|
+
'-' +
|
|
106
|
+
props.service.serviceName.toLowerCase() +
|
|
107
|
+
'-canary-availability-or-latency-aggregate-alarm',
|
|
108
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...canaryAlarms),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
let canaryAvailabilityAlarms = Object.values(Object.entries(props.perOperationAlarmsAndRules).reduce((filtered, [key, value]) => {
|
|
112
|
+
if (criticalOperations.indexOf(key) > -1) {
|
|
113
|
+
filtered[key] = value;
|
|
114
|
+
}
|
|
115
|
+
return filtered;
|
|
116
|
+
}, {}))
|
|
117
|
+
.reduce((filtered, value) => {
|
|
118
|
+
if (value.canaryRegionalAlarmsAndRules !== undefined) {
|
|
119
|
+
filtered.push(value.canaryRegionalAlarmsAndRules);
|
|
120
|
+
}
|
|
121
|
+
return filtered;
|
|
122
|
+
}, [])
|
|
123
|
+
.map((x) => x.availabilityAlarm);
|
|
124
|
+
if (canaryAvailabilityAlarms !== undefined &&
|
|
125
|
+
canaryAvailabilityAlarms !== null &&
|
|
126
|
+
canaryAvailabilityAlarms.length > 0) {
|
|
127
|
+
this.regionalAvailabilityCanaryAlarm = new aws_cloudwatch_1.CompositeAlarm(this, 'ServiceCanaryAvailabilityAggregateAlarm', {
|
|
128
|
+
compositeAlarmName: aws_cdk_lib_1.Fn.ref('AWS::Region') +
|
|
129
|
+
'-' +
|
|
130
|
+
props.service.serviceName.toLowerCase() +
|
|
131
|
+
'-canary-availability-aggregate-alarm',
|
|
132
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...canaryAvailabilityAlarms),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
this.regionalAvailabilityOrLatencyServerSideAlarm = new aws_cloudwatch_1.CompositeAlarm(this, 'ServiceServerSideAggregateIsolatedImpactAlarm', {
|
|
136
|
+
compositeAlarmName: aws_cdk_lib_1.Fn.ref('AWS::Region') +
|
|
137
|
+
'-' +
|
|
138
|
+
props.service.serviceName.toLowerCase() +
|
|
139
|
+
'-server-side-aggregate-alarm',
|
|
140
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(Object.entries(props.perOperationAlarmsAndRules).reduce((filtered, [key, value]) => {
|
|
141
|
+
if (criticalOperations.indexOf(key) > -1) {
|
|
142
|
+
filtered[key] = value;
|
|
143
|
+
}
|
|
144
|
+
return filtered;
|
|
145
|
+
}, {}))
|
|
146
|
+
.map((x) => x.serverSideRegionalAlarmsAndRules)
|
|
147
|
+
.map((x) => x.availabilityOrLatencyAlarm)),
|
|
148
|
+
});
|
|
149
|
+
this.regionalAvailabilityServerSideAlarm = new aws_cloudwatch_1.CompositeAlarm(this, 'ServiceServerSideAvailabilityAlarm', {
|
|
150
|
+
compositeAlarmName: aws_cdk_lib_1.Fn.ref('AWS::Region') +
|
|
151
|
+
'-' +
|
|
152
|
+
props.service.serviceName.toLowerCase() +
|
|
153
|
+
'-server-side-availability-alarm',
|
|
154
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(Object.entries(props.perOperationAlarmsAndRules).reduce((filtered, [key, value]) => {
|
|
155
|
+
if (criticalOperations.indexOf(key) > -1) {
|
|
156
|
+
filtered[key] = value;
|
|
157
|
+
}
|
|
158
|
+
return filtered;
|
|
159
|
+
}, {}))
|
|
160
|
+
.map((x) => x.serverSideRegionalAlarmsAndRules)
|
|
161
|
+
.map((x) => x.availabilityAlarm)),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
exports.ServiceAlarmsAndRules = ServiceAlarmsAndRules;
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUFsYXJtc0FuZFJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FsYXJtc2FuZHJ1bGVzL1NlcnZpY2VBbGFybXNBbmRSdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBQ3RDLDZDQUFpQztBQUNqQywrREFRb0M7QUFDcEMsMkNBQXVDO0FBS3ZDLDRGQUF5RjtBQUN6Rix3RkFBcUY7QUFFckYsZ0ZBQTZFO0FBRTdFOztHQUVHO0FBQ0gsTUFBYSxxQkFDWCxTQUFRLHNCQUFTO0lBK0NqQixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRTdCLElBQUksa0JBQWtCLEdBQWEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVO2FBQ3hELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7YUFDakMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0IsSUFBSSxPQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLEVBQUUsQ0FBQztRQUU5QyxJQUFJLG1CQUFtQixHQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUN6RSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ0osT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUNoRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQzFCLENB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TSxDQUFDLE1BQU0sQ0FDZCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLE1BQU0sQ0FDckQsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDekMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDeEIsQ0FBQztnQkFFRCxPQUFPLFFBQVEsQ0FBQztZQUNsQixDQUFDLEVBQ0QsRUFBaUQsQ0FDbEQsQ0FDRjtpQkFDRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQztpQkFDOUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FDbkM7U0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFsVEQsc0RBa1RDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgRm4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBBbGFybSxcbiAgQWxhcm1SdWxlLFxuICBDb21wYXJpc29uT3BlcmF0b3IsXG4gIENvbXBvc2l0ZUFsYXJtLFxuICBJQWxhcm0sXG4gIElNZXRyaWMsXG4gIE1hdGhFeHByZXNzaW9uLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9JQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lPcGVyYXRpb25BbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJU2VydmljZUFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9JU2VydmljZUFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IFNlcnZpY2VBbGFybXNBbmRSdWxlc1Byb3BzIH0gZnJvbSAnLi9wcm9wcy9TZXJ2aWNlQWxhcm1zQW5kUnVsZXNQcm9wcyc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcyB9IGZyb20gJy4uL21ldHJpY3MvQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MnO1xuaW1wb3J0IHsgUmVnaW9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzIH0gZnJvbSAnLi4vbWV0cmljcy9SZWdpb25hbEF2YWlsYWJpbGl0eU1ldHJpY3MnO1xuaW1wb3J0IHsgSVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9JU2VydmljZSc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL0F2YWlsYWJpbGl0eU1ldHJpY1R5cGUnO1xuXG4vKipcbiAqIFNlcnZpY2UgbGV2ZWwgYWxhcm1zIGFuZCBydWxlcyB1c2luZyBjcml0aWNhbCBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQWxhcm1zQW5kUnVsZXNcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJU2VydmljZUFsYXJtc0FuZFJ1bGVzIHtcbiAgLyoqXG4gICAqIFRoZSBzZXJ2aWNlIHRoZXNlIGFsYXJtcyBhbmQgcnVsZXMgYXJlIGZvclxuICAgKi9cbiAgc2VydmljZTogSVNlcnZpY2U7XG5cbiAgLyoqXG4gICAqIFRoZSB6b25hbCBhZ2dyZWdhdGUgaXNvbGF0ZWQgaW1wYWN0IGFsYXJtcy4gVGhlcmUgaXMgMSBhbGFybSBwZXIgQVogdGhhdFxuICAgKiB0cmlnZ2VycyBmb3IgYXZhaWxhYmlsaXR5IG9yIGxhdGVuY3kgaW1wYWN0IHRvIGFueSBjcml0aWNhbCBvcGVyYXRpb24gaW4gdGhhdCBBWlxuICAgKiB0aGF0IGluZGljYXRlcyBpdCBoYXMgaXNvbGF0ZWQgaW1wYWN0IGFzIG1lYXN1cmVkIGJ5IGNhbmFyaWVzIG9yIHNlcnZlci1zaWRlLlxuICAgKi9cbiAgem9uYWxBZ2dyZWdhdGVJc29sYXRlZEltcGFjdEFsYXJtczogSUFsYXJtW107XG5cbiAgLyoqXG4gICAqIFRoZSB6b25hbCBzZXJ2ZXItc2lkZSBpc29sYXRlZCBpbXBhY3QgYWxhcm1zLiBUaGVyZSBpcyAxIGFsYXJtIHBlciBBWiB0aGF0IHRyaWdnZXJzXG4gICAqIG9uIGF2YWlsYWJpbGl0eSBvciBhdGVuY3kgaW1wYWN0IHRvIGFueSBjcml0aWNhbCBvcGVyYXRpb24gaW4gdGhhdCBBWi4gVGhlc2UgYXJlIHVzZWZ1bFxuICAgKiBmb3IgZGVwbG95bWVudCBtb25pdG9yaW5nIHRvIG5vdCBpbmFkdmVydGVudGx5IGZhaWwgd2hlbiBhIGNhbmFyeSBjYW4ndCBjb250YWN0IGFuIEFaXG4gICAqIGR1cmluZyBhIGRlcGxveW1lbnQuXG4gICAqL1xuICB6b25hbFNlcnZlclNpZGVJc29sYXRlZEltcGFjdEFsYXJtczogSUFsYXJtW107XG5cbiAgLyoqXG4gICAqIEFuIGFsYXJtIGZvciByZWdpb25hbCBhdmFpbGFiaWxpdHkgb3IgbGF0ZW5jeSBpbXBhY3Qgb2YgYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBhcyBtZWFzdXJlZCBieSB0aGUgY2FuYXJ5LlxuICAgKi9cbiAgcmVnaW9uYWxBdmFpbGFiaWxpdHlPckxhdGVuY3lDYW5hcnlBbGFybT86IElBbGFybTtcblxuICAvKipcbiAgICogQW4gYWxhcm0gZm9yIHJlZ2lvbmFsIGF2YWlsYWJpbGl0eSBpbXBhY3Qgb2YgYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBhcyBtZWFzdXJlZCBieSB0aGUgY2FuYXJ5LlxuICAgKi9cbiAgcmVnaW9uYWxBdmFpbGFiaWxpdHlDYW5hcnlBbGFybT86IElBbGFybTtcblxuICAvKipcbiAgICogQW4gYWxhcm0gZm9yIHJlZ2lvbmFsIGF2YWlsYWJpbGl0eSBvciBsYXRlbmN5IGltcGFjdCBvZiBhbnkgY3JpdGljYWwgb3BlcmF0aW9uIGFzIG1lYXN1cmVkIGJ5IHRoZSBzZXJ2ZXItc2lkZS5cbiAgICovXG4gIHJlZ2lvbmFsQXZhaWxhYmlsaXR5T3JMYXRlbmN5U2VydmVyU2lkZUFsYXJtOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEFuIGFsYXJtIGZvciByZWdpb25hbCBhdmFpbGFiaWxpdHkgaW1wYWN0IG9mIGFueSBjcml0aWNhbCBvcGVyYXRpb24gYXMgbWVhc3VyZWQgYnkgdGhlIHNlcnZlci1zaWRlLlxuICAgKi9cbiAgcmVnaW9uYWxBdmFpbGFiaWxpdHlTZXJ2ZXJTaWRlQWxhcm06IElBbGFybTtcblxuICAvKipcbiAgICogQW4gYWxhcm0gZm9yIGZhdWx0IGNvdW50IGV4Y2VlZGluZyBhIHJlZ2lvbmFsIHRocmVzaG9sZCBmb3IgYWxsIGNyaXRpY2FsIG9wZXJhdGlvbnMuXG4gICAqL1xuICByZWdpb25hbEZhdWx0Q291bnRTZXJ2ZXJTaWRlQWxhcm06IElBbGFybTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2VydmljZUFsYXJtc0FuZFJ1bGVzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuc2VydmljZSA9IHByb3BzLnNlcnZpY2U7XG5cbiAgICBsZXQgY3JpdGljYWxPcGVyYXRpb25zOiBzdHJpbmdbXSA9IHByb3BzLnNlcnZpY2Uub3BlcmF0aW9uc1xuICAgICAgLmZpbHRlcigoeCkgPT4geC5jcml0aWNhbCA9PSB0cnVlKVxuICAgICAgLm1hcCgoeCkgPT4geC5vcGVyYXRpb25OYW1lKTtcbiAgICBsZXQgY291bnRlcjogbnVtYmVyID0gMTtcbiAgICB0aGlzLnpvbmFsQWdncmVnYXRlSXNvbGF0ZWRJbXBhY3RBbGFybXMgPSBbXTtcbiAgICB0aGlzLnpvbmFsU2VydmVyU2lkZUlzb2xhdGVkSW1wYWN0QWxhcm1zID0gW107XG5cbiAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkczogc3RyaW5nW10gPSBwcm9wcy5zZXJ2aWNlLmF2YWlsYWJpbGl0eVpvbmVOYW1lcy5tYXAoXG4gICAgICAoeCkgPT4ge1xuICAgICAgICByZXR1cm4gcHJvcHMuYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoXG4gICAgICAgICAgeC5zdWJzdHJpbmcoeC5sZW5ndGggLSAxKSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXZhaWxhYmlsaXR5Wm9uZUlkcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVkSWQ6IHN0cmluZyA9IGF2YWlsYWJpbGl0eVpvbmVJZHNbaV07XG5cbiAgICAgIHRoaXMuem9uYWxBZ2dyZWdhdGVJc29sYXRlZEltcGFjdEFsYXJtcy5wdXNoKFxuICAgICAgICBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICAnQVonICsgY291bnRlciArICdTZXJ2aWNlQWdncmVnYXRlSXNvbGF0ZWRJbXBhY3RBbGFybScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOlxuICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lZElkICtcbiAgICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAgICAgJy1pc29sYXRlZC1pbXBhY3QtYWdncmVnYXRlLWFsYXJtJyxcbiAgICAgICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzKS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAoZmlsdGVyZWQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3JpdGljYWxPcGVyYXRpb25zLmluZGV4T2Yoa2V5KSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIH0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKS5tYXAoKHgpID0+IHguYWdncmVnYXRlWm9uYWxBbGFybXNbaV0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgdGhpcy56b25hbFNlcnZlclNpZGVJc29sYXRlZEltcGFjdEFsYXJtcy5wdXNoKFxuICAgICAgICBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICAnQVonICsgY291bnRlciArICdTZXJ2aWNlU2VydmVyU2lkZUlzb2xhdGVkSW1wYWN0QWxhcm0nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTpcbiAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZWRJZCArXG4gICAgICAgICAgICAgICctJyArXG4gICAgICAgICAgICAgIHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKSArXG4gICAgICAgICAgICAgICctaXNvbGF0ZWQtaW1wYWN0LXNlcnZlci1zaWRlLWFsYXJtJyxcbiAgICAgICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzKS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAoZmlsdGVyZWQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3JpdGljYWxPcGVyYXRpb25zLmluZGV4T2Yoa2V5KSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIH0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKS5tYXAoKHgpID0+IHguc2VydmVyU2lkZVpvbmFsQWxhcm1zTWFwW2F2YWlsYWJpbGl0eVpvbmVkSWRdKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAgIGNvdW50ZXIrKztcbiAgICB9XG5cbiAgICBsZXQga2V5UHJlZml4OiBzdHJpbmcgPSAnJztcblxuICAgIGxldCByZWdpb25hbE9wZXJhdGlvbkZhdWx0Q291bnRNZXRyaWNzOiB7IFtrZXk6IHN0cmluZ106IElNZXRyaWMgfSA9IHt9O1xuXG4gICAgcHJvcHMuc2VydmljZS5vcGVyYXRpb25zXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4LmNyaXRpY2FsID09IHRydWUpXG4gICAgICAuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICBrZXlQcmVmaXggPSBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5uZXh0Q2hhcihrZXlQcmVmaXgpO1xuXG4gICAgICAgIHJlZ2lvbmFsT3BlcmF0aW9uRmF1bHRDb3VudE1ldHJpY3Nba2V5UHJlZml4XSA9XG4gICAgICAgICAgUmVnaW9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzLmNyZWF0ZVJlZ2lvbmFsQXZhaWxhYmlsaXR5TWV0cmljKHtcbiAgICAgICAgICAgIGxhYmVsOiB4Lm9wZXJhdGlvbk5hbWUgKyAnIGZhdWx0IGNvdW50JyxcbiAgICAgICAgICAgIG1ldHJpY0RldGFpbHM6IHguc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgICBtZXRyaWNUeXBlOiBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLkZBVUxUX0NPVU5ULFxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBsZXQgcmVnaW9uYWxGYXVsdENvdW50OiBJTWV0cmljID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgIHVzaW5nTWV0cmljczogcmVnaW9uYWxPcGVyYXRpb25GYXVsdENvdW50TWV0cmljcyxcbiAgICAgIGV4cHJlc3Npb246IE9iamVjdC5rZXlzKHJlZ2lvbmFsT3BlcmF0aW9uRmF1bHRDb3VudE1ldHJpY3MpLmpvaW4oJysnKSxcbiAgICAgIGxhYmVsOiBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lICsgJyBmYXVsdCBjb3VudCcsXG4gICAgICBwZXJpb2Q6IHByb3BzLnNlcnZpY2UucGVyaW9kLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpb25hbEZhdWx0Q291bnRTZXJ2ZXJTaWRlQWxhcm0gPSBuZXcgQWxhcm0oXG4gICAgICB0aGlzLFxuICAgICAgJ1JlZ2lvbmFsRmF1bHRDb3VudCcsXG4gICAgICB7XG4gICAgICAgIGFsYXJtTmFtZTpcbiAgICAgICAgICBGbi5yZWYoJ0FXUzo6UmVnaW9uJykgK1xuICAgICAgICAgICctJyArXG4gICAgICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAnLWZhdWx0LWNvdW50JyxcbiAgICAgICAgZGF0YXBvaW50c1RvQWxhcm06IDMsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiA1LFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICB0aHJlc2hvbGQ6IHByb3BzLnNlcnZpY2UuZmF1bHRDb3VudFRocmVzaG9sZCxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjpcbiAgICAgICAgICAnQ291bnRzIGZhdWx0cyBmcm9tIGFsbCBjcml0aWNhbCBvcGVyYXRpb24gaW4gdGhlIHNlcnZpY2UnLFxuICAgICAgICBtZXRyaWM6IHJlZ2lvbmFsRmF1bHRDb3VudCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGxldCBjYW5hcnlBbGFybXM6IElBbGFybVtdID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzKS5yZWR1Y2UoXG4gICAgICAgIChmaWx0ZXJlZCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgaWYgKGNyaXRpY2FsT3BlcmF0aW9ucy5pbmRleE9mKGtleSkgPiAtMSkge1xuICAgICAgICAgICAgZmlsdGVyZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgeyBba2V5OiBzdHJpbmddOiBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSxcbiAgICAgICksXG4gICAgKVxuICAgICAgLnJlZHVjZSgoZmlsdGVyZWQsIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZS5jYW5hcnlSZWdpb25hbEFsYXJtc0FuZFJ1bGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHZhbHVlLmNhbmFyeVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH0sIFtdIGFzIElDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzW10pXG4gICAgICAubWFwKCh4KSA9PiB4LmF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFsYXJtKTtcblxuICAgIGlmIChcbiAgICAgIGNhbmFyeUFsYXJtcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBjYW5hcnlBbGFybXMgIT09IG51bGwgJiZcbiAgICAgIGNhbmFyeUFsYXJtcy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICB0aGlzLnJlZ2lvbmFsQXZhaWxhYmlsaXR5T3JMYXRlbmN5Q2FuYXJ5QWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdTZXJ2aWNlQ2FuYXJ5QXZhaWxhYmlsaXR5T3JMYXRlbmN5QWdncmVnYXRlQWxhcm0nLFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOlxuICAgICAgICAgICAgRm4ucmVmKCdBV1M6OlJlZ2lvbicpICtcbiAgICAgICAgICAgICctJyArXG4gICAgICAgICAgICBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCkgK1xuICAgICAgICAgICAgJy1jYW5hcnktYXZhaWxhYmlsaXR5LW9yLWxhdGVuY3ktYWdncmVnYXRlLWFsYXJtJyxcbiAgICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbnlPZiguLi5jYW5hcnlBbGFybXMpLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgY2FuYXJ5QXZhaWxhYmlsaXR5QWxhcm1zOiBJQWxhcm1bXSA9IE9iamVjdC52YWx1ZXMoXG4gICAgICBPYmplY3QuZW50cmllcyhwcm9wcy5wZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlcykucmVkdWNlKFxuICAgICAgICAoZmlsdGVyZWQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIGlmIChjcml0aWNhbE9wZXJhdGlvbnMuaW5kZXhPZihrZXkpID4gLTEpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIH0sXG4gICAgICApLFxuICAgIClcbiAgICAgIC5yZWR1Y2UoKGZpbHRlcmVkLCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUuY2FuYXJ5UmVnaW9uYWxBbGFybXNBbmRSdWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh2YWx1ZS5jYW5hcnlSZWdpb25hbEFsYXJtc0FuZFJ1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9LCBbXSBhcyBJQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1tdKVxuICAgICAgLm1hcCgoeCkgPT4geC5hdmFpbGFiaWxpdHlBbGFybSk7XG5cbiAgICBpZiAoXG4gICAgICBjYW5hcnlBdmFpbGFiaWxpdHlBbGFybXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY2FuYXJ5QXZhaWxhYmlsaXR5QWxhcm1zICE9PSBudWxsICYmXG4gICAgICBjYW5hcnlBdmFpbGFiaWxpdHlBbGFybXMubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5yZWdpb25hbEF2YWlsYWJpbGl0eUNhbmFyeUFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnU2VydmljZUNhbmFyeUF2YWlsYWJpbGl0eUFnZ3JlZ2F0ZUFsYXJtJyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTpcbiAgICAgICAgICAgIEZuLnJlZignQVdTOjpSZWdpb24nKSArXG4gICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAgICctY2FuYXJ5LWF2YWlsYWJpbGl0eS1hZ2dyZWdhdGUtYWxhcm0nLFxuICAgICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKC4uLmNhbmFyeUF2YWlsYWJpbGl0eUFsYXJtcyksXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucmVnaW9uYWxBdmFpbGFiaWxpdHlPckxhdGVuY3lTZXJ2ZXJTaWRlQWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICB0aGlzLFxuICAgICAgJ1NlcnZpY2VTZXJ2ZXJTaWRlQWdncmVnYXRlSXNvbGF0ZWRJbXBhY3RBbGFybScsXG4gICAgICB7XG4gICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTpcbiAgICAgICAgICBGbi5yZWYoJ0FXUzo6UmVnaW9uJykgK1xuICAgICAgICAgICctJyArXG4gICAgICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAnLXNlcnZlci1zaWRlLWFnZ3JlZ2F0ZS1hbGFybScsXG4gICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXMoXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wcy5wZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlcykucmVkdWNlKFxuICAgICAgICAgICAgICAoZmlsdGVyZWQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjcml0aWNhbE9wZXJhdGlvbnMuaW5kZXhPZihrZXkpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgIGZpbHRlcmVkW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIH0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5tYXAoKHgpID0+IHguc2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMpXG4gICAgICAgICAgICAubWFwKCh4KSA9PiB4LmF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFsYXJtKSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMucmVnaW9uYWxBdmFpbGFiaWxpdHlTZXJ2ZXJTaWRlQWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICB0aGlzLFxuICAgICAgJ1NlcnZpY2VTZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5QWxhcm0nLFxuICAgICAge1xuICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6XG4gICAgICAgICAgRm4ucmVmKCdBV1M6OlJlZ2lvbicpICtcbiAgICAgICAgICAnLScgK1xuICAgICAgICAgIHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKSArXG4gICAgICAgICAgJy1zZXJ2ZXItc2lkZS1hdmFpbGFiaWxpdHktYWxhcm0nLFxuICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbnlPZihcbiAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcHMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgKGZpbHRlcmVkLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY3JpdGljYWxPcGVyYXRpb25zLmluZGV4T2Yoa2V5KSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJlZFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcyB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKCh4KSA9PiB4LnNlcnZlclNpZGVSZWdpb25hbEFsYXJtc0FuZFJ1bGVzKVxuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5hdmFpbGFiaWxpdHlBbGFybSksXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IContributorInsightRuleDetails } from '../../services/IContributorInsightRuleDetails';
|
|
2
|
+
import { IOperationMetricDetails } from '../../services/IOperationMetricDetails';
|
|
3
|
+
/**
|
|
4
|
+
* The base props for an operation regional alarms and rules configuration
|
|
5
|
+
*/
|
|
6
|
+
export interface BaseOperationRegionalAlarmsAndRulesProps {
|
|
7
|
+
/**
|
|
8
|
+
* The metric details for availability metrics
|
|
9
|
+
*/
|
|
10
|
+
readonly availabilityMetricDetails: IOperationMetricDetails;
|
|
11
|
+
/**
|
|
12
|
+
* The metric details for latency metrics
|
|
13
|
+
*/
|
|
14
|
+
readonly latencyMetricDetails: IOperationMetricDetails;
|
|
15
|
+
/**
|
|
16
|
+
* (Optional) A suffix to be appended to alarm and rule names
|
|
17
|
+
*/
|
|
18
|
+
readonly nameSuffix: string;
|
|
19
|
+
/**
|
|
20
|
+
* (Optional) Details for creating contributor insight rules, which help
|
|
21
|
+
* make the server-side alarms for detecting single AZ failures more accurate
|
|
22
|
+
*/
|
|
23
|
+
readonly contributorInsightRuleDetails?: IContributorInsightRuleDetails;
|
|
24
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGFybXNhbmRydWxlcy9wcm9wcy9CYXNlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9JQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbk1ldHJpY0RldGFpbHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9JT3BlcmF0aW9uTWV0cmljRGV0YWlscyc7XG5cbi8qKlxuICogVGhlIGJhc2UgcHJvcHMgZm9yIGFuIG9wZXJhdGlvbiByZWdpb25hbCBhbGFybXMgYW5kIHJ1bGVzIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBtZXRyaWMgZGV0YWlscyBmb3IgYXZhaWxhYmlsaXR5IG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHM6IElPcGVyYXRpb25NZXRyaWNEZXRhaWxzO1xuXG4gIC8qKlxuICAgKiBUaGUgbWV0cmljIGRldGFpbHMgZm9yIGxhdGVuY3kgbWV0cmljc1xuICAgKi9cbiAgcmVhZG9ubHkgbGF0ZW5jeU1ldHJpY0RldGFpbHM6IElPcGVyYXRpb25NZXRyaWNEZXRhaWxzO1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEEgc3VmZml4IHRvIGJlIGFwcGVuZGVkIHRvIGFsYXJtIGFuZCBydWxlIG5hbWVzXG4gICAqL1xuICByZWFkb25seSBuYW1lU3VmZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgRGV0YWlscyBmb3IgY3JlYXRpbmcgY29udHJpYnV0b3IgaW5zaWdodCBydWxlcywgd2hpY2ggaGVscFxuICAgKiBtYWtlIHRoZSBzZXJ2ZXItc2lkZSBhbGFybXMgZm9yIGRldGVjdGluZyBzaW5nbGUgQVogZmFpbHVyZXMgbW9yZSBhY2N1cmF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHM/OiBJQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHM7XG59XG4iXX0=
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { IFunction } from 'aws-cdk-lib/aws-lambda';
|
|
2
|
+
import { IAvailabilityZoneMapper } from '../../azmapper/IAvailabilityZoneMapper';
|
|
3
|
+
import { IContributorInsightRuleDetails } from '../../services/IContributorInsightRuleDetails';
|
|
4
|
+
import { IOperationMetricDetails } from '../../services/IOperationMetricDetails';
|
|
5
|
+
import { Operation } from '../../services/Operation';
|
|
6
|
+
import { OutlierDetectionAlgorithm } from '../../utilities/OutlierDetectionAlgorithm';
|
|
7
|
+
/**
|
|
8
|
+
* The base properties for an operation zonal alarms and rules configuration
|
|
9
|
+
*/
|
|
10
|
+
export interface BaseOperationZonalAlarmsAndRulesProps {
|
|
11
|
+
/**
|
|
12
|
+
* The operation for these alarms and rules
|
|
13
|
+
*/
|
|
14
|
+
readonly operation: Operation;
|
|
15
|
+
/**
|
|
16
|
+
* The availability metric details to create alarms and rules from
|
|
17
|
+
*/
|
|
18
|
+
readonly availabilityMetricDetails: IOperationMetricDetails;
|
|
19
|
+
/**
|
|
20
|
+
* The latency metric details to create alarms and rules from
|
|
21
|
+
*/
|
|
22
|
+
readonly latencyMetricDetails: IOperationMetricDetails;
|
|
23
|
+
/**
|
|
24
|
+
* The Availability Zone Id the alarms and rules are being created for
|
|
25
|
+
*/
|
|
26
|
+
readonly availabilityZoneId: string;
|
|
27
|
+
/**
|
|
28
|
+
* A counter used to name the CDK constructs uniquely
|
|
29
|
+
*/
|
|
30
|
+
readonly counter: number;
|
|
31
|
+
/**
|
|
32
|
+
* Used when the OutlierDetectionAlgorithm is set to STATIC, should be a
|
|
33
|
+
* number between 0 and 1, non-inclusive, representing the percentage
|
|
34
|
+
* or faults or high latency responses that an AZ must have to be considered
|
|
35
|
+
* an outlier.
|
|
36
|
+
*/
|
|
37
|
+
readonly outlierThreshold: number;
|
|
38
|
+
/**
|
|
39
|
+
* (Optional) Details for creating contributor insight rules, which help
|
|
40
|
+
* make the server-side alarms for detecting single AZ failures more accurate
|
|
41
|
+
*/
|
|
42
|
+
readonly contributorInsightRuleDetails?: IContributorInsightRuleDetails;
|
|
43
|
+
/**
|
|
44
|
+
* The outlier detection algorithm used to determine if Availability Zones
|
|
45
|
+
* or instances are outliers for latency or availability impact. Currently this property
|
|
46
|
+
* is ignored and only STATIC is used.
|
|
47
|
+
*/
|
|
48
|
+
readonly outlierDetectionAlgorithm: OutlierDetectionAlgorithm;
|
|
49
|
+
/**
|
|
50
|
+
* (Optional) A suffix to apply to alarm and rules names, like "-server" for server
|
|
51
|
+
* side metrics and alarms
|
|
52
|
+
*/
|
|
53
|
+
readonly nameSuffix?: string;
|
|
54
|
+
/**
|
|
55
|
+
* The AZ mapper
|
|
56
|
+
*/
|
|
57
|
+
readonly azMapper: IAvailabilityZoneMapper;
|
|
58
|
+
/**
|
|
59
|
+
* A function that is used to perform outlier detection
|
|
60
|
+
*/
|
|
61
|
+
readonly outlierDetectionFunction?: IFunction;
|
|
62
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGFybXNhbmRydWxlcy9wcm9wcy9CYXNlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IElBdmFpbGFiaWxpdHlab25lTWFwcGVyIH0gZnJvbSAnLi4vLi4vYXptYXBwZXIvSUF2YWlsYWJpbGl0eVpvbmVNYXBwZXInO1xuaW1wb3J0IHsgSUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvSUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzJztcbmltcG9ydCB7IElPcGVyYXRpb25NZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvSU9wZXJhdGlvbk1ldHJpY0RldGFpbHMnO1xuaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvT3BlcmF0aW9uJztcbmltcG9ydCB7IE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvT3V0bGllckRldGVjdGlvbkFsZ29yaXRobSc7XG5cbi8qKlxuICogVGhlIGJhc2UgcHJvcGVydGllcyBmb3IgYW4gb3BlcmF0aW9uIHpvbmFsIGFsYXJtcyBhbmQgcnVsZXMgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzUHJvcHMge1xuICAvKipcbiAgICogVGhlIG9wZXJhdGlvbiBmb3IgdGhlc2UgYWxhcm1zIGFuZCBydWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uOiBPcGVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBhdmFpbGFiaWxpdHkgbWV0cmljIGRldGFpbHMgdG8gY3JlYXRlIGFsYXJtcyBhbmQgcnVsZXMgZnJvbVxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsczogSU9wZXJhdGlvbk1ldHJpY0RldGFpbHM7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlbmN5IG1ldHJpYyBkZXRhaWxzIHRvIGNyZWF0ZSBhbGFybXMgYW5kIHJ1bGVzIGZyb21cbiAgICovXG4gIHJlYWRvbmx5IGxhdGVuY3lNZXRyaWNEZXRhaWxzOiBJT3BlcmF0aW9uTWV0cmljRGV0YWlscztcblxuICAvKipcbiAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIElkIHRoZSBhbGFybXMgYW5kIHJ1bGVzIGFyZSBiZWluZyBjcmVhdGVkIGZvclxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY291bnRlciB1c2VkIHRvIG5hbWUgdGhlIENESyBjb25zdHJ1Y3RzIHVuaXF1ZWx5XG4gICAqL1xuICByZWFkb25seSBjb3VudGVyOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFVzZWQgd2hlbiB0aGUgT3V0bGllckRldGVjdGlvbkFsZ29yaXRobSBpcyBzZXQgdG8gU1RBVElDLCBzaG91bGQgYmUgYVxuICAgKiBudW1iZXIgYmV0d2VlbiAwIGFuZCAxLCBub24taW5jbHVzaXZlLCByZXByZXNlbnRpbmcgdGhlIHBlcmNlbnRhZ2VcbiAgICogb3IgZmF1bHRzIG9yIGhpZ2ggbGF0ZW5jeSByZXNwb25zZXMgdGhhdCBhbiBBWiBtdXN0IGhhdmUgdG8gYmUgY29uc2lkZXJlZFxuICAgKiBhbiBvdXRsaWVyLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0bGllclRocmVzaG9sZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIERldGFpbHMgZm9yIGNyZWF0aW5nIGNvbnRyaWJ1dG9yIGluc2lnaHQgcnVsZXMsIHdoaWNoIGhlbHBcbiAgICogbWFrZSB0aGUgc2VydmVyLXNpZGUgYWxhcm1zIGZvciBkZXRlY3Rpbmcgc2luZ2xlIEFaIGZhaWx1cmVzIG1vcmUgYWNjdXJhdGVcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzPzogSUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzO1xuXG4gIC8qKlxuICAgKiBUaGUgb3V0bGllciBkZXRlY3Rpb24gYWxnb3JpdGhtIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIEF2YWlsYWJpbGl0eSBab25lc1xuICAgKiBvciBpbnN0YW5jZXMgYXJlIG91dGxpZXJzIGZvciBsYXRlbmN5IG9yIGF2YWlsYWJpbGl0eSBpbXBhY3QuIEN1cnJlbnRseSB0aGlzIHByb3BlcnR5XG4gICAqIGlzIGlnbm9yZWQgYW5kIG9ubHkgU1RBVElDIGlzIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBvdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtOiBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtO1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEEgc3VmZml4IHRvIGFwcGx5IHRvIGFsYXJtIGFuZCBydWxlcyBuYW1lcywgbGlrZSBcIi1zZXJ2ZXJcIiBmb3Igc2VydmVyXG4gICAqIHNpZGUgbWV0cmljcyBhbmQgYWxhcm1zXG4gICAqL1xuICByZWFkb25seSBuYW1lU3VmZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVogbWFwcGVyXG4gICAqL1xuICByZWFkb25seSBhek1hcHBlcjogSUF2YWlsYWJpbGl0eVpvbmVNYXBwZXI7XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHRvIHBlcmZvcm0gb3V0bGllciBkZXRlY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IG91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbj86IElGdW5jdGlvbjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BaseOperationRegionalAlarmsAndRulesProps } from './BaseOperationRegionalAlarmsAndRulesProps';
|
|
2
|
+
/**
|
|
3
|
+
* Canary metric properties for an operation at the regional level
|
|
4
|
+
*/
|
|
5
|
+
export interface CanaryOperationRegionalAlarmsAndRulesProps extends BaseOperationRegionalAlarmsAndRulesProps {
|
|
6
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FsYXJtc2FuZHJ1bGVzL3Byb3BzL0NhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgQmFzZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB9IGZyb20gJy4vQmFzZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyc7XG5cbi8qKlxuICogQ2FuYXJ5IG1ldHJpYyBwcm9wZXJ0aWVzIGZvciBhbiBvcGVyYXRpb24gYXQgdGhlIHJlZ2lvbmFsIGxldmVsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1Byb3BzXG4gIGV4dGVuZHMgQmFzZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB7fVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BaseOperationZonalAlarmsAndRulesProps } from './BaseOperationZonalAlarmsAndRulesProps';
|
|
2
|
+
/**
|
|
3
|
+
* Canary metric properties for an operation at the zonal level
|
|
4
|
+
*/
|
|
5
|
+
export interface CanaryOperationZonalAlarmsAndRulesProps extends BaseOperationZonalAlarmsAndRulesProps {
|
|
6
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FsYXJtc2FuZHJ1bGVzL3Byb3BzL0NhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB9IGZyb20gJy4vQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyc7XG5cbi8qKlxuICogQ2FuYXJ5IG1ldHJpYyBwcm9wZXJ0aWVzIGZvciBhbiBvcGVyYXRpb24gYXQgdGhlIHpvbmFsIGxldmVsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzXG4gIGV4dGVuZHMgQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB7fVxuIl19
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ILoadBalancerV2 } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
|
|
2
|
+
import { IFunction } from 'aws-cdk-lib/aws-lambda';
|
|
3
|
+
import { IAvailabilityZoneMapper } from '../../azmapper/IAvailabilityZoneMapper';
|
|
4
|
+
import { ContributorInsightRuleDetails } from '../../services/ContributorInsightRuleDetails';
|
|
5
|
+
import { Operation } from '../../services/Operation';
|
|
6
|
+
import { OutlierDetectionAlgorithm } from '../../utilities/OutlierDetectionAlgorithm';
|
|
7
|
+
/**
|
|
8
|
+
* The properties for the operation alarms and rules
|
|
9
|
+
*/
|
|
10
|
+
export interface OperationAlarmsAndRulesProps {
|
|
11
|
+
/**
|
|
12
|
+
* The operation the alarms and rules are for
|
|
13
|
+
*/
|
|
14
|
+
readonly operation: Operation;
|
|
15
|
+
/**
|
|
16
|
+
* The load balancer associated with this operation.
|
|
17
|
+
*
|
|
18
|
+
* @default - If not provided, its ARN will not be included
|
|
19
|
+
* in top level alarm descriptions that can be referenced by
|
|
20
|
+
* automation to identify which load balancers should execute
|
|
21
|
+
* a zonal shift.
|
|
22
|
+
*/
|
|
23
|
+
readonly loadBalancer?: ILoadBalancerV2;
|
|
24
|
+
/**
|
|
25
|
+
* Rule details for contributor insight rules
|
|
26
|
+
*/
|
|
27
|
+
readonly contributorInsightRuleDetails?: ContributorInsightRuleDetails;
|
|
28
|
+
/**
|
|
29
|
+
* The outlier threshold used with the STATIC outlier detection algorithm
|
|
30
|
+
*/
|
|
31
|
+
readonly outlierThreshold: number;
|
|
32
|
+
/**
|
|
33
|
+
* The outlier detection algorithm
|
|
34
|
+
*/
|
|
35
|
+
readonly outlierDetectionAlgorithm: OutlierDetectionAlgorithm;
|
|
36
|
+
/**
|
|
37
|
+
* The AZ Mapper
|
|
38
|
+
*/
|
|
39
|
+
readonly azMapper: IAvailabilityZoneMapper;
|
|
40
|
+
/**
|
|
41
|
+
* An optional Lambda function used to perform outlier detection
|
|
42
|
+
* for chi-squared or z-score algorithms
|
|
43
|
+
*/
|
|
44
|
+
readonly outlierDetectionFunction?: IFunction;
|
|
45
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGFybXNhbmRydWxlcy9wcm9wcy9PcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJTG9hZEJhbGFuY2VyVjIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mic7XG5pbXBvcnQgeyBJRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IElBdmFpbGFiaWxpdHlab25lTWFwcGVyIH0gZnJvbSAnLi4vLi4vYXptYXBwZXIvSUF2YWlsYWJpbGl0eVpvbmVNYXBwZXInO1xuaW1wb3J0IHsgQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9Db250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyc7XG5pbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9PcGVyYXRpb24nO1xuaW1wb3J0IHsgT3V0bGllckRldGVjdGlvbkFsZ29yaXRobSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9PdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtJztcblxuLyoqXG4gKiBUaGUgcHJvcGVydGllcyBmb3IgdGhlIG9wZXJhdGlvbiBhbGFybXMgYW5kIHJ1bGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW9uIHRoZSBhbGFybXMgYW5kIHJ1bGVzIGFyZSBmb3JcbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbjogT3BlcmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9hZCBiYWxhbmNlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBvcGVyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgbm90IHByb3ZpZGVkLCBpdHMgQVJOIHdpbGwgbm90IGJlIGluY2x1ZGVkXG4gICAqIGluIHRvcCBsZXZlbCBhbGFybSBkZXNjcmlwdGlvbnMgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCBieVxuICAgKiBhdXRvbWF0aW9uIHRvIGlkZW50aWZ5IHdoaWNoIGxvYWQgYmFsYW5jZXJzIHNob3VsZCBleGVjdXRlXG4gICAqIGEgem9uYWwgc2hpZnQuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXI/OiBJTG9hZEJhbGFuY2VyVjI7XG5cbiAgLyoqXG4gICAqIFJ1bGUgZGV0YWlscyBmb3IgY29udHJpYnV0b3IgaW5zaWdodCBydWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHM/OiBDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscztcblxuICAvKipcbiAgICogVGhlIG91dGxpZXIgdGhyZXNob2xkIHVzZWQgd2l0aCB0aGUgU1RBVElDIG91dGxpZXIgZGV0ZWN0aW9uIGFsZ29yaXRobVxuICAgKi9cbiAgcmVhZG9ubHkgb3V0bGllclRocmVzaG9sZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgb3V0bGllciBkZXRlY3Rpb24gYWxnb3JpdGhtXG4gICAqL1xuICByZWFkb25seSBvdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtOiBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtO1xuXG4gIC8qKlxuICAgKiBUaGUgQVogTWFwcGVyXG4gICAqL1xuICByZWFkb25seSBhek1hcHBlcjogSUF2YWlsYWJpbGl0eVpvbmVNYXBwZXI7XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIExhbWJkYSBmdW5jdGlvbiB1c2VkIHRvIHBlcmZvcm0gb3V0bGllciBkZXRlY3Rpb25cbiAgICogZm9yIGNoaS1zcXVhcmVkIG9yIHotc2NvcmUgYWxnb3JpdGhtc1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0bGllckRldGVjdGlvbkZ1bmN0aW9uPzogSUZ1bmN0aW9uO1xufVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BaseOperationRegionalAlarmsAndRulesProps } from './BaseOperationRegionalAlarmsAndRulesProps';
|
|
2
|
+
/**
|
|
3
|
+
* The server side rules and alarms properties for an operation
|
|
4
|
+
*/
|
|
5
|
+
export interface ServerSideOperationRegionalAlarmsAndRulesProps extends BaseOperationRegionalAlarmsAndRulesProps {
|
|
6
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVyU2lkZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGFybXNhbmRydWxlcy9wcm9wcy9TZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBCYXNlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1Byb3BzIH0gZnJvbSAnLi9CYXNlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1Byb3BzJztcblxuLyoqXG4gKiBUaGUgc2VydmVyIHNpZGUgcnVsZXMgYW5kIGFsYXJtcyBwcm9wZXJ0aWVzIGZvciBhbiBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1Byb3BzXG4gIGV4dGVuZHMgQmFzZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB7fVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BaseOperationZonalAlarmsAndRulesProps } from './BaseOperationZonalAlarmsAndRulesProps';
|
|
2
|
+
/**
|
|
3
|
+
* The server side zonal alarms and rules properties for an operation
|
|
4
|
+
*/
|
|
5
|
+
export interface ServerSideOperationZonalAlarmsAndRulesProps extends BaseOperationZonalAlarmsAndRulesProps {
|
|
6
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGFybXNhbmRydWxlcy9wcm9wcy9TZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBCYXNlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzIH0gZnJvbSAnLi9CYXNlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzJztcblxuLyoqXG4gKiBUaGUgc2VydmVyIHNpZGUgem9uYWwgYWxhcm1zIGFuZCBydWxlcyBwcm9wZXJ0aWVzIGZvciBhbiBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzXG4gIGV4dGVuZHMgQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB7fVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IAvailabilityZoneMapper } from '../../azmapper/IAvailabilityZoneMapper';
|
|
2
|
+
import { IService } from '../../services/IService';
|
|
3
|
+
import { IOperationAlarmsAndRules } from '../IOperationAlarmsAndRules';
|
|
4
|
+
export interface ServiceAlarmsAndRulesProps {
|
|
5
|
+
readonly service: IService;
|
|
6
|
+
readonly perOperationAlarmsAndRules: {
|
|
7
|
+
[key: string]: IOperationAlarmsAndRules;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* The AZ Mapper
|
|
11
|
+
*/
|
|
12
|
+
readonly azMapper: IAvailabilityZoneMapper;
|
|
13
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUFsYXJtc0FuZFJ1bGVzUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWxhcm1zYW5kcnVsZXMvcHJvcHMvU2VydmljZUFsYXJtc0FuZFJ1bGVzUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IElBdmFpbGFiaWxpdHlab25lTWFwcGVyIH0gZnJvbSAnLi4vLi4vYXptYXBwZXIvSUF2YWlsYWJpbGl0eVpvbmVNYXBwZXInO1xuaW1wb3J0IHsgSVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9JU2VydmljZSc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuLi9JT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VBbGFybXNBbmRSdWxlc1Byb3BzIHtcbiAgcmVhZG9ubHkgc2VydmljZTogSVNlcnZpY2U7XG5cbiAgcmVhZG9ubHkgcGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBBWiBNYXBwZXJcbiAgICovXG4gIHJlYWRvbmx5IGF6TWFwcGVyOiBJQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { CustomResource, Reference } from 'aws-cdk-lib';
|
|
2
|
+
import { IFunction } from 'aws-cdk-lib/aws-lambda';
|
|
3
|
+
import { ILogGroup } from 'aws-cdk-lib/aws-logs';
|
|
4
|
+
import { Construct } from 'constructs';
|
|
5
|
+
import { IAvailabilityZoneMapper } from './IAvailabilityZoneMapper';
|
|
6
|
+
import { AvailabilityZoneMapperProps } from './props/AvailabilityZoneMapperProps';
|
|
7
|
+
/**
|
|
8
|
+
* A construct that allows you to map AZ names to ids and back
|
|
9
|
+
*/
|
|
10
|
+
export declare class AvailabilityZoneMapper extends Construct implements IAvailabilityZoneMapper {
|
|
11
|
+
/**
|
|
12
|
+
* The function that does the mapping
|
|
13
|
+
*/
|
|
14
|
+
function: IFunction;
|
|
15
|
+
/**
|
|
16
|
+
* The log group for the function's logs
|
|
17
|
+
*/
|
|
18
|
+
logGroup: ILogGroup;
|
|
19
|
+
/**
|
|
20
|
+
* The custom resource that can be referenced to use
|
|
21
|
+
* Fn::GetAtt functions on to retrieve availability zone
|
|
22
|
+
* names and ids
|
|
23
|
+
*/
|
|
24
|
+
mapper: CustomResource;
|
|
25
|
+
constructor(scope: Construct, id: string, props?: AvailabilityZoneMapperProps);
|
|
26
|
+
/**
|
|
27
|
+
* Gets the Availability Zone Id for the given Availability Zone Name in this account
|
|
28
|
+
* @param availabilityZoneName
|
|
29
|
+
* @returns
|
|
30
|
+
*/
|
|
31
|
+
availabilityZoneId(availabilityZoneName: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Gets the Availability Zone Name for the given Availability Zone Id in this account
|
|
34
|
+
* @param availabilityZoneId
|
|
35
|
+
* @returns
|
|
36
|
+
*/
|
|
37
|
+
availabilityZoneName(availabilityZoneId: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Gets the prefix for the region used with Availability Zone Ids, for example
|
|
40
|
+
* in us-east-1, this returns "use1"
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
regionPrefixForAvailabilityZoneIds(): string;
|
|
44
|
+
/**
|
|
45
|
+
* Returns an array for Availability Zone Ids for the supplied Availability Zone names,
|
|
46
|
+
* they are returned in the same order the names were provided
|
|
47
|
+
* @param availabilityZoneNames
|
|
48
|
+
* @returns
|
|
49
|
+
*/
|
|
50
|
+
availabilityZoneIdsAsArray(availabilityZoneNames: string[]): string[];
|
|
51
|
+
/**
|
|
52
|
+
* Returns a comma delimited list of Availability Zone Ids for the supplied
|
|
53
|
+
* Availability Zone names. You can use this string with Fn.Select(x, Fn.Split(",", azs)) to
|
|
54
|
+
* get a specific Availability Zone Id
|
|
55
|
+
* @param availabilityZoneNames
|
|
56
|
+
* @returns
|
|
57
|
+
*/
|
|
58
|
+
availabilityZoneIdsAsCommaDelimitedList(availabilityZoneNames: string[]): string;
|
|
59
|
+
/**
|
|
60
|
+
* Returns a comma delimited list of Availability Zone Ids for the supplied
|
|
61
|
+
* Availability Zone names. You can use this string with Fn.Select(x, Fn.Split(",", azs)) to
|
|
62
|
+
* get a specific Availability Zone Id
|
|
63
|
+
* @returns
|
|
64
|
+
*/
|
|
65
|
+
allAvailabilityZoneIdsAsCommaDelimitedList(): string;
|
|
66
|
+
/**
|
|
67
|
+
* Returns a reference that can be cast to a string array with all of the
|
|
68
|
+
* Availability Zone Ids
|
|
69
|
+
* @returns
|
|
70
|
+
*/
|
|
71
|
+
allAvailabilityZoneIdsAsArray(): Reference;
|
|
72
|
+
/**
|
|
73
|
+
* Given a letter like "f" or "a", returns the Availability Zone Id for that
|
|
74
|
+
* Availability Zone name in this account
|
|
75
|
+
* @param letter
|
|
76
|
+
* @returns
|
|
77
|
+
*/
|
|
78
|
+
availabilityZoneIdFromAvailabilityZoneLetter(letter: string): string;
|
|
79
|
+
/**
|
|
80
|
+
* Gets all of the Availability Zone names in this Region as a comma delimited
|
|
81
|
+
* list. You can use this string with Fn.Select(x, Fn.Split(",", azs)) to
|
|
82
|
+
* get a specific Availability Zone Name
|
|
83
|
+
* @returns
|
|
84
|
+
*/
|
|
85
|
+
allAvailabilityZoneNamesAsCommaDelimitedList(): string;
|
|
86
|
+
}
|