@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,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZonalAvailabilityMetrics = 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 AvailabilityAndLatencyMetrics_1 = require("./AvailabilityAndLatencyMetrics");
|
|
9
|
+
const AvailabilityMetricType_1 = require("../utilities/AvailabilityMetricType");
|
|
10
|
+
class ZonalAvailabilityMetrics {
|
|
11
|
+
/**
|
|
12
|
+
* Creates a zonal service level availability metrics, one metric for
|
|
13
|
+
* each operation at the zonal level and the service.
|
|
14
|
+
* @param props
|
|
15
|
+
* @returns The metric at index 0 is the metric math expression for the whole service. The following metrics
|
|
16
|
+
* are the metrics for each operation included in the request availability metric props.
|
|
17
|
+
*/
|
|
18
|
+
static createZonalServiceAvailabilityMetrics(props) {
|
|
19
|
+
let usingMetrics = {};
|
|
20
|
+
let operationMetrics = [];
|
|
21
|
+
let counter = 0;
|
|
22
|
+
props.availabilityMetricProps.forEach((prop) => {
|
|
23
|
+
let keyPrefix = (prop.keyPrefix === undefined || prop.keyPrefix == ''
|
|
24
|
+
? ''
|
|
25
|
+
: prop.keyPrefix.toLowerCase() + '_') +
|
|
26
|
+
prop.metricDetails.operationName.toLowerCase() +
|
|
27
|
+
'_' +
|
|
28
|
+
prop.metricType.toString().toLowerCase();
|
|
29
|
+
let zonalOperationAvailabilityMetric = this.createZonalAvailabilityMetric(prop);
|
|
30
|
+
operationMetrics.push(zonalOperationAvailabilityMetric);
|
|
31
|
+
usingMetrics[`${keyPrefix}${counter++}`] =
|
|
32
|
+
zonalOperationAvailabilityMetric;
|
|
33
|
+
});
|
|
34
|
+
let expression = '';
|
|
35
|
+
switch (props.availabilityMetricProps[0].metricType) {
|
|
36
|
+
case AvailabilityMetricType_1.AvailabilityMetricType.SUCCESS_RATE:
|
|
37
|
+
expression = `(${Object.keys(usingMetrics).join('+')}) / ${props.availabilityMetricProps.length}`;
|
|
38
|
+
break;
|
|
39
|
+
case AvailabilityMetricType_1.AvailabilityMetricType.REQUEST_COUNT:
|
|
40
|
+
expression = `${Object.keys(usingMetrics).join('+')}`;
|
|
41
|
+
break;
|
|
42
|
+
case AvailabilityMetricType_1.AvailabilityMetricType.FAULT_COUNT:
|
|
43
|
+
expression = `${Object.keys(usingMetrics).join('+')}`;
|
|
44
|
+
break;
|
|
45
|
+
case AvailabilityMetricType_1.AvailabilityMetricType.FAULT_RATE:
|
|
46
|
+
expression = `(${Object.keys(usingMetrics).join('+')}) / ${props.availabilityMetricProps.length}`;
|
|
47
|
+
break;
|
|
48
|
+
case AvailabilityMetricType_1.AvailabilityMetricType.SUCCESS_COUNT:
|
|
49
|
+
expression = `${Object.keys(usingMetrics).join('+')}`;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
let math = new aws_cloudwatch_1.MathExpression({
|
|
53
|
+
usingMetrics: usingMetrics,
|
|
54
|
+
period: props.period,
|
|
55
|
+
label: props.label,
|
|
56
|
+
expression: expression,
|
|
57
|
+
});
|
|
58
|
+
operationMetrics.splice(0, 0, math);
|
|
59
|
+
return operationMetrics;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Creates a zonal availability metric
|
|
63
|
+
* @param props
|
|
64
|
+
* @returns
|
|
65
|
+
*/
|
|
66
|
+
static createZonalAvailabilityMetric(props) {
|
|
67
|
+
return AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.createAvailabilityMetric(props, props.metricDetails.metricDimensions.zonalDimensions(props.availabilityZoneId, aws_cdk_lib_1.Fn.ref('AWS::Region')));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.ZonalAvailabilityMetrics = ZonalAvailabilityMetrics;
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ldHJpY3MvWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFDdEMsNkNBQWlDO0FBQ2pDLCtEQUFxRTtBQUNyRSxtRkFBZ0Y7QUFHaEYsZ0ZBQTZFO0FBRTdFLE1BQWEsd0JBQXdCO0lBQ25DOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxxQ0FBcUMsQ0FDMUMsS0FBcUM7UUFFckMsSUFBSSxZQUFZLEdBQStCLEVBQUUsQ0FBQztRQUNsRCxJQUFJLGdCQUFnQixHQUFjLEVBQUUsQ0FBQztRQUNyQyxJQUFJLE9BQU8sR0FBVyxDQUFDLENBQUM7UUFFeEIsS0FBSyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzdDLElBQUksU0FBUyxHQUNYLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFO2dCQUNuRCxDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRTtnQkFDOUMsR0FBRztnQkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRTNDLElBQUksZ0NBQWdDLEdBQ2xDLElBQUksQ0FBQyw2QkFBNkIsQ0FDaEMsSUFBb0MsQ0FDckMsQ0FBQztZQUVKLGdCQUFnQixDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQ3hELFlBQVksQ0FBQyxHQUFHLFNBQVMsR0FBRyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUN0QyxnQ0FBZ0MsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksVUFBVSxHQUFXLEVBQUUsQ0FBQztRQUU1QixRQUFRLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwRCxLQUFLLCtDQUFzQixDQUFDLFlBQVk7Z0JBQ3RDLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEcsTUFBTTtZQUNSLEtBQUssK0NBQXNCLENBQUMsYUFBYTtnQkFDdkMsVUFBVSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsTUFBTTtZQUNSLEtBQUssK0NBQXNCLENBQUMsV0FBVztnQkFDckMsVUFBVSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsTUFBTTtZQUNSLEtBQUssK0NBQXNCLENBQUMsVUFBVTtnQkFDcEMsVUFBVSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FBSyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNsRyxNQUFNO1lBQ1IsS0FBSywrQ0FBc0IsQ0FBQyxhQUFhO2dCQUN2QyxVQUFVLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxNQUFNO1FBQ1YsQ0FBQztRQUNELElBQUksSUFBSSxHQUFZLElBQUksK0JBQWMsQ0FBQztZQUNyQyxZQUFZLEVBQUUsWUFBWTtZQUMxQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLFVBQVUsRUFBRSxVQUFVO1NBQ3ZCLENBQUMsQ0FBQztRQUVILGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXBDLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsNkJBQTZCLENBQ2xDLEtBQW1DO1FBRW5DLE9BQU8sNkRBQTZCLENBQUMsd0JBQXdCLENBQzNELEtBQUssRUFDTCxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDbEQsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixnQkFBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FDdEIsQ0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBakZELDREQWlGQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IEZuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSU1ldHJpYywgTWF0aEV4cHJlc3Npb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcyB9IGZyb20gJy4vQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MnO1xuaW1wb3J0IHsgU2VydmljZUF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9wcm9wcy9TZXJ2aWNlQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMnO1xuaW1wb3J0IHsgWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyB9IGZyb20gJy4vcHJvcHMvWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL0F2YWlsYWJpbGl0eU1ldHJpY1R5cGUnO1xuXG5leHBvcnQgY2xhc3MgWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB6b25hbCBzZXJ2aWNlIGxldmVsIGF2YWlsYWJpbGl0eSBtZXRyaWNzLCBvbmUgbWV0cmljIGZvclxuICAgKiBlYWNoIG9wZXJhdGlvbiBhdCB0aGUgem9uYWwgbGV2ZWwgYW5kIHRoZSBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnMgVGhlIG1ldHJpYyBhdCBpbmRleCAwIGlzIHRoZSBtZXRyaWMgbWF0aCBleHByZXNzaW9uIGZvciB0aGUgd2hvbGUgc2VydmljZS4gVGhlIGZvbGxvd2luZyBtZXRyaWNzXG4gICAqIGFyZSB0aGUgbWV0cmljcyBmb3IgZWFjaCBvcGVyYXRpb24gaW5jbHVkZWQgaW4gdGhlIHJlcXVlc3QgYXZhaWxhYmlsaXR5IG1ldHJpYyBwcm9wcy5cbiAgICovXG4gIHN0YXRpYyBjcmVhdGVab25hbFNlcnZpY2VBdmFpbGFiaWxpdHlNZXRyaWNzKFxuICAgIHByb3BzOiBTZXJ2aWNlQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMsXG4gICk6IElNZXRyaWNbXSB7XG4gICAgbGV0IHVzaW5nTWV0cmljczogeyBba2V5OiBzdHJpbmddOiBJTWV0cmljIH0gPSB7fTtcbiAgICBsZXQgb3BlcmF0aW9uTWV0cmljczogSU1ldHJpY1tdID0gW107XG4gICAgbGV0IGNvdW50ZXI6IG51bWJlciA9IDA7XG5cbiAgICBwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNQcm9wcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICBsZXQga2V5UHJlZml4OiBzdHJpbmcgPVxuICAgICAgICAocHJvcC5rZXlQcmVmaXggPT09IHVuZGVmaW5lZCB8fCBwcm9wLmtleVByZWZpeCA9PSAnJ1xuICAgICAgICAgID8gJydcbiAgICAgICAgICA6IHByb3Aua2V5UHJlZml4LnRvTG93ZXJDYXNlKCkgKyAnXycpICtcbiAgICAgICAgcHJvcC5tZXRyaWNEZXRhaWxzLm9wZXJhdGlvbk5hbWUudG9Mb3dlckNhc2UoKSArXG4gICAgICAgICdfJyArXG4gICAgICAgIHByb3AubWV0cmljVHlwZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIGxldCB6b25hbE9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpYzogSU1ldHJpYyA9XG4gICAgICAgIHRoaXMuY3JlYXRlWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWMoXG4gICAgICAgICAgcHJvcCBhcyBab25hbEF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzLFxuICAgICAgICApO1xuXG4gICAgICBvcGVyYXRpb25NZXRyaWNzLnB1c2goem9uYWxPcGVyYXRpb25BdmFpbGFiaWxpdHlNZXRyaWMpO1xuICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleVByZWZpeH0ke2NvdW50ZXIrK31gXSA9XG4gICAgICAgIHpvbmFsT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljO1xuICAgIH0pO1xuXG4gICAgbGV0IGV4cHJlc3Npb246IHN0cmluZyA9ICcnO1xuXG4gICAgc3dpdGNoIChwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNQcm9wc1swXS5tZXRyaWNUeXBlKSB7XG4gICAgICBjYXNlIEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUuU1VDQ0VTU19SQVRFOlxuICAgICAgICBleHByZXNzaW9uID0gYCgke09iamVjdC5rZXlzKHVzaW5nTWV0cmljcykuam9pbignKycpfSkgLyAke3Byb3BzLmF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzLmxlbmd0aH1gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5SRVFVRVNUX0NPVU5UOlxuICAgICAgICBleHByZXNzaW9uID0gYCR7T2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKCcrJyl9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUuRkFVTFRfQ09VTlQ6XG4gICAgICAgIGV4cHJlc3Npb24gPSBgJHtPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmpvaW4oJysnKX1gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5GQVVMVF9SQVRFOlxuICAgICAgICBleHByZXNzaW9uID0gYCgke09iamVjdC5rZXlzKHVzaW5nTWV0cmljcykuam9pbignKycpfSkgLyAke3Byb3BzLmF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzLmxlbmd0aH1gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5TVUNDRVNTX0NPVU5UOlxuICAgICAgICBleHByZXNzaW9uID0gYCR7T2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKCcrJyl9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGxldCBtYXRoOiBJTWV0cmljID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICBsYWJlbDogcHJvcHMubGFiZWwsXG4gICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uLFxuICAgIH0pO1xuXG4gICAgb3BlcmF0aW9uTWV0cmljcy5zcGxpY2UoMCwgMCwgbWF0aCk7XG5cbiAgICByZXR1cm4gb3BlcmF0aW9uTWV0cmljcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgem9uYWwgYXZhaWxhYmlsaXR5IG1ldHJpY1xuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVab25hbEF2YWlsYWJpbGl0eU1ldHJpYyhcbiAgICBwcm9wczogWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyxcbiAgKTogSU1ldHJpYyB7XG4gICAgcmV0dXJuIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzLmNyZWF0ZUF2YWlsYWJpbGl0eU1ldHJpYyhcbiAgICAgIHByb3BzLFxuICAgICAgcHJvcHMubWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICBGbi5yZWYoJ0FXUzo6UmVnaW9uJyksXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { IMetric } from 'aws-cdk-lib/aws-cloudwatch';
|
|
2
|
+
import { ServiceLatencyMetricProps } from './props/ServiceLatencyMericProps';
|
|
3
|
+
import { ZonalLatencyMetricProps } from './props/ZonalLatencyMetricProps';
|
|
4
|
+
export declare class ZonalLatencyMetrics {
|
|
5
|
+
/**
|
|
6
|
+
* Creates a zonal latency metric
|
|
7
|
+
* @param props
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
static createZonalLatencyMetrics(props: ZonalLatencyMetricProps): IMetric[];
|
|
11
|
+
/**
|
|
12
|
+
* Creates an average zonal latency metric
|
|
13
|
+
* @param props
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
static createZonalAverageLatencyMetric(props: ZonalLatencyMetricProps): IMetric;
|
|
17
|
+
/**
|
|
18
|
+
* Creates a count of high latency metric
|
|
19
|
+
* @param props
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
static createZonalCountLatencyMetric(props: ZonalLatencyMetricProps): IMetric;
|
|
23
|
+
/**
|
|
24
|
+
* Creates a count of high latency responses for all critical operations
|
|
25
|
+
* @param props
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
static createZonalServiceLatencyMetrics(props: ServiceLatencyMetricProps): IMetric[];
|
|
29
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZonalLatencyMetrics = 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 AvailabilityAndLatencyMetrics_1 = require("./AvailabilityAndLatencyMetrics");
|
|
9
|
+
class ZonalLatencyMetrics {
|
|
10
|
+
/**
|
|
11
|
+
* Creates a zonal latency metric
|
|
12
|
+
* @param props
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
static createZonalLatencyMetrics(props) {
|
|
16
|
+
return AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.createLatencyMetrics(props, props.metricDetails.metricDimensions.zonalDimensions(props.availabilityZoneId, aws_cdk_lib_1.Fn.ref('AWS::Region')));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Creates an average zonal latency metric
|
|
20
|
+
* @param props
|
|
21
|
+
* @returns
|
|
22
|
+
*/
|
|
23
|
+
static createZonalAverageLatencyMetric(props) {
|
|
24
|
+
return AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.createAverageLatencyMetric(props, props.metricDetails.metricDimensions.zonalDimensions(props.availabilityZoneId, aws_cdk_lib_1.Fn.ref('AWS::Region')));
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Creates a count of high latency metric
|
|
28
|
+
* @param props
|
|
29
|
+
* @returns
|
|
30
|
+
*/
|
|
31
|
+
static createZonalCountLatencyMetric(props) {
|
|
32
|
+
return AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.createLatencyCountMetric(props, props.metricDetails.metricDimensions.zonalDimensions(props.availabilityZoneId, aws_cdk_lib_1.Fn.ref('AWS::Region')));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Creates a count of high latency responses for all critical operations
|
|
36
|
+
* @param props
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
39
|
+
static createZonalServiceLatencyMetrics(props) {
|
|
40
|
+
let usingMetrics = {};
|
|
41
|
+
let operationMetrics = [];
|
|
42
|
+
let keyPrefix = AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.nextChar('');
|
|
43
|
+
props.latencyMetricProps.forEach((prop, index) => {
|
|
44
|
+
let operationZonalMetric = this.createZonalCountLatencyMetric(prop);
|
|
45
|
+
operationMetrics.push(operationZonalMetric);
|
|
46
|
+
usingMetrics[`${keyPrefix}${index}`] = operationZonalMetric;
|
|
47
|
+
keyPrefix = AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.nextChar(keyPrefix);
|
|
48
|
+
});
|
|
49
|
+
if (Object.keys(usingMetrics).length == 1) {
|
|
50
|
+
operationMetrics.push(Object.values(usingMetrics)[0]);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
let math = new aws_cloudwatch_1.MathExpression({
|
|
54
|
+
usingMetrics: usingMetrics,
|
|
55
|
+
period: props.period,
|
|
56
|
+
label: props.label,
|
|
57
|
+
expression: Object.keys(usingMetrics).join('+'),
|
|
58
|
+
});
|
|
59
|
+
operationMetrics.splice(0, 0, math);
|
|
60
|
+
}
|
|
61
|
+
return operationMetrics;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.ZonalLatencyMetrics = ZonalLatencyMetrics;
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm9uYWxMYXRlbmN5TWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRyaWNzL1pvbmFsTGF0ZW5jeU1ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0Qyw2Q0FBaUM7QUFDakMsK0RBQXFFO0FBQ3JFLG1GQUFnRjtBQUtoRixNQUFhLG1CQUFtQjtJQUM5Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEtBQThCO1FBQzdELE9BQU8sNkRBQTZCLENBQUMsb0JBQW9CLENBQ3ZELEtBQUssRUFDTCxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDbEQsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixnQkFBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FDdEIsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsK0JBQStCLENBQ3BDLEtBQThCO1FBRTlCLE9BQU8sNkRBQTZCLENBQUMsMEJBQTBCLENBQzdELEtBQUssRUFDTCxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDbEQsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixnQkFBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FDdEIsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsNkJBQTZCLENBQ2xDLEtBQThCO1FBRTlCLE9BQU8sNkRBQTZCLENBQUMsd0JBQXdCLENBQzNELEtBQUssRUFDTCxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDbEQsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixnQkFBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FDdEIsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsZ0NBQWdDLENBQ3JDLEtBQWdDO1FBRWhDLElBQUksWUFBWSxHQUErQixFQUFFLENBQUM7UUFDbEQsSUFBSSxnQkFBZ0IsR0FBYyxFQUFFLENBQUM7UUFDckMsSUFBSSxTQUFTLEdBQVcsNkRBQTZCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRW5FLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQzlCLENBQUMsSUFBd0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUMxQyxJQUFJLG9CQUFvQixHQUFZLElBQUksQ0FBQyw2QkFBNkIsQ0FDcEUsSUFBK0IsQ0FDaEMsQ0FBQztZQUVGLGdCQUFnQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzVDLFlBQVksQ0FBQyxHQUFHLFNBQVMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLG9CQUFvQixDQUFDO1lBQzVELFNBQVMsR0FBRyw2REFBNkIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUNGLENBQUM7UUFFRixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLElBQUksR0FBWSxJQUFJLCtCQUFjLENBQUM7Z0JBQ3JDLFlBQVksRUFBRSxZQUFZO2dCQUMxQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBQ3BCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQzthQUNoRCxDQUFDLENBQUM7WUFFSCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUF6RkQsa0RBeUZDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgRm4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJTWV0cmljLCBNYXRoRXhwcmVzc2lvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzIH0gZnJvbSAnLi9BdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcyc7XG5pbXBvcnQgeyBMYXRlbmN5TWV0cmljUHJvcHMgfSBmcm9tICcuL3Byb3BzL0xhdGVuY3lNZXRyaWNQcm9wcyc7XG5pbXBvcnQgeyBTZXJ2aWNlTGF0ZW5jeU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9wcm9wcy9TZXJ2aWNlTGF0ZW5jeU1lcmljUHJvcHMnO1xuaW1wb3J0IHsgWm9uYWxMYXRlbmN5TWV0cmljUHJvcHMgfSBmcm9tICcuL3Byb3BzL1pvbmFsTGF0ZW5jeU1ldHJpY1Byb3BzJztcblxuZXhwb3J0IGNsYXNzIFpvbmFsTGF0ZW5jeU1ldHJpY3Mge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIHpvbmFsIGxhdGVuY3kgbWV0cmljXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVpvbmFsTGF0ZW5jeU1ldHJpY3MocHJvcHM6IFpvbmFsTGF0ZW5jeU1ldHJpY1Byb3BzKTogSU1ldHJpY1tdIHtcbiAgICByZXR1cm4gQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MuY3JlYXRlTGF0ZW5jeU1ldHJpY3MoXG4gICAgICBwcm9wcyxcbiAgICAgIHByb3BzLm1ldHJpY0RldGFpbHMubWV0cmljRGltZW5zaW9ucy56b25hbERpbWVuc2lvbnMoXG4gICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgRm4ucmVmKCdBV1M6OlJlZ2lvbicpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXZlcmFnZSB6b25hbCBsYXRlbmN5IG1ldHJpY1xuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVab25hbEF2ZXJhZ2VMYXRlbmN5TWV0cmljKFxuICAgIHByb3BzOiBab25hbExhdGVuY3lNZXRyaWNQcm9wcyxcbiAgKTogSU1ldHJpYyB7XG4gICAgcmV0dXJuIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzLmNyZWF0ZUF2ZXJhZ2VMYXRlbmN5TWV0cmljKFxuICAgICAgcHJvcHMsXG4gICAgICBwcm9wcy5tZXRyaWNEZXRhaWxzLm1ldHJpY0RpbWVuc2lvbnMuem9uYWxEaW1lbnNpb25zKFxuICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgIEZuLnJlZignQVdTOjpSZWdpb24nKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY291bnQgb2YgaGlnaCBsYXRlbmN5IG1ldHJpY1xuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVab25hbENvdW50TGF0ZW5jeU1ldHJpYyhcbiAgICBwcm9wczogWm9uYWxMYXRlbmN5TWV0cmljUHJvcHMsXG4gICk6IElNZXRyaWMge1xuICAgIHJldHVybiBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5jcmVhdGVMYXRlbmN5Q291bnRNZXRyaWMoXG4gICAgICBwcm9wcyxcbiAgICAgIHByb3BzLm1ldHJpY0RldGFpbHMubWV0cmljRGltZW5zaW9ucy56b25hbERpbWVuc2lvbnMoXG4gICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgRm4ucmVmKCdBV1M6OlJlZ2lvbicpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjb3VudCBvZiBoaWdoIGxhdGVuY3kgcmVzcG9uc2VzIGZvciBhbGwgY3JpdGljYWwgb3BlcmF0aW9uc1xuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVab25hbFNlcnZpY2VMYXRlbmN5TWV0cmljcyhcbiAgICBwcm9wczogU2VydmljZUxhdGVuY3lNZXRyaWNQcm9wcyxcbiAgKTogSU1ldHJpY1tdIHtcbiAgICBsZXQgdXNpbmdNZXRyaWNzOiB7IFtrZXk6IHN0cmluZ106IElNZXRyaWMgfSA9IHt9O1xuICAgIGxldCBvcGVyYXRpb25NZXRyaWNzOiBJTWV0cmljW10gPSBbXTtcbiAgICBsZXQga2V5UHJlZml4OiBzdHJpbmcgPSBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5uZXh0Q2hhcignJyk7XG5cbiAgICBwcm9wcy5sYXRlbmN5TWV0cmljUHJvcHMuZm9yRWFjaChcbiAgICAgIChwcm9wOiBMYXRlbmN5TWV0cmljUHJvcHMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgbGV0IG9wZXJhdGlvblpvbmFsTWV0cmljOiBJTWV0cmljID0gdGhpcy5jcmVhdGVab25hbENvdW50TGF0ZW5jeU1ldHJpYyhcbiAgICAgICAgICBwcm9wIGFzIFpvbmFsTGF0ZW5jeU1ldHJpY1Byb3BzLFxuICAgICAgICApO1xuXG4gICAgICAgIG9wZXJhdGlvbk1ldHJpY3MucHVzaChvcGVyYXRpb25ab25hbE1ldHJpYyk7XG4gICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlQcmVmaXh9JHtpbmRleH1gXSA9IG9wZXJhdGlvblpvbmFsTWV0cmljO1xuICAgICAgICBrZXlQcmVmaXggPSBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5uZXh0Q2hhcihrZXlQcmVmaXgpO1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKHVzaW5nTWV0cmljcykubGVuZ3RoID09IDEpIHtcbiAgICAgIG9wZXJhdGlvbk1ldHJpY3MucHVzaChPYmplY3QudmFsdWVzKHVzaW5nTWV0cmljcylbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbWF0aDogSU1ldHJpYyA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgbGFiZWw6IHByb3BzLmxhYmVsLFxuICAgICAgICBleHByZXNzaW9uOiBPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmpvaW4oJysnKSxcbiAgICAgIH0pO1xuXG4gICAgICBvcGVyYXRpb25NZXRyaWNzLnNwbGljZSgwLCAwLCBtYXRoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3BlcmF0aW9uTWV0cmljcztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { IOperationMetricDetails } from '../../services/IOperationMetricDetails';
|
|
2
|
+
/**
|
|
3
|
+
* Common availability and latency metric props
|
|
4
|
+
*/
|
|
5
|
+
export interface AvailabilityAndLatencyMetricProps {
|
|
6
|
+
/**
|
|
7
|
+
* The metric details to create metrics from
|
|
8
|
+
*/
|
|
9
|
+
readonly metricDetails: IOperationMetricDetails;
|
|
10
|
+
/**
|
|
11
|
+
* The metric label
|
|
12
|
+
*/
|
|
13
|
+
readonly label?: string;
|
|
14
|
+
/**
|
|
15
|
+
* (Optional) A key prefix for the metric name to make it unique
|
|
16
|
+
* in alarms and graphs
|
|
17
|
+
*/
|
|
18
|
+
readonly keyPrefix?: string;
|
|
19
|
+
/**
|
|
20
|
+
* The Region for the metrics
|
|
21
|
+
*/
|
|
22
|
+
readonly region?: string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY1Byb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21ldHJpY3MvcHJvcHMvQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJT3BlcmF0aW9uTWV0cmljRGV0YWlscyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL0lPcGVyYXRpb25NZXRyaWNEZXRhaWxzJztcblxuLyoqXG4gKiBDb21tb24gYXZhaWxhYmlsaXR5IGFuZCBsYXRlbmN5IG1ldHJpYyBwcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbWV0cmljIGRldGFpbHMgdG8gY3JlYXRlIG1ldHJpY3MgZnJvbVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljRGV0YWlsczogSU9wZXJhdGlvbk1ldHJpY0RldGFpbHM7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWMgbGFiZWxcbiAgICovXG4gIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEEga2V5IHByZWZpeCBmb3IgdGhlIG1ldHJpYyBuYW1lIHRvIG1ha2UgaXQgdW5pcXVlXG4gICAqIGluIGFsYXJtcyBhbmQgZ3JhcGhzXG4gICAqL1xuICByZWFkb25seSBrZXlQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBSZWdpb24gZm9yIHRoZSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AvailabilityAndLatencyMetricProps } from './AvailabilityAndLatencyMetricProps';
|
|
2
|
+
import { AvailabilityMetricType } from '../../utilities/AvailabilityMetricType';
|
|
3
|
+
/**
|
|
4
|
+
* Metric properties for availability metrics
|
|
5
|
+
*/
|
|
6
|
+
export interface AvailabilityMetricProps extends AvailabilityAndLatencyMetricProps {
|
|
7
|
+
/**
|
|
8
|
+
* The type of availability metric
|
|
9
|
+
*/
|
|
10
|
+
readonly metricType: AvailabilityMetricType;
|
|
11
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWV0cmljcy9wcm9wcy9BdmFpbGFiaWxpdHlNZXRyaWNQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9BdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljUHJvcHMnO1xuaW1wb3J0IHsgQXZhaWxhYmlsaXR5TWV0cmljVHlwZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9BdmFpbGFiaWxpdHlNZXRyaWNUeXBlJztcblxuLyoqXG4gKiBNZXRyaWMgcHJvcGVydGllcyBmb3IgYXZhaWxhYmlsaXR5IG1ldHJpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdmFpbGFiaWxpdHlNZXRyaWNQcm9wc1xuICBleHRlbmRzIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBhdmFpbGFiaWxpdHkgbWV0cmljXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNUeXBlOiBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlO1xufVxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AvailabilityAndLatencyMetricProps } from './AvailabilityAndLatencyMetricProps';
|
|
2
|
+
import { LatencyMetricType } from '../../utilities/LatencyMetricType';
|
|
3
|
+
/**
|
|
4
|
+
* Metric properties for latency metrics
|
|
5
|
+
*/
|
|
6
|
+
export interface LatencyMetricProps extends AvailabilityAndLatencyMetricProps {
|
|
7
|
+
/**
|
|
8
|
+
* The type of latency metric
|
|
9
|
+
*/
|
|
10
|
+
readonly metricType: LatencyMetricType;
|
|
11
|
+
/**
|
|
12
|
+
* The latency statistic like p99, tm99, or TC(100:)
|
|
13
|
+
*/
|
|
14
|
+
readonly statistic: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF0ZW5jeU1ldHJpY1Byb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21ldHJpY3MvcHJvcHMvTGF0ZW5jeU1ldHJpY1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljUHJvcHMgfSBmcm9tICcuL0F2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNQcm9wcyc7XG5pbXBvcnQgeyBMYXRlbmN5TWV0cmljVHlwZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9MYXRlbmN5TWV0cmljVHlwZSc7XG5cbi8qKlxuICogTWV0cmljIHByb3BlcnRpZXMgZm9yIGxhdGVuY3kgbWV0cmljc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExhdGVuY3lNZXRyaWNQcm9wcyBleHRlbmRzIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBsYXRlbmN5IG1ldHJpY1xuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljVHlwZTogTGF0ZW5jeU1ldHJpY1R5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlbmN5IHN0YXRpc3RpYyBsaWtlIHA5OSwgdG05OSwgb3IgVEMoMTAwOilcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpc3RpYzogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVnaW9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZXRyaWNzL3Byb3BzL1JlZ2lvbmFsQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IEF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9BdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyc7XG5cbi8qKlxuICogTWV0cmljIHByb3BlcnRpZXMgZm9yIHJlZ2lvbmFsIGF2YWlsYWJpbGl0eSBtZXRyaWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wc1xuICBleHRlbmRzIEF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzIHt9XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVnaW9uYWxMYXRlbmN5TWV0cmljUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWV0cmljcy9wcm9wcy9SZWdpb25hbExhdGVuY3lNZXRyaWNQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgTGF0ZW5jeU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9MYXRlbmN5TWV0cmljUHJvcHMnO1xuXG4vKipcbiAqIE1ldHJpYyBwcm9wZXJ0aWVzIGZvciByZWdpb25hbCBsYXRlbmN5IG1ldHJpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpb25hbExhdGVuY3lNZXRyaWNQcm9wcyBleHRlbmRzIExhdGVuY3lNZXRyaWNQcm9wcyB7fVxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Duration } from 'aws-cdk-lib';
|
|
2
|
+
import { AvailabilityMetricProps } from './AvailabilityMetricProps';
|
|
3
|
+
/**
|
|
4
|
+
* Availability metric properties for a service
|
|
5
|
+
*/
|
|
6
|
+
export interface ServiceAvailabilityMetricProps {
|
|
7
|
+
/**
|
|
8
|
+
* The availability metric props for each operation in this service
|
|
9
|
+
*/
|
|
10
|
+
readonly availabilityMetricProps: AvailabilityMetricProps[];
|
|
11
|
+
/**
|
|
12
|
+
* The metric label
|
|
13
|
+
*/
|
|
14
|
+
readonly label: string;
|
|
15
|
+
/**
|
|
16
|
+
* The period for the availability metrics
|
|
17
|
+
*/
|
|
18
|
+
readonly period: Duration;
|
|
19
|
+
/**
|
|
20
|
+
* (Optional) A key prefix for the metric id to make it unique in a graph or alarm
|
|
21
|
+
*/
|
|
22
|
+
readonly keyPrefix?: string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21ldHJpY3MvcHJvcHMvU2VydmljZUF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9BdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyc7XG5cbi8qKlxuICogQXZhaWxhYmlsaXR5IG1ldHJpYyBwcm9wZXJ0aWVzIGZvciBhIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMge1xuICAvKipcbiAgICogVGhlIGF2YWlsYWJpbGl0eSBtZXRyaWMgcHJvcHMgZm9yIGVhY2ggb3BlcmF0aW9uIGluIHRoaXMgc2VydmljZVxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5TWV0cmljUHJvcHM6IEF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzW107XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWMgbGFiZWxcbiAgICovXG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwZXJpb2QgZm9yIHRoZSBhdmFpbGFiaWxpdHkgbWV0cmljc1xuICAgKi9cbiAgcmVhZG9ubHkgcGVyaW9kOiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogKE9wdGlvbmFsKSBBIGtleSBwcmVmaXggZm9yIHRoZSBtZXRyaWMgaWQgdG8gbWFrZSBpdCB1bmlxdWUgaW4gYSBncmFwaCBvciBhbGFybVxuICAgKi9cbiAgcmVhZG9ubHkga2V5UHJlZml4Pzogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Duration } from 'aws-cdk-lib';
|
|
2
|
+
import { LatencyMetricProps } from './LatencyMetricProps';
|
|
3
|
+
/**
|
|
4
|
+
* Latency metric properties for a service
|
|
5
|
+
*/
|
|
6
|
+
export interface ServiceLatencyMetricProps {
|
|
7
|
+
/**
|
|
8
|
+
* The latency metric props for each operation in this service
|
|
9
|
+
*/
|
|
10
|
+
readonly latencyMetricProps: LatencyMetricProps[];
|
|
11
|
+
/**
|
|
12
|
+
* The metric label
|
|
13
|
+
*/
|
|
14
|
+
readonly label: string;
|
|
15
|
+
/**
|
|
16
|
+
* The period for the availability metrics
|
|
17
|
+
*/
|
|
18
|
+
readonly period: Duration;
|
|
19
|
+
/**
|
|
20
|
+
* (Optional) A key prefix for the metric id to make it unique in a graph or alarm
|
|
21
|
+
*/
|
|
22
|
+
readonly keyPrefix?: string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUxhdGVuY3lNZXJpY1Byb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21ldHJpY3MvcHJvcHMvU2VydmljZUxhdGVuY3lNZXJpY1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IExhdGVuY3lNZXRyaWNQcm9wcyB9IGZyb20gJy4vTGF0ZW5jeU1ldHJpY1Byb3BzJztcblxuLyoqXG4gKiBMYXRlbmN5IG1ldHJpYyBwcm9wZXJ0aWVzIGZvciBhIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlTGF0ZW5jeU1ldHJpY1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBsYXRlbmN5IG1ldHJpYyBwcm9wcyBmb3IgZWFjaCBvcGVyYXRpb24gaW4gdGhpcyBzZXJ2aWNlXG4gICAqL1xuICByZWFkb25seSBsYXRlbmN5TWV0cmljUHJvcHM6IExhdGVuY3lNZXRyaWNQcm9wc1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbWV0cmljIGxhYmVsXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGVyaW9kIGZvciB0aGUgYXZhaWxhYmlsaXR5IG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IHBlcmlvZDogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgQSBrZXkgcHJlZml4IGZvciB0aGUgbWV0cmljIGlkIHRvIG1ha2UgaXQgdW5pcXVlIGluIGEgZ3JhcGggb3IgYWxhcm1cbiAgICovXG4gIHJlYWRvbmx5IGtleVByZWZpeD86IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AvailabilityMetricProps } from './AvailabilityMetricProps';
|
|
2
|
+
/**
|
|
3
|
+
* The Availability Zone availability metric properties
|
|
4
|
+
*/
|
|
5
|
+
export interface ZonalAvailabilityMetricProps extends AvailabilityMetricProps {
|
|
6
|
+
/**
|
|
7
|
+
* The Availability Zone Id for the metrics
|
|
8
|
+
*/
|
|
9
|
+
readonly availabilityZoneId: string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZXRyaWNzL3Byb3BzL1pvbmFsQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IEF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9BdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyc7XG5cbi8qKlxuICogVGhlIEF2YWlsYWJpbGl0eSBab25lIGF2YWlsYWJpbGl0eSBtZXRyaWMgcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFpvbmFsQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMgZXh0ZW5kcyBBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgSWQgZm9yIHRoZSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { LatencyMetricProps } from './LatencyMetricProps';
|
|
2
|
+
/**
|
|
3
|
+
* The latency metric properties for an Availability Zone
|
|
4
|
+
*/
|
|
5
|
+
export interface ZonalLatencyMetricProps extends LatencyMetricProps {
|
|
6
|
+
/**
|
|
7
|
+
* The Availability Zone Id for the metrics
|
|
8
|
+
*/
|
|
9
|
+
readonly availabilityZoneId: string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm9uYWxMYXRlbmN5TWV0cmljUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWV0cmljcy9wcm9wcy9ab25hbExhdGVuY3lNZXRyaWNQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgTGF0ZW5jeU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9MYXRlbmN5TWV0cmljUHJvcHMnO1xuXG4vKipcbiAqIFRoZSBsYXRlbmN5IG1ldHJpYyBwcm9wZXJ0aWVzIGZvciBhbiBBdmFpbGFiaWxpdHkgWm9uZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFpvbmFsTGF0ZW5jeU1ldHJpY1Byb3BzIGV4dGVuZHMgTGF0ZW5jeU1ldHJpY1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSBJZCBmb3IgdGhlIG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nO1xufVxuIl19
|
|
Binary file
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IFunction } from 'aws-cdk-lib/aws-lambda';
|
|
2
|
+
import { ILogGroup } from 'aws-cdk-lib/aws-logs';
|
|
3
|
+
export interface IOutlierDetectionFunction {
|
|
4
|
+
/**
|
|
5
|
+
* The outlier detection function
|
|
6
|
+
*/
|
|
7
|
+
function: IFunction;
|
|
8
|
+
/**
|
|
9
|
+
* The log group where the function logs will be sent
|
|
10
|
+
*/
|
|
11
|
+
logGroup: ILogGroup;
|
|
12
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSU91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vdXRsaWVyLWRldGVjdGlvbi9JT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IElMb2dHcm91cCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcblxuZXhwb3J0IGludGVyZmFjZSBJT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBvdXRsaWVyIGRldGVjdGlvbiBmdW5jdGlvblxuICAgKi9cbiAgZnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxvZyBncm91cCB3aGVyZSB0aGUgZnVuY3Rpb24gbG9ncyB3aWxsIGJlIHNlbnRcbiAgICovXG4gIGxvZ0dyb3VwOiBJTG9nR3JvdXA7XG59XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IFunction } from 'aws-cdk-lib/aws-lambda';
|
|
2
|
+
import { ILogGroup } from 'aws-cdk-lib/aws-logs';
|
|
3
|
+
import { Construct } from 'constructs';
|
|
4
|
+
import { IOutlierDetectionFunction } from './IOutlierDetectionFunction';
|
|
5
|
+
import { OutlierDetectionFunctionProps } from './props/OutlierDetectionFunctionProps';
|
|
6
|
+
export declare class OutlierDetectionFunction extends Construct implements IOutlierDetectionFunction {
|
|
7
|
+
/**
|
|
8
|
+
* The z-score function
|
|
9
|
+
*/
|
|
10
|
+
function: IFunction;
|
|
11
|
+
/**
|
|
12
|
+
* The log group where the canarty logs will be sent
|
|
13
|
+
*/
|
|
14
|
+
logGroup: ILogGroup;
|
|
15
|
+
constructor(scope: Construct, id: string, props: OutlierDetectionFunctionProps);
|
|
16
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OutlierDetectionFunction = void 0;
|
|
4
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
5
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
const path = require("path");
|
|
7
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
8
|
+
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
9
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
10
|
+
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
11
|
+
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
12
|
+
const constructs_1 = require("constructs");
|
|
13
|
+
class OutlierDetectionFunction extends constructs_1.Construct {
|
|
14
|
+
constructor(scope, id, props) {
|
|
15
|
+
super(scope, id);
|
|
16
|
+
let xrayManagedPolicy = new aws_iam_1.ManagedPolicy(this, 'xrayManagedPolicy', {
|
|
17
|
+
path: '/outlier-detection/',
|
|
18
|
+
statements: [
|
|
19
|
+
new aws_iam_1.PolicyStatement({
|
|
20
|
+
actions: [
|
|
21
|
+
'xray:PutTraceSegments',
|
|
22
|
+
'xray:PutTelemetryRecords',
|
|
23
|
+
'xray:GetSamplingRules',
|
|
24
|
+
'xray:GetSamplingTargets',
|
|
25
|
+
'xray:GetSamplingStatisticSummaries',
|
|
26
|
+
],
|
|
27
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
28
|
+
resources: ['*'],
|
|
29
|
+
}),
|
|
30
|
+
],
|
|
31
|
+
});
|
|
32
|
+
let cwManagedPolicy = new aws_iam_1.ManagedPolicy(this, 'CWManagedPolicy', {
|
|
33
|
+
path: '/outlier-detection/',
|
|
34
|
+
statements: [
|
|
35
|
+
new aws_iam_1.PolicyStatement({
|
|
36
|
+
actions: ['cloudwatch:GetMetricData', 'cloduwatch:PutMetricData'],
|
|
37
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
38
|
+
resources: ['*'],
|
|
39
|
+
}),
|
|
40
|
+
],
|
|
41
|
+
});
|
|
42
|
+
let executionRole = new aws_iam_1.Role(this, 'executionRole', {
|
|
43
|
+
assumedBy: new aws_iam_1.ServicePrincipal('lambda.amazonaws.com'),
|
|
44
|
+
path: '/outlier-detection/',
|
|
45
|
+
managedPolicies: [xrayManagedPolicy, cwManagedPolicy],
|
|
46
|
+
});
|
|
47
|
+
let sciPyLayer = new aws_lambda_1.LayerVersion(this, 'SciPyLayer', {
|
|
48
|
+
code: aws_lambda_1.Code.fromAsset(path.join(__dirname, 'src/scipy-layer.zip')),
|
|
49
|
+
compatibleArchitectures: [aws_lambda_1.Architecture.ARM_64],
|
|
50
|
+
compatibleRuntimes: [aws_lambda_1.Runtime.PYTHON_3_12],
|
|
51
|
+
});
|
|
52
|
+
let monitoringLayer = new aws_lambda_1.LayerVersion(this, 'MonitoringLayer', {
|
|
53
|
+
code: aws_lambda_1.Code.fromAsset(path.join(__dirname, '../monitoring/src/monitoring-layer.zip')),
|
|
54
|
+
compatibleArchitectures: [aws_lambda_1.Architecture.ARM_64],
|
|
55
|
+
compatibleRuntimes: [aws_lambda_1.Runtime.PYTHON_3_12],
|
|
56
|
+
});
|
|
57
|
+
if (props.vpc !== undefined && props.vpc != null) {
|
|
58
|
+
let sg = new aws_ec2_1.SecurityGroup(this, 'OutlierDetectionSecurityGroup', {
|
|
59
|
+
description: 'Allow outlier detection function to communicate with CW',
|
|
60
|
+
vpc: props.vpc,
|
|
61
|
+
allowAllOutbound: true,
|
|
62
|
+
});
|
|
63
|
+
this.function = new aws_lambda_1.Function(this, 'OutlierDetection', {
|
|
64
|
+
runtime: aws_lambda_1.Runtime.PYTHON_3_12,
|
|
65
|
+
code: aws_lambda_1.Code.fromAsset(path.join(__dirname, 'src/outlier-detection.zip')),
|
|
66
|
+
handler: 'index.handler',
|
|
67
|
+
role: executionRole,
|
|
68
|
+
architecture: aws_lambda_1.Architecture.ARM_64,
|
|
69
|
+
tracing: aws_lambda_1.Tracing.ACTIVE,
|
|
70
|
+
timeout: aws_cdk_lib_1.Duration.seconds(5),
|
|
71
|
+
memorySize: 512,
|
|
72
|
+
layers: [sciPyLayer, monitoringLayer],
|
|
73
|
+
environment: {
|
|
74
|
+
REGION: aws_cdk_lib_1.Fn.ref('AWS::Region'),
|
|
75
|
+
PARTITION: aws_cdk_lib_1.Fn.ref('AWS::Partition'),
|
|
76
|
+
},
|
|
77
|
+
vpc: props.vpc,
|
|
78
|
+
securityGroups: [sg],
|
|
79
|
+
vpcSubnets: props.subnetSelection,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.function = new aws_lambda_1.Function(this, 'OutlierDetection', {
|
|
84
|
+
runtime: aws_lambda_1.Runtime.PYTHON_3_12,
|
|
85
|
+
code: aws_lambda_1.Code.fromAsset(path.join(__dirname, 'src/outlier-detection.zip')),
|
|
86
|
+
handler: 'index.handler',
|
|
87
|
+
role: executionRole,
|
|
88
|
+
architecture: aws_lambda_1.Architecture.ARM_64,
|
|
89
|
+
tracing: aws_lambda_1.Tracing.ACTIVE,
|
|
90
|
+
timeout: aws_cdk_lib_1.Duration.seconds(5),
|
|
91
|
+
memorySize: 512,
|
|
92
|
+
layers: [sciPyLayer, monitoringLayer],
|
|
93
|
+
environment: {
|
|
94
|
+
REGION: aws_cdk_lib_1.Fn.ref('AWS::Region'),
|
|
95
|
+
PARTITION: aws_cdk_lib_1.Fn.ref('AWS::Partition'),
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
aws_cdk_lib_1.Tags.of(this.function).add('cloudwatch:datasource', 'custom', {
|
|
100
|
+
includeResourceTypes: ['AWS::Lambda::Function'],
|
|
101
|
+
});
|
|
102
|
+
this.function.addPermission('invokePermission', {
|
|
103
|
+
action: 'lambda:InvokeFunction',
|
|
104
|
+
principal: new aws_iam_1.ServicePrincipal('lambda.datasource.cloudwatch.amazonaws.com'),
|
|
105
|
+
sourceAccount: aws_cdk_lib_1.Fn.ref('AWS::AccountId'),
|
|
106
|
+
});
|
|
107
|
+
this.logGroup = new aws_logs_1.LogGroup(this, 'logGroup', {
|
|
108
|
+
logGroupName: `/aws/lambda/${this.function.functionName}`,
|
|
109
|
+
retention: aws_logs_1.RetentionDays.ONE_WEEK,
|
|
110
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
111
|
+
});
|
|
112
|
+
new aws_iam_1.ManagedPolicy(this, 'cwLogsManagedPolicy', {
|
|
113
|
+
path: '/outlier-detection/',
|
|
114
|
+
statements: [
|
|
115
|
+
new aws_iam_1.PolicyStatement({
|
|
116
|
+
actions: ['logs:CreateLogStream', 'logs:PutLogEvents'],
|
|
117
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
118
|
+
resources: [this.logGroup.logGroupArn],
|
|
119
|
+
}),
|
|
120
|
+
],
|
|
121
|
+
roles: [executionRole],
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.OutlierDetectionFunction = OutlierDetectionFunction;
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL291dGxpZXItZGV0ZWN0aW9uL091dGxpZXJEZXRlY3Rpb25GdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBQ3RDLDZCQUE2QjtBQUM3Qiw2Q0FBZ0U7QUFDaEUsaURBQW9FO0FBQ3BFLGlEQVE2QjtBQUM3Qix1REFTZ0M7QUFDaEMsbURBQTBFO0FBQzFFLDJDQUF1QztBQUl2QyxNQUFhLHdCQUNYLFNBQVEsc0JBQVM7SUFZakIsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBb0M7UUFFcEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLGlCQUFpQixHQUFtQixJQUFJLHVCQUFhLENBQ3ZELElBQUksRUFDSixtQkFBbUIsRUFDbkI7WUFDRSxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLFVBQVUsRUFBRTtnQkFDVixJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLG9DQUFvQztxQkFDckM7b0JBQ0QsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztvQkFDcEIsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2lCQUNqQixDQUFDO2FBQ0g7U0FDRixDQUNGLENBQUM7UUFDRixJQUFJLGVBQWUsR0FBRyxJQUFJLHVCQUFhLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQy9ELElBQUksRUFBRSxxQkFBcUI7WUFDM0IsVUFBVSxFQUFFO2dCQUNWLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsMEJBQTBCLEVBQUUsMEJBQTBCLENBQUM7b0JBQ2pFLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7b0JB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SSxFQUFFLHFCQUFxQixFQUFFO1lBQzdDLElBQUksRUFBRSxxQkFBcUI7WUFDM0IsVUFBVSxFQUFFO2dCQUNWLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3RELE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7b0JBQ3BCLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2lCQUN2QyxDQUFDO2FBQ0g7WUFDRCxLQUFLLEVBQUUsQ0FBQyxhQUFhLENBQUM7U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBekpELDREQXlKQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgRm4sIFJlbW92YWxQb2xpY3ksIFRhZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJU2VjdXJpdHlHcm91cCwgU2VjdXJpdHlHcm91cCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHtcbiAgRWZmZWN0LFxuICBJTWFuYWdlZFBvbGljeSxcbiAgSVJvbGUsXG4gIE1hbmFnZWRQb2xpY3ksXG4gIFBvbGljeVN0YXRlbWVudCxcbiAgUm9sZSxcbiAgU2VydmljZVByaW5jaXBhbCxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQge1xuICBBcmNoaXRlY3R1cmUsXG4gIENvZGUsXG4gIEZ1bmN0aW9uLFxuICBJRnVuY3Rpb24sXG4gIElMYXllclZlcnNpb24sXG4gIExheWVyVmVyc2lvbixcbiAgUnVudGltZSxcbiAgVHJhY2luZyxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBJTG9nR3JvdXAsIExvZ0dyb3VwLCBSZXRlbnRpb25EYXlzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uIH0gZnJvbSAnLi9JT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uJztcbmltcG9ydCB7IE91dGxpZXJEZXRlY3Rpb25GdW5jdGlvblByb3BzIH0gZnJvbSAnLi9wcm9wcy9PdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb25Qcm9wcyc7XG5cbmV4cG9ydCBjbGFzcyBPdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb25cbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSB6LXNjb3JlIGZ1bmN0aW9uXG4gICAqL1xuICBmdW5jdGlvbjogSUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIHdoZXJlIHRoZSBjYW5hcnR5IGxvZ3Mgd2lsbCBiZSBzZW50XG4gICAqL1xuICBsb2dHcm91cDogSUxvZ0dyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBsZXQgeHJheU1hbmFnZWRQb2xpY3k6IElNYW5hZ2VkUG9saWN5ID0gbmV3IE1hbmFnZWRQb2xpY3koXG4gICAgICB0aGlzLFxuICAgICAgJ3hyYXlNYW5hZ2VkUG9saWN5JyxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJy9vdXRsaWVyLWRldGVjdGlvbi8nLFxuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICd4cmF5OlB1dFRyYWNlU2VnbWVudHMnLFxuICAgICAgICAgICAgICAneHJheTpQdXRUZWxlbWV0cnlSZWNvcmRzJyxcbiAgICAgICAgICAgICAgJ3hyYXk6R2V0U2FtcGxpbmdSdWxlcycsXG4gICAgICAgICAgICAgICd4cmF5OkdldFNhbXBsaW5nVGFyZ2V0cycsXG4gICAgICAgICAgICAgICd4cmF5OkdldFNhbXBsaW5nU3RhdGlzdGljU3VtbWFyaWVzJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICk7XG4gICAgbGV0IGN3TWFuYWdlZFBvbGljeSA9IG5ldyBNYW5hZ2VkUG9saWN5KHRoaXMsICdDV01hbmFnZWRQb2xpY3knLCB7XG4gICAgICBwYXRoOiAnL291dGxpZXItZGV0ZWN0aW9uLycsXG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFsnY2xvdWR3YXRjaDpHZXRNZXRyaWNEYXRhJywgJ2Nsb2R1d2F0Y2g6UHV0TWV0cmljRGF0YSddLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGxldCBleGVjdXRpb25Sb2xlOiBJUm9sZSA9IG5ldyBSb2xlKHRoaXMsICdleGVjdXRpb25Sb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgU2VydmljZVByaW5jaXBhbCgnbGFtYmRhLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIHBhdGg6ICcvb3V0bGllci1kZXRlY3Rpb24vJyxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW3hyYXlNYW5hZ2VkUG9saWN5LCBjd01hbmFnZWRQb2xpY3ldLFxuICAgIH0pO1xuXG4gICAgbGV0IHNjaVB5TGF5ZXI6IElMYXllclZlcnNpb24gPSBuZXcgTGF5ZXJWZXJzaW9uKHRoaXMsICdTY2lQeUxheWVyJywge1xuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ3NyYy9zY2lweS1sYXllci56aXAnKSksXG4gICAgICBjb21wYXRpYmxlQXJjaGl0ZWN0dXJlczogW0FyY2hpdGVjdHVyZS5BUk1fNjRdLFxuICAgICAgY29tcGF0aWJsZVJ1bnRpbWVzOiBbUnVudGltZS5QWVRIT05fM18xMl0sXG4gICAgfSk7XG5cbiAgICBsZXQgbW9uaXRvcmluZ0xheWVyOiBJTGF5ZXJWZXJzaW9uID0gbmV3IExheWVyVmVyc2lvbihcbiAgICAgIHRoaXMsXG4gICAgICAnTW9uaXRvcmluZ0xheWVyJyxcbiAgICAgIHtcbiAgICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL21vbml0b3Jpbmcvc3JjL21vbml0b3JpbmctbGF5ZXIuemlwJyksXG4gICAgICAgICksXG4gICAgICAgIGNvbXBhdGlibGVBcmNoaXRlY3R1cmVzOiBbQXJjaGl0ZWN0dXJlLkFSTV82NF0sXG4gICAgICAgIGNvbXBhdGlibGVSdW50aW1lczogW1J1bnRpbWUuUFlUSE9OXzNfMTJdLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKHByb3BzLnZwYyAhPT0gdW5kZWZpbmVkICYmIHByb3BzLnZwYyAhPSBudWxsKSB7XG4gICAgICBsZXQgc2c6IElTZWN1cml0eUdyb3VwID0gbmV3IFNlY3VyaXR5R3JvdXAoXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdPdXRsaWVyRGV0ZWN0aW9uU2VjdXJpdHlHcm91cCcsXG4gICAgICAgIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdBbGxvdyBvdXRsaWVyIGRldGVjdGlvbiBmdW5jdGlvbiB0byBjb21tdW5pY2F0ZSB3aXRoIENXJyxcbiAgICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgdGhpcy5mdW5jdGlvbiA9IG5ldyBGdW5jdGlvbih0aGlzLCAnT3V0bGllckRldGVjdGlvbicsIHtcbiAgICAgICAgcnVudGltZTogUnVudGltZS5QWVRIT05fM18xMixcbiAgICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ3NyYy9vdXRsaWVyLWRldGVjdGlvbi56aXAnKSksXG4gICAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgICAgcm9sZTogZXhlY3V0aW9uUm9sZSxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgICBsYXllcnM6IFtzY2lQeUxheWVyLCBtb25pdG9yaW5nTGF5ZXJdLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIFJFR0lPTjogRm4ucmVmKCdBV1M6OlJlZ2lvbicpLFxuICAgICAgICAgIFBBUlRJVElPTjogRm4ucmVmKCdBV1M6OlBhcnRpdGlvbicpLFxuICAgICAgICB9LFxuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IFtzZ10sXG4gICAgICAgIHZwY1N1Ym5ldHM6IHByb3BzLnN1Ym5ldFNlbGVjdGlvbixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKHRoaXMsICdPdXRsaWVyRGV0ZWN0aW9uJywge1xuICAgICAgICBydW50aW1lOiBSdW50aW1lLlBZVEhPTl8zXzEyLFxuICAgICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnc3JjL291dGxpZXItZGV0ZWN0aW9uLnppcCcpKSxcbiAgICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgICByb2xlOiBleGVjdXRpb25Sb2xlLFxuICAgICAgICBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICAgIGxheWVyczogW3NjaVB5TGF5ZXIsIG1vbml0b3JpbmdMYXllcl0sXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgUkVHSU9OOiBGbi5yZWYoJ0FXUzo6UmVnaW9uJyksXG4gICAgICAgICAgUEFSVElUSU9OOiBGbi5yZWYoJ0FXUzo6UGFydGl0aW9uJyksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBUYWdzLm9mKHRoaXMuZnVuY3Rpb24pLmFkZCgnY2xvdWR3YXRjaDpkYXRhc291cmNlJywgJ2N1c3RvbScsIHtcbiAgICAgIGluY2x1ZGVSZXNvdXJjZVR5cGVzOiBbJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbiddLFxuICAgIH0pO1xuXG4gICAgdGhpcy5mdW5jdGlvbi5hZGRQZXJtaXNzaW9uKCdpbnZva2VQZXJtaXNzaW9uJywge1xuICAgICAgYWN0aW9uOiAnbGFtYmRhOkludm9rZUZ1bmN0aW9uJyxcbiAgICAgIHByaW5jaXBhbDogbmV3IFNlcnZpY2VQcmluY2lwYWwoXG4gICAgICAgICdsYW1iZGEuZGF0YXNvdXJjZS5jbG91ZHdhdGNoLmFtYXpvbmF3cy5jb20nLFxuICAgICAgKSxcbiAgICAgIHNvdXJjZUFjY291bnQ6IEZuLnJlZignQVdTOjpBY2NvdW50SWQnKSxcbiAgICB9KTtcblxuICAgIHRoaXMubG9nR3JvdXAgPSBuZXcgTG9nR3JvdXAodGhpcywgJ2xvZ0dyb3VwJywge1xuICAgICAgbG9nR3JvdXBOYW1lOiBgL2F3cy9sYW1iZGEvJHt0aGlzLmZ1bmN0aW9uLmZ1bmN0aW9uTmFtZX1gLFxuICAgICAgcmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIH0pO1xuXG4gICAgbmV3IE1hbmFnZWRQb2xpY3kodGhpcywgJ2N3TG9nc01hbmFnZWRQb2xpY3knLCB7XG4gICAgICBwYXRoOiAnL291dGxpZXItZGV0ZWN0aW9uLycsXG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFsnbG9nczpDcmVhdGVMb2dTdHJlYW0nLCAnbG9nczpQdXRMb2dFdmVudHMnXSxcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICByZXNvdXJjZXM6IFt0aGlzLmxvZ0dyb3VwLmxvZ0dyb3VwQXJuXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgcm9sZXM6IFtleGVjdXRpb25Sb2xlXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IVpc, SubnetSelection } from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
export interface OutlierDetectionFunctionProps {
|
|
3
|
+
/**
|
|
4
|
+
* If you want the function to run in your VPC, provide
|
|
5
|
+
* the VPC object
|
|
6
|
+
*/
|
|
7
|
+
readonly vpc?: IVpc;
|
|
8
|
+
/**
|
|
9
|
+
* The subnets to use in the VPC
|
|
10
|
+
*/
|
|
11
|
+
readonly subnetSelection?: SubnetSelection;
|
|
12
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvb3V0bGllci1kZXRlY3Rpb24vcHJvcHMvT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IElWcGMsIFN1Ym5ldFNlbGVjdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE91dGxpZXJEZXRlY3Rpb25GdW5jdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIElmIHlvdSB3YW50IHRoZSBmdW5jdGlvbiB0byBydW4gaW4geW91ciBWUEMsIHByb3ZpZGVcbiAgICogdGhlIFZQQyBvYmplY3RcbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IElWcGM7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXRzIHRvIHVzZSBpbiB0aGUgVlBDXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRTZWxlY3Rpb24/OiBTdWJuZXRTZWxlY3Rpb247XG59XG4iXX0=
|
|
Binary file
|
|
Binary file
|