@cdklabs/multi-az-observability 0.0.1-alpha.6 → 0.0.1-alpha.60
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 +2826 -1008
- package/.jsii.tabl.json +1 -0
- package/API.md +5406 -1585
- package/README.md +176 -152
- package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.d.ts +18 -14
- package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.js +98 -60
- package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.d.ts +3 -3
- package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.js +2 -2
- package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.d.ts +6 -15
- package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.js +2 -10
- package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.d.ts +11 -3
- package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.js +29 -13
- package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.d.ts +0 -8
- package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/IOperationAlarmsAndRules.d.ts +26 -23
- package/lib/alarmsandrules/IOperationAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/IServerSideOperationRegionalAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/IServiceAlarmsAndRules.d.ts +19 -15
- package/lib/alarmsandrules/IServiceAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/OperationAlarmsAndRules.d.ts +21 -18
- package/lib/alarmsandrules/OperationAlarmsAndRules.js +60 -72
- package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.d.ts +5 -5
- package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.js +2 -3
- package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.d.ts +21 -13
- package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.js +48 -29
- package/lib/alarmsandrules/ServiceAlarmsAndRules.d.ts +19 -15
- package/lib/alarmsandrules/ServiceAlarmsAndRules.js +34 -136
- package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.d.ts +4 -3
- package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.js +1 -1
- package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.d.ts +6 -44
- package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.js +1 -1
- package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.d.ts +39 -7
- package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.js +1 -1
- package/lib/azmapper/AvailabilityZoneMapper.js +8 -9
- package/lib/basic_observability/BasicServiceDashboard.d.ts +0 -3
- package/lib/basic_observability/BasicServiceDashboard.js +24 -112
- package/lib/basic_observability/BasicServiceMultiAZObservability.d.ts +8 -9
- package/lib/basic_observability/BasicServiceMultiAZObservability.js +97 -349
- package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.d.ts +66 -0
- package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.js +3 -0
- package/lib/basic_observability/props/BasicServiceDashboardProps.d.ts +27 -13
- package/lib/basic_observability/props/BasicServiceDashboardProps.js +1 -1
- package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.d.ts +10 -44
- package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.js +1 -1
- package/lib/basic_observability/props/NatGatewayDetectionProps.d.ts +31 -0
- package/lib/basic_observability/props/NatGatewayDetectionProps.js +3 -0
- package/lib/canaries/CanaryFunction.js +14 -13
- package/lib/canaries/CanaryTest.js +4 -4
- package/lib/canaries/src/canary.zip +0 -0
- package/lib/dashboards/ContributorInsightsWidget.d.ts +1 -1
- package/lib/dashboards/ContributorInsightsWidget.js +13 -17
- package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.d.ts +2 -6
- package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +436 -510
- package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.d.ts +2 -10
- package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +420 -416
- package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.d.ts +3 -66
- package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.js +1 -1
- package/lib/dashboards/props/OperationAvailabilityWidgetProps.d.ts +7 -2
- package/lib/dashboards/props/OperationAvailabilityWidgetProps.js +1 -1
- package/lib/dashboards/props/OperationLatencyWidgetProps.d.ts +7 -2
- package/lib/dashboards/props/OperationLatencyWidgetProps.js +1 -1
- package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.d.ts +8 -8
- package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.js +1 -1
- package/lib/index.d.ts +56 -25
- package/lib/index.js +37 -19
- package/lib/metrics/ApplicationLoadBalancerMetrics.d.ts +79 -2
- package/lib/metrics/ApplicationLoadBalancerMetrics.js +883 -26
- package/lib/metrics/AvailabilityAndLatencyMetrics.d.ts +23 -0
- package/lib/metrics/AvailabilityAndLatencyMetrics.js +125 -31
- package/lib/metrics/NatGatewayMetrics.d.ts +113 -0
- package/lib/metrics/NatGatewayMetrics.js +357 -0
- package/lib/metrics/RegionalAvailabilityMetrics.js +9 -10
- package/lib/metrics/RegionalLatencyMetrics.d.ts +1 -1
- package/lib/metrics/RegionalLatencyMetrics.js +27 -20
- package/lib/metrics/ZonalAvailabilityMetrics.d.ts +2 -8
- package/lib/metrics/ZonalAvailabilityMetrics.js +13 -28
- package/lib/metrics/ZonalLatencyMetrics.d.ts +2 -1
- package/lib/metrics/ZonalLatencyMetrics.js +33 -23
- package/lib/metrics/props/AvailabilityAndLatencyMetricProps.d.ts +4 -0
- package/lib/metrics/props/AvailabilityAndLatencyMetricProps.js +1 -1
- package/lib/metrics/props/LatencyMetricProps.d.ts +6 -0
- package/lib/metrics/props/LatencyMetricProps.js +1 -1
- package/lib/metrics/props/ZonalAvailabilityMetricProps.d.ts +4 -0
- package/lib/metrics/props/ZonalAvailabilityMetricProps.js +1 -1
- package/lib/metrics/props/ZonalLatencyMetricProps.d.ts +4 -0
- package/lib/metrics/props/ZonalLatencyMetricProps.js +1 -1
- package/lib/monitoring/src/monitoring-layer.zip +0 -0
- package/lib/outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm.d.ts +10 -0
- package/lib/outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm.js +15 -0
- package/lib/{basic_observability/props/ApplicationLoadBalancerLatencyOutlierCalculation.d.ts → outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm.d.ts} +1 -1
- package/lib/outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm.js +23 -0
- package/lib/outlier-detection/LatencyOutlierMetricAggregation.d.ts +22 -0
- package/lib/outlier-detection/LatencyOutlierMetricAggregation.js +27 -0
- package/lib/outlier-detection/OutlierDetectionFunction.js +7 -6
- package/lib/outlier-detection/PacketLossOutlierAlgorithm.d.ts +10 -0
- package/lib/outlier-detection/PacketLossOutlierAlgorithm.js +15 -0
- package/lib/outlier-detection/src/outlier-detection.zip +0 -0
- package/lib/outlier-detection/src/scipy-layer.zip +0 -0
- package/lib/services/CanaryMetrics.d.ts +4 -3
- package/lib/services/CanaryMetrics.js +3 -4
- package/lib/services/CanaryTestAvailabilityMetricsOverride.d.ts +21 -0
- package/lib/services/CanaryTestAvailabilityMetricsOverride.js +23 -0
- package/lib/services/CanaryTestLatencyMetricsOverride.d.ts +15 -0
- package/lib/services/CanaryTestLatencyMetricsOverride.js +20 -0
- package/lib/services/CanaryTestMetricsOverride.d.ts +1 -13
- package/lib/services/CanaryTestMetricsOverride.js +2 -4
- package/lib/services/ContributorInsightRuleDetails.js +1 -1
- package/lib/services/ICanaryMetrics.d.ts +4 -3
- package/lib/services/ICanaryMetrics.js +1 -1
- package/lib/services/ICanaryTestAvailabilityMetricsOverride.d.ts +23 -0
- package/lib/services/ICanaryTestAvailabilityMetricsOverride.js +3 -0
- package/lib/services/ICanaryTestLatencyMetricsOverride.d.ts +13 -0
- package/lib/services/ICanaryTestLatencyMetricsOverride.js +3 -0
- package/lib/services/ICanaryTestMetricsOverride.d.ts +0 -12
- package/lib/services/ICanaryTestMetricsOverride.js +1 -1
- package/lib/services/IInstrumentedServiceMultiAZObservability.d.ts +13 -3
- package/lib/services/IInstrumentedServiceMultiAZObservability.js +1 -1
- package/lib/services/IOperation.d.ts +8 -6
- package/lib/services/IOperation.js +1 -1
- package/lib/services/IOperationAvailabilityMetricDetails.d.ts +18 -0
- package/lib/services/IOperationAvailabilityMetricDetails.js +3 -0
- package/lib/services/IOperationLatencyMetricDetails.d.ts +12 -0
- package/lib/services/IOperationLatencyMetricDetails.js +3 -0
- package/lib/services/IOperationMetricDetails.d.ts +0 -12
- package/lib/services/IOperationMetricDetails.js +1 -1
- package/lib/services/IService.d.ts +18 -4
- package/lib/services/IService.js +1 -1
- package/lib/services/IServiceAvailabilityMetricDetails.d.ts +18 -0
- package/lib/services/IServiceAvailabilityMetricDetails.js +3 -0
- package/lib/services/IServiceLatencyMetricDetails.d.ts +12 -0
- package/lib/services/IServiceLatencyMetricDetails.js +3 -0
- package/lib/services/IServiceMetricDetails.d.ts +0 -12
- package/lib/services/IServiceMetricDetails.js +1 -1
- package/lib/services/InstrumentedServiceMultiAZObservability.d.ts +15 -3
- package/lib/services/InstrumentedServiceMultiAZObservability.js +252 -228
- package/lib/services/Operation.d.ts +8 -6
- package/lib/services/Operation.js +4 -3
- package/lib/services/OperationAvailabilityMetricDetails.d.ts +22 -0
- package/lib/services/OperationAvailabilityMetricDetails.js +24 -0
- package/lib/services/OperationLatencyMetricDetails.d.ts +16 -0
- package/lib/services/OperationLatencyMetricDetails.js +21 -0
- package/lib/services/OperationMetricDetails.d.ts +1 -13
- package/lib/services/OperationMetricDetails.js +2 -8
- package/lib/services/Service.d.ts +18 -4
- package/lib/services/Service.js +4 -2
- package/lib/services/ServiceAvailabilityMetricDetails.d.ts +21 -0
- package/lib/services/ServiceAvailabilityMetricDetails.js +20 -0
- package/lib/services/ServiceLatencyMetricDetails.d.ts +15 -0
- package/lib/services/ServiceLatencyMetricDetails.js +19 -0
- package/lib/services/ServiceMetricDetails.d.ts +1 -13
- package/lib/services/ServiceMetricDetails.js +2 -4
- package/lib/services/props/CanaryMetricProps.d.ts +4 -3
- package/lib/services/props/CanaryMetricProps.js +1 -1
- package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.d.ts +22 -0
- package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.js +3 -0
- package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.d.ts +14 -0
- package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.js +3 -0
- package/lib/services/props/CanaryTestMetricsOverrideProps.d.ts +0 -16
- package/lib/services/props/CanaryTestMetricsOverrideProps.js +1 -1
- package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.d.ts +50 -5
- package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.js +1 -1
- package/lib/services/props/MetricDimensions.js +1 -1
- package/lib/services/props/OperationAvailabilityMetricDetailsProps.d.ts +22 -0
- package/lib/services/props/OperationAvailabilityMetricDetailsProps.js +3 -0
- package/lib/services/props/OperationLatencyMetricDetailsProps.d.ts +14 -0
- package/lib/services/props/OperationLatencyMetricDetailsProps.js +3 -0
- package/lib/services/props/OperationMetricDetailsProps.d.ts +0 -16
- package/lib/services/props/OperationMetricDetailsProps.js +1 -1
- package/lib/services/props/OperationProps.d.ts +4 -3
- package/lib/services/props/OperationProps.js +1 -1
- package/lib/services/props/ServiceAvailabilityMetricDetailsProps.d.ts +18 -0
- package/lib/services/props/ServiceAvailabilityMetricDetailsProps.js +3 -0
- package/lib/services/props/ServiceLatencyMetricDetailsProps.d.ts +12 -0
- package/lib/services/props/ServiceLatencyMetricDetailsProps.js +3 -0
- package/lib/services/props/ServiceMetricDetailsProps.d.ts +0 -12
- package/lib/services/props/ServiceMetricDetailsProps.js +1 -1
- package/lib/services/props/ServiceProps.d.ts +18 -4
- package/lib/services/props/ServiceProps.js +1 -1
- package/lib/utilities/MetricsHelper.d.ts +17 -9
- package/lib/utilities/MetricsHelper.js +34 -10
- package/lib/utilities/MinimumUnhealthyTargets.d.ts +25 -0
- package/lib/utilities/MinimumUnhealthyTargets.js +3 -0
- package/package.json +14 -14
- package/rosetta/default.ts-fixture +72 -0
- package/rosetta/service.ts-fixture +144 -0
- package/lib/basic_observability/props/ApplicationLoadBalancerLatencyOutlierCalculation.js +0 -23
- package/lib/services/IBasicServiceMultiAZObservability.d.ts +0 -45
- package/lib/services/IBasicServiceMultiAZObservability.js +0 -3
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { IApplicationLoadBalancer, ITargetGroup } from "aws-cdk-lib/aws-elasticloadbalancingv2";
|
|
2
|
+
import { ApplicationLoadBalancerAvailabilityOutlierAlgorithm } from "../../outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm";
|
|
3
|
+
import { ApplicationLoadBalancerLatencyOutlierAlgorithm } from "../../outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm";
|
|
4
|
+
import { Duration } from "aws-cdk-lib";
|
|
5
|
+
/**
|
|
6
|
+
* An object to map an ALB to its target groups
|
|
7
|
+
*/
|
|
8
|
+
export interface AlbTargetGroupMap {
|
|
9
|
+
/**
|
|
10
|
+
* The application load balancer
|
|
11
|
+
*/
|
|
12
|
+
readonly applicationLoadBalancer: IApplicationLoadBalancer;
|
|
13
|
+
/**
|
|
14
|
+
* The target groups associated with the ALB
|
|
15
|
+
*
|
|
16
|
+
* @default No target groups are associated and will not display anomalous hosts or mitigated hosts on the dashboard
|
|
17
|
+
*/
|
|
18
|
+
readonly targetGroups?: ITargetGroup[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The properties for performing zonal impact detection with ALB(s).
|
|
22
|
+
*/
|
|
23
|
+
export interface ApplicationLoadBalancerDetectionProps {
|
|
24
|
+
/**
|
|
25
|
+
* Map of target groups per ALB to collect metrics from.
|
|
26
|
+
*/
|
|
27
|
+
readonly albTargetGroupMap: AlbTargetGroupMap[];
|
|
28
|
+
/**
|
|
29
|
+
* The percentage of faults for a single ALB to consider an AZ
|
|
30
|
+
* to be unhealthy, a number between 0 and 100. This should align with your availability goal. For example
|
|
31
|
+
* 1% or 5%, provided as 1 or 5.
|
|
32
|
+
*/
|
|
33
|
+
readonly faultCountPercentThreshold: number;
|
|
34
|
+
/**
|
|
35
|
+
* The threshold in milliseconds for ALB targets whose responses are slower than this
|
|
36
|
+
* value at the specified percentile statistic.
|
|
37
|
+
*/
|
|
38
|
+
readonly latencyThreshold: Duration;
|
|
39
|
+
/**
|
|
40
|
+
* The statistic used to measure target response latency, like p99,
|
|
41
|
+
* which can be specified using Stats.percentile(99) or "p99".
|
|
42
|
+
*/
|
|
43
|
+
readonly latencyStatistic: string;
|
|
44
|
+
/**
|
|
45
|
+
* The method used to determine if an AZ is an outlier for latency for Application Load Balancer metrics.
|
|
46
|
+
* @default Z_SCORE
|
|
47
|
+
*/
|
|
48
|
+
readonly latencyOutlierAlgorithm?: ApplicationLoadBalancerLatencyOutlierAlgorithm;
|
|
49
|
+
/**
|
|
50
|
+
* The method used to determine if an AZ is an outlier for availability for Application Load Balancer metrics.
|
|
51
|
+
* @default STATIC
|
|
52
|
+
*/
|
|
53
|
+
readonly availabilityOutlierAlgorithm?: ApplicationLoadBalancerAvailabilityOutlierAlgorithm;
|
|
54
|
+
/**
|
|
55
|
+
* The threshold for the outlier detection algorithm.
|
|
56
|
+
*
|
|
57
|
+
* @default "This depends on the algorithm used. STATIC: 66"
|
|
58
|
+
*/
|
|
59
|
+
readonly availabilityOutlierThreshold?: number;
|
|
60
|
+
/**
|
|
61
|
+
* The threshold for the outlier detection algorithm.
|
|
62
|
+
*
|
|
63
|
+
* @default "This depends on the algorithm used. STATIC: 66. Z_SCORE: 3."
|
|
64
|
+
*/
|
|
65
|
+
readonly latencyOutlierThreshold?: number;
|
|
66
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJEZXRlY3Rpb25Qcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXNpY19vYnNlcnZhYmlsaXR5L3Byb3BzL0FwcGxpY2F0aW9uTG9hZEJhbGFuY2VyRGV0ZWN0aW9uUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciwgSVRhcmdldEdyb3VwIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXCI7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckF2YWlsYWJpbGl0eU91dGxpZXJBbGdvcml0aG0gfSBmcm9tIFwiLi4vLi4vb3V0bGllci1kZXRlY3Rpb24vQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJBdmFpbGFiaWxpdHlPdXRsaWVyQWxnb3JpdGhtXCI7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckxhdGVuY3lPdXRsaWVyQWxnb3JpdGhtIH0gZnJvbSBcIi4uLy4uL291dGxpZXItZGV0ZWN0aW9uL0FwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTGF0ZW5jeU91dGxpZXJBbGdvcml0aG1cIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbi8qKlxuICogQW4gb2JqZWN0IHRvIG1hcCBhbiBBTEIgdG8gaXRzIHRhcmdldCBncm91cHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGJUYXJnZXRHcm91cE1hcCB7XG4gIC8qKlxuICAgKiBUaGUgYXBwbGljYXRpb24gbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgcmVhZG9ubHkgYXBwbGljYXRpb25Mb2FkQmFsYW5jZXI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcjtcblxuICAvKipcbiAgICogVGhlIHRhcmdldCBncm91cHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBBTEJcbiAgICogXG4gICAqIEBkZWZhdWx0IE5vIHRhcmdldCBncm91cHMgYXJlIGFzc29jaWF0ZWQgYW5kIHdpbGwgbm90IGRpc3BsYXkgYW5vbWFsb3VzIGhvc3RzIG9yIG1pdGlnYXRlZCBob3N0cyBvbiB0aGUgZGFzaGJvYXJkXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRHcm91cHM/OiBJVGFyZ2V0R3JvdXBbXTtcbn1cblxuLyoqXG4gKiBUaGUgcHJvcGVydGllcyBmb3IgcGVyZm9ybWluZyB6b25hbCBpbXBhY3QgZGV0ZWN0aW9uIHdpdGggQUxCKHMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyRGV0ZWN0aW9uUHJvcHMge1xuXG4gIC8qKlxuICAgKiBNYXAgb2YgdGFyZ2V0IGdyb3VwcyBwZXIgQUxCIHRvIGNvbGxlY3QgbWV0cmljcyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxiVGFyZ2V0R3JvdXBNYXA6IEFsYlRhcmdldEdyb3VwTWFwW107XG5cbiAgLyoqXG4gICAqIFRoZSBwZXJjZW50YWdlIG9mIGZhdWx0cyBmb3IgYSBzaW5nbGUgQUxCIHRvIGNvbnNpZGVyIGFuIEFaXG4gICAqIHRvIGJlIHVuaGVhbHRoeSwgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMDAuIFRoaXMgc2hvdWxkIGFsaWduIHdpdGggeW91ciBhdmFpbGFiaWxpdHkgZ29hbC4gRm9yIGV4YW1wbGVcbiAgICogMSUgb3IgNSUsIHByb3ZpZGVkIGFzIDEgb3IgNS5cbiAgICovXG4gIHJlYWRvbmx5IGZhdWx0Q291bnRQZXJjZW50VGhyZXNob2xkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aHJlc2hvbGQgaW4gbWlsbGlzZWNvbmRzIGZvciBBTEIgdGFyZ2V0cyB3aG9zZSByZXNwb25zZXMgYXJlIHNsb3dlciB0aGFuIHRoaXNcbiAgICogdmFsdWUgYXQgdGhlIHNwZWNpZmllZCBwZXJjZW50aWxlIHN0YXRpc3RpYy5cbiAgICovXG4gIHJlYWRvbmx5IGxhdGVuY3lUaHJlc2hvbGQ6IER1cmF0aW9uO1xuICBcbiAgLyoqXG4gICAqIFRoZSBzdGF0aXN0aWMgdXNlZCB0byBtZWFzdXJlIHRhcmdldCByZXNwb25zZSBsYXRlbmN5LCBsaWtlIHA5OSwgXG4gICAqIHdoaWNoIGNhbiBiZSBzcGVjaWZpZWQgdXNpbmcgU3RhdHMucGVyY2VudGlsZSg5OSkgb3IgXCJwOTlcIi5cbiAgICovXG4gIHJlYWRvbmx5IGxhdGVuY3lTdGF0aXN0aWM6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1ldGhvZCB1c2VkIHRvIGRldGVybWluZSBpZiBhbiBBWiBpcyBhbiBvdXRsaWVyIGZvciBsYXRlbmN5IGZvciBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyIG1ldHJpY3MuXG4gICAqIEBkZWZhdWx0IFpfU0NPUkVcbiAgICovXG4gIHJlYWRvbmx5IGxhdGVuY3lPdXRsaWVyQWxnb3JpdGhtPzogQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckFsZ29yaXRobTtcblxuICAvKipcbiAgICogVGhlIG1ldGhvZCB1c2VkIHRvIGRldGVybWluZSBpZiBhbiBBWiBpcyBhbiBvdXRsaWVyIGZvciBhdmFpbGFiaWxpdHkgZm9yIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIgbWV0cmljcy5cbiAgICogQGRlZmF1bHQgU1RBVElDXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlPdXRsaWVyQWxnb3JpdGhtPzogQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJBdmFpbGFiaWxpdHlPdXRsaWVyQWxnb3JpdGhtO1xuXG4gIC8qKlxuICAgKiBUaGUgdGhyZXNob2xkIGZvciB0aGUgb3V0bGllciBkZXRlY3Rpb24gYWxnb3JpdGhtLlxuICAgKiBcbiAgICogQGRlZmF1bHQgXCJUaGlzIGRlcGVuZHMgb24gdGhlIGFsZ29yaXRobSB1c2VkLiBTVEFUSUM6IDY2XCJcbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eU91dGxpZXJUaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aHJlc2hvbGQgZm9yIHRoZSBvdXRsaWVyIGRldGVjdGlvbiBhbGdvcml0aG0uXG4gICAqIFxuICAgKiBAZGVmYXVsdCBcIlRoaXMgZGVwZW5kcyBvbiB0aGUgYWxnb3JpdGhtIHVzZWQuIFNUQVRJQzogNjYuIFpfU0NPUkU6IDMuXCJcbiAgICovXG4gIHJlYWRvbmx5IGxhdGVuY3lPdXRsaWVyVGhyZXNob2xkPzogbnVtYmVyO1xuICBcbn0iXX0=
|
|
@@ -1,26 +1,40 @@
|
|
|
1
1
|
import { Duration } from 'aws-cdk-lib';
|
|
2
|
-
import { IAlarm
|
|
2
|
+
import { IAlarm } from 'aws-cdk-lib/aws-cloudwatch';
|
|
3
3
|
import { AvailabilityZoneMapper } from '../../azmapper/AvailabilityZoneMapper';
|
|
4
|
+
import { ApplicationLoadBalancerDetectionProps } from './ApplicationLoadBalancerDetectionProps';
|
|
5
|
+
import { NatGatewayDetectionProps } from './NatGatewayDetectionProps';
|
|
4
6
|
/**
|
|
5
7
|
* The properties for creating a dashboard with basic metrics
|
|
6
8
|
*/
|
|
7
9
|
export interface BasicServiceDashboardProps {
|
|
10
|
+
/**
|
|
11
|
+
* The service's name
|
|
12
|
+
*/
|
|
8
13
|
readonly serviceName: string;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
readonly zonalNatGatewayIsolatedImpactAlarms?: {
|
|
13
|
-
[key: string]: IAlarm;
|
|
14
|
-
};
|
|
14
|
+
/**
|
|
15
|
+
* The alarms indicating a single AZ impact, one per AZ
|
|
16
|
+
*/
|
|
15
17
|
readonly zonalAggregateIsolatedImpactAlarms: {
|
|
16
18
|
[key: string]: IAlarm;
|
|
17
19
|
};
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
readonly zonalNatGatewayPacketDropMetrics?: {
|
|
22
|
-
[key: string]: IMetric;
|
|
23
|
-
};
|
|
20
|
+
/**
|
|
21
|
+
* The interval for the dashboard
|
|
22
|
+
*/
|
|
24
23
|
readonly interval?: Duration;
|
|
24
|
+
/**
|
|
25
|
+
* The AZ mapper to convert AZ name/letter to AZ ID
|
|
26
|
+
*/
|
|
25
27
|
readonly azMapper: AvailabilityZoneMapper;
|
|
28
|
+
/**
|
|
29
|
+
* The ALBs being used for the service
|
|
30
|
+
*/
|
|
31
|
+
readonly albs?: ApplicationLoadBalancerDetectionProps;
|
|
32
|
+
/**
|
|
33
|
+
* The NAT Gateways being used for the service, a list of gateways per Availability zone
|
|
34
|
+
*/
|
|
35
|
+
readonly natgws?: NatGatewayDetectionProps;
|
|
36
|
+
/**
|
|
37
|
+
* The period for metric measurement
|
|
38
|
+
*/
|
|
39
|
+
readonly period: Duration;
|
|
26
40
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzaWNTZXJ2aWNlRGFzaGJvYXJkUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFzaWNfb2JzZXJ2YWJpbGl0eS9wcm9wcy9CYXNpY1NlcnZpY2VEYXNoYm9hcmRQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJQWxhcm0gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlab25lTWFwcGVyIH0gZnJvbSAnLi4vLi4vYXptYXBwZXIvQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckRldGVjdGlvblByb3BzIH0gZnJvbSAnLi9BcHBsaWNhdGlvbkxvYWRCYWxhbmNlckRldGVjdGlvblByb3BzJztcbmltcG9ydCB7IE5hdEdhdGV3YXlEZXRlY3Rpb25Qcm9wcyB9IGZyb20gJy4vTmF0R2F0ZXdheURldGVjdGlvblByb3BzJztcblxuLyoqXG4gKiBUaGUgcHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBkYXNoYm9hcmQgd2l0aCBiYXNpYyBtZXRyaWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzaWNTZXJ2aWNlRGFzaGJvYXJkUHJvcHMge1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSdzIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhbGFybXMgaW5kaWNhdGluZyBhIHNpbmdsZSBBWiBpbXBhY3QsIG9uZSBwZXIgQVpcbiAgICovXG4gIHJlYWRvbmx5IHpvbmFsQWdncmVnYXRlSXNvbGF0ZWRJbXBhY3RBbGFybXM6IHsgW2tleTogc3RyaW5nXTogSUFsYXJtIH07XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcnZhbCBmb3IgdGhlIGRhc2hib2FyZFxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJ2YWw/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIEFaIG1hcHBlciB0byBjb252ZXJ0IEFaIG5hbWUvbGV0dGVyIHRvIEFaIElEXG4gICAqL1xuICByZWFkb25seSBhek1hcHBlcjogQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcjtcblxuICAvKipcbiAgICogVGhlIEFMQnMgYmVpbmcgdXNlZCBmb3IgdGhlIHNlcnZpY2VcbiAgICovXG4gIHJlYWRvbmx5IGFsYnM/OiBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckRldGVjdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBUaGUgTkFUIEdhdGV3YXlzIGJlaW5nIHVzZWQgZm9yIHRoZSBzZXJ2aWNlLCBhIGxpc3Qgb2YgZ2F0ZXdheXMgcGVyIEF2YWlsYWJpbGl0eSB6b25lXG4gICAqL1xuICByZWFkb25seSBuYXRnd3M/OiBOYXRHYXRld2F5RGV0ZWN0aW9uUHJvcHM7XG5cbiAgLyoqXG4gICAqIFRoZSBwZXJpb2QgZm9yIG1ldHJpYyBtZWFzdXJlbWVudFxuICAgKi9cbiAgcmVhZG9ubHkgcGVyaW9kOiBEdXJhdGlvbjtcbn1cbiJdfQ==
|
|
@@ -1,57 +1,28 @@
|
|
|
1
1
|
import { Duration } from 'aws-cdk-lib';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { ApplicationLoadBalancerLatencyOutlierCalculation } from './ApplicationLoadBalancerLatencyOutlierCalculation';
|
|
2
|
+
import { ApplicationLoadBalancerDetectionProps } from './ApplicationLoadBalancerDetectionProps';
|
|
3
|
+
import { NatGatewayDetectionProps } from './NatGatewayDetectionProps';
|
|
5
4
|
/**
|
|
6
5
|
* Properties for creating basic multi-AZ observability
|
|
7
6
|
*/
|
|
8
7
|
export interface BasicServiceMultiAZObservabilityProps {
|
|
9
8
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* are provided for a single AZ, those alarms will be aggregated into
|
|
13
|
-
* a composite alarm for the AZ. You must either specify an ALB or a NAT GW.
|
|
9
|
+
* Properties for NAT Gateways to detect single AZ impact. You must specify
|
|
10
|
+
* this and/or applicationLoadBalancerProps.
|
|
14
11
|
*
|
|
15
|
-
* @default "No
|
|
12
|
+
* @default "No NAT Gateways will be used to calculate impact."
|
|
16
13
|
*/
|
|
17
|
-
readonly
|
|
18
|
-
[key: string]: CfnNatGateway[];
|
|
19
|
-
};
|
|
14
|
+
readonly natGatewayProps?: NatGatewayDetectionProps;
|
|
20
15
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* of all ALBs. You must either specify an ALB or a NAT GW.
|
|
16
|
+
* Properties for ALBs to detect single AZ impact. You must specify this
|
|
17
|
+
* and/or natGatewayProps.
|
|
24
18
|
*
|
|
25
|
-
* @default "No
|
|
19
|
+
* @default "No ALBs will be used to calculate impact."
|
|
26
20
|
*/
|
|
27
|
-
readonly
|
|
21
|
+
readonly applicationLoadBalancerProps?: ApplicationLoadBalancerDetectionProps;
|
|
28
22
|
/**
|
|
29
23
|
* The service's name
|
|
30
24
|
*/
|
|
31
25
|
readonly serviceName: string;
|
|
32
|
-
/**
|
|
33
|
-
* The amount of packet loss in a NAT GW to determine if an AZ
|
|
34
|
-
* is actually impacted, recommendation is 0.01%
|
|
35
|
-
*
|
|
36
|
-
* @default "0.01 (as in 0.01%)"
|
|
37
|
-
*/
|
|
38
|
-
readonly packetLossImpactPercentageThreshold?: number;
|
|
39
|
-
/**
|
|
40
|
-
* The percentage of faults for a single ALB to consider an AZ
|
|
41
|
-
* to be unhealthy, this should align with your availability goal. For example
|
|
42
|
-
* 1% or 5%, specify as 1 or 5.
|
|
43
|
-
*/
|
|
44
|
-
readonly faultCountPercentageThreshold: number;
|
|
45
|
-
/**
|
|
46
|
-
* The threshold in seconds for ALB targets whose responses are slower than this
|
|
47
|
-
* value at the specified percentile statistic.
|
|
48
|
-
*/
|
|
49
|
-
readonly latencyThreshold: number;
|
|
50
|
-
/**
|
|
51
|
-
* The statistic used to measure target response latency, like p99,
|
|
52
|
-
* which can be specified using Stats.percentile(99) or "p99".
|
|
53
|
-
*/
|
|
54
|
-
readonly latencyStatistic: string;
|
|
55
26
|
/**
|
|
56
27
|
* The period to evaluate metrics
|
|
57
28
|
*
|
|
@@ -107,9 +78,4 @@ export interface BasicServiceMultiAZObservabilityProps {
|
|
|
107
78
|
* The number of datapoints to alarm on for latency and availability alarms
|
|
108
79
|
*/
|
|
109
80
|
readonly datapointsToAlarm: number;
|
|
110
|
-
/**
|
|
111
|
-
* The method used to determine if an AZ is an outlier for latency for Application Load Balancer metrics.
|
|
112
|
-
* @default Z_SCORE
|
|
113
|
-
*/
|
|
114
|
-
readonly latencyOutlierCalculation?: ApplicationLoadBalancerLatencyOutlierCalculation;
|
|
115
81
|
}
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzaWNTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHlQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXNpY19vYnNlcnZhYmlsaXR5L3Byb3BzL0Jhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJEZXRlY3Rpb25Qcm9wcyB9IGZyb20gJy4vQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJEZXRlY3Rpb25Qcm9wcyc7XG5pbXBvcnQgeyBOYXRHYXRld2F5RGV0ZWN0aW9uUHJvcHMgfSBmcm9tICcuL05hdEdhdGV3YXlEZXRlY3Rpb25Qcm9wcyc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYmFzaWMgbXVsdGktQVogb2JzZXJ2YWJpbGl0eVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMge1xuICAvKipcbiAgICogUHJvcGVydGllcyBmb3IgTkFUIEdhdGV3YXlzIHRvIGRldGVjdCBzaW5nbGUgQVogaW1wYWN0LiBZb3UgbXVzdCBzcGVjaWZ5XG4gICAqIHRoaXMgYW5kL29yIGFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyUHJvcHMuXG4gICAqIFxuICAgKiBAZGVmYXVsdCBcIk5vIE5BVCBHYXRld2F5cyB3aWxsIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGltcGFjdC5cIlxuICAgKi9cbiAgcmVhZG9ubHkgbmF0R2F0ZXdheVByb3BzPzogTmF0R2F0ZXdheURldGVjdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBQcm9wZXJ0aWVzIGZvciBBTEJzIHRvIGRldGVjdCBzaW5nbGUgQVogaW1wYWN0LiBZb3UgbXVzdCBzcGVjaWZ5IHRoaXNcbiAgICogYW5kL29yIG5hdEdhdGV3YXlQcm9wcy5cbiAgICogXG4gICAqIEBkZWZhdWx0IFwiTm8gQUxCcyB3aWxsIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGltcGFjdC5cIlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwbGljYXRpb25Mb2FkQmFsYW5jZXJQcm9wcz86IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyRGV0ZWN0aW9uUHJvcHM7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2aWNlJ3MgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBlcmlvZCB0byBldmFsdWF0ZSBtZXRyaWNzXG4gICAqIFxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5taW51dGVzKDEpXG4gICAqL1xuICByZWFkb25seSBwZXJpb2Q/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBjcmVhdGUgYSBkYXNoYm9hcmQgZGlzcGxheWluZyB0aGUgbWV0cmljcyBhbmQgYWxhcm1zXG4gICAqIFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlRGFzaGJvYXJkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGFzaGJvYXJkIGludGVydmFsXG4gICAqXG4gICAqIEBkZWZhdWx0IER1cmF0aW9uLmhvdXJzKDEpXG4gICAqL1xuICByZWFkb25seSBpbnRlcnZhbD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBJZiB5b3UgYXJlIG5vdCB1c2luZyBhIHN0YXRpYyBidWNrZXQgdG8gZGVwbG95IGFzc2V0cywgZm9yIGV4YW1wbGVcbiAgICogeW91IGFyZSBzeW50aGluZyB0aGlzIGFuZCBpdCBnZXRzIHVwbG9hZGVkIHRvIGEgYnVja2V0IHdob3NlIG5hbWVcbiAgICogaXMgdW5rbm93biB0byB5b3UgKG1heWJlIHVzZWQgYXMgcGFydCBvZiBhIGNlbnRyYWwgQ0kvQ0Qgc3lzdGVtKVxuICAgKiBhbmQgaXMgcHJvdmlkZWQgYXMgYSBwYXJhbWV0ZXIgdG8geW91ciBzdGFjaywgc3BlY2lmeSB0aGF0IHBhcmFtZXRlclxuICAgKiBuYW1lIGhlcmUuIEl0IHdpbGwgb3ZlcnJpZGUgdGhlIGJ1Y2tldCBsb2NhdGlvbiBDREsgcHJvdmlkZXMgYnlcbiAgICogZGVmYXVsdCBmb3IgYnVuZGxlZCBhc3NldHMuIFRoZSBzdGFjayBjb250YWluaW5nIHRoaXMgY29udHJ1Y3QgbmVlZHNcbiAgICogdG8gaGF2ZSBhIHBhcmFtZXRlciBkZWZpbmVkIHRoYXQgdXNlcyB0aGlzIG5hbWUuIFRoZSB1bmRlcmx5aW5nXG4gICAqIHN0YWNrcyBpbiB0aGlzIGNvbnN0cnVjdCB0aGF0IGRlcGxveSBhc3NldHMgd2lsbCBjb3B5IHRoZSBwYXJlbnQgc3RhY2snc1xuICAgKiB2YWx1ZSBmb3IgdGhpcyBwcm9wZXJ0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJUaGUgYXNzZXRzIHdpbGwgYmUgdXBsb2FkZWQgdG8gdGhlIGRlZmF1bHQgZGVmaW5lZCBhc3NldCBsb2NhdGlvbi5cIlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRzQnVja2V0UGFyYW1ldGVyTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgeW91IGFyZSBub3QgdXNpbmcgYSBzdGF0aWMgYnVja2V0IHRvIGRlcGxveSBhc3NldHMsIGZvciBleGFtcGxlXG4gICAqIHlvdSBhcmUgc3ludGhpbmcgdGhpcyBhbmQgaXQgZ2V0cyB1cGxvYWRlZCB0byBhIGJ1Y2tldCB0aGF0IHVzZXMgYSBwcmVmaXhcbiAgICogdGhhdCBpcyB1bmtub3duIHRvIHlvdSAobWF5YmUgdXNlZCBhcyBwYXJ0IG9mIGEgY2VudHJhbCBDSS9DRCBzeXN0ZW0pXG4gICAqIGFuZCBpcyBwcm92aWRlZCBhcyBhIHBhcmFtZXRlciB0byB5b3VyIHN0YWNrLCBzcGVjaWZ5IHRoYXQgcGFyYW1ldGVyXG4gICAqIG5hbWUgaGVyZS4gSXQgd2lsbCBvdmVycmlkZSB0aGUgYnVja2V0IHByZWZpeCBDREsgcHJvdmlkZXMgYnlcbiAgICogZGVmYXVsdCBmb3IgYnVuZGxlZCBhc3NldHMuIFRoaXMgcHJvcGVydHkgb25seSB0YWtlcyBlZmZlY3QgaWYgeW91XG4gICAqIGRlZmluZWQgdGhlIGFzc2V0c0J1Y2tldFBhcmFtZXRlck5hbWUuIFRoZSBzdGFjayBjb250YWluaW5nIHRoaXMgY29udHJ1Y3QgbmVlZHNcbiAgICogdG8gaGF2ZSBhIHBhcmFtZXRlciBkZWZpbmVkIHRoYXQgdXNlcyB0aGlzIG5hbWUuIFRoZSB1bmRlcmx5aW5nXG4gICAqIHN0YWNrcyBpbiB0aGlzIGNvbnN0cnVjdCB0aGF0IGRlcGxveSBhc3NldHMgd2lsbCBjb3B5IHRoZSBwYXJlbnQgc3RhY2snc1xuICAgKiB2YWx1ZSBmb3IgdGhpcyBwcm9wZXJ0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJObyBvYmplY3QgcHJlZml4IHdpbGwgYmUgYWRkZWQgdG8geW91ciBjdXN0b20gYXNzZXRzIGxvY2F0aW9uLiBIb3dldmVyLCBpZiB5b3UgaGF2ZSBvdmVycmlkZGVuIHNvbWV0aGluZyBsaWtlIHRoZSAnQnVja2V0UHJlZml4JyBwcm9wZXJ0eSBpbiB5b3VyIHN0YWNrIHN5bnRoZXNpemVyIHdpdGggYSB2YXJpYWJsZSBsaWtlICcke0Fzc2V0c0J1Y2tldFByZWZpeH0nLCB5b3Ugd2lsbCBuZWVkIHRvIGRlZmluZSB0aGlzIHByb3BlcnR5IHNvIGl0IGRvZXNuJ3QgY2F1c2UgYSByZWZlcmVuY2UgZXJyb3IgZXZlbiBpZiB0aGUgcHJlZml4IHZhbHVlIGlzIGJsYW5rLlwiXG4gICAqL1xuICByZWFkb25seSBhc3NldHNCdWNrZXRQcmVmaXhQYXJhbWV0ZXJOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGV2YWx1YXRpb24gcGVyaW9kcyBmb3IgbGF0ZW5jeSBhbmQgYXZhaWxhYmlsdGl5IGFsYXJtc1xuICAgKi9cbiAgcmVhZG9ubHkgZXZhbHVhdGlvblBlcmlvZHM6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkYXRhcG9pbnRzIHRvIGFsYXJtIG9uIGZvciBsYXRlbmN5IGFuZCBhdmFpbGFiaWxpdHkgYWxhcm1zXG4gICAqL1xuICByZWFkb25seSBkYXRhcG9pbnRzVG9BbGFybTogbnVtYmVyO1xufVxuIl19
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { CfnNatGateway } from "aws-cdk-lib/aws-ec2";
|
|
2
|
+
import { PacketLossOutlierAlgorithm } from "../../outlier-detection/PacketLossOutlierAlgorithm";
|
|
3
|
+
/**
|
|
4
|
+
* The properties for performing zonal impact detection with NAT Gateway(s).
|
|
5
|
+
*/
|
|
6
|
+
export interface NatGatewayDetectionProps {
|
|
7
|
+
/**
|
|
8
|
+
* A list of NAT Gateways per Availability Zone (using the AZ name as the key)
|
|
9
|
+
*/
|
|
10
|
+
readonly natGateways: {
|
|
11
|
+
[key: string]: CfnNatGateway[];
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* The percentage of packet loss at which you consider there to be impact.
|
|
15
|
+
*
|
|
16
|
+
* @default 0.01 (as in 0.01%)
|
|
17
|
+
*/
|
|
18
|
+
readonly packetLossPercentThreshold?: number;
|
|
19
|
+
/**
|
|
20
|
+
* The algorithm to use to calculate an AZ as an outlier for packet loss.
|
|
21
|
+
*
|
|
22
|
+
* @default PacketLossOutlierAlgorithm.STATIC
|
|
23
|
+
*/
|
|
24
|
+
readonly packetLossOutlierAlgorithm?: PacketLossOutlierAlgorithm;
|
|
25
|
+
/**
|
|
26
|
+
* The threshold used with the outlier calculation.
|
|
27
|
+
*
|
|
28
|
+
* @default "This depends on the outlier algorithm. STATIC: 66. Z-SCORE: 3."
|
|
29
|
+
*/
|
|
30
|
+
readonly packetLossOutlierThreshold?: number;
|
|
31
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmF0R2F0ZXdheURldGVjdGlvblByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jhc2ljX29ic2VydmFiaWxpdHkvcHJvcHMvTmF0R2F0ZXdheURldGVjdGlvblByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5OYXRHYXRld2F5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IFBhY2tldExvc3NPdXRsaWVyQWxnb3JpdGhtIH0gZnJvbSBcIi4uLy4uL291dGxpZXItZGV0ZWN0aW9uL1BhY2tldExvc3NPdXRsaWVyQWxnb3JpdGhtXCI7XG5cbi8qKlxuICogVGhlIHByb3BlcnRpZXMgZm9yIHBlcmZvcm1pbmcgem9uYWwgaW1wYWN0IGRldGVjdGlvbiB3aXRoIE5BVCBHYXRld2F5KHMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdEdhdGV3YXlEZXRlY3Rpb25Qcm9wcyB7XG5cbiAgICAvKipcbiAgICAgKiBBIGxpc3Qgb2YgTkFUIEdhdGV3YXlzIHBlciBBdmFpbGFiaWxpdHkgWm9uZSAodXNpbmcgdGhlIEFaIG5hbWUgYXMgdGhlIGtleSlcbiAgICAgKi9cbiAgICByZWFkb25seSBuYXRHYXRld2F5czoge1trZXk6IHN0cmluZ106IENmbk5hdEdhdGV3YXlbXX07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcGVyY2VudGFnZSBvZiBwYWNrZXQgbG9zcyBhdCB3aGljaCB5b3UgY29uc2lkZXIgdGhlcmUgdG8gYmUgaW1wYWN0LlxuICAgICAqIFxuICAgICAqIEBkZWZhdWx0IDAuMDEgKGFzIGluIDAuMDElKVxuICAgICAqL1xuICAgIHJlYWRvbmx5IHBhY2tldExvc3NQZXJjZW50VGhyZXNob2xkPzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGFsZ29yaXRobSB0byB1c2UgdG8gY2FsY3VsYXRlIGFuIEFaIGFzIGFuIG91dGxpZXIgZm9yIHBhY2tldCBsb3NzLlxuICAgICAqIFxuICAgICAqIEBkZWZhdWx0IFBhY2tldExvc3NPdXRsaWVyQWxnb3JpdGhtLlNUQVRJQ1xuICAgICAqL1xuICAgIHJlYWRvbmx5IHBhY2tldExvc3NPdXRsaWVyQWxnb3JpdGhtPzogUGFja2V0TG9zc091dGxpZXJBbGdvcml0aG07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdGhyZXNob2xkIHVzZWQgd2l0aCB0aGUgb3V0bGllciBjYWxjdWxhdGlvbi5cbiAgICAgKiBcbiAgICAgKiBAZGVmYXVsdCBcIlRoaXMgZGVwZW5kcyBvbiB0aGUgb3V0bGllciBhbGdvcml0aG0uIFNUQVRJQzogNjYuIFotU0NPUkU6IDMuXCJcbiAgICAgKi9cbiAgICByZWFkb25seSBwYWNrZXRMb3NzT3V0bGllclRocmVzaG9sZD86IG51bWJlcjtcbn0iXX0=
|
|
@@ -10,6 +10,7 @@ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
|
10
10
|
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
11
11
|
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
12
12
|
const constructs_1 = require("constructs");
|
|
13
|
+
const MetricsHelper_1 = require("../utilities/MetricsHelper");
|
|
13
14
|
class CanaryFunction extends constructs_1.Construct {
|
|
14
15
|
constructor(scope, id, props) {
|
|
15
16
|
super(scope, id);
|
|
@@ -51,8 +52,8 @@ class CanaryFunction extends constructs_1.Construct {
|
|
|
51
52
|
/*
|
|
52
53
|
let code: AssetCode = Code.fromAsset(path.join(__dirname, "src/"), {
|
|
53
54
|
bundling: {
|
|
54
|
-
//image: new Runtime('python3.
|
|
55
|
-
image:
|
|
55
|
+
//image: new Runtime('python3.13:latest-arm64', RuntimeFamily.PYTHON).bundlingImage,
|
|
56
|
+
image: MetricsHelper.PythonRuntime.bundlingImage,
|
|
56
57
|
command: [
|
|
57
58
|
'bash', '-c',
|
|
58
59
|
'pip install --no-cache -r requirements.txt -t /asset-output && cp --archive --update . /asset-output',
|
|
@@ -64,7 +65,7 @@ class CanaryFunction extends constructs_1.Construct {
|
|
|
64
65
|
let monitoringLayer = new aws_lambda_1.LayerVersion(this, 'MonitoringLayer', {
|
|
65
66
|
code: aws_lambda_1.Code.fromAsset(path.join(__dirname, '../monitoring/src/monitoring-layer.zip')),
|
|
66
67
|
compatibleArchitectures: [aws_lambda_1.Architecture.ARM_64],
|
|
67
|
-
compatibleRuntimes: [
|
|
68
|
+
compatibleRuntimes: [MetricsHelper_1.MetricsHelper.PythonRuntime],
|
|
68
69
|
});
|
|
69
70
|
if (props.vpc !== undefined && props.vpc != null) {
|
|
70
71
|
let sg = new aws_ec2_1.SecurityGroup(this, 'canarySecurityGroup', {
|
|
@@ -73,7 +74,7 @@ class CanaryFunction extends constructs_1.Construct {
|
|
|
73
74
|
allowAllOutbound: true,
|
|
74
75
|
});
|
|
75
76
|
this.function = new aws_lambda_1.Function(this, 'canary', {
|
|
76
|
-
runtime:
|
|
77
|
+
runtime: MetricsHelper_1.MetricsHelper.PythonRuntime,
|
|
77
78
|
code: aws_lambda_1.Code.fromAsset(path.join(__dirname, 'src/canary.zip')),
|
|
78
79
|
handler: 'index.handler',
|
|
79
80
|
role: executionRole,
|
|
@@ -83,10 +84,10 @@ class CanaryFunction extends constructs_1.Construct {
|
|
|
83
84
|
memorySize: 512,
|
|
84
85
|
layers: [monitoringLayer],
|
|
85
86
|
environment: {
|
|
86
|
-
REGION: aws_cdk_lib_1.
|
|
87
|
-
PARTITION: aws_cdk_lib_1.
|
|
87
|
+
REGION: aws_cdk_lib_1.Aws.REGION,
|
|
88
|
+
PARTITION: aws_cdk_lib_1.Aws.PARTITION,
|
|
88
89
|
TIMEOUT: props.httpTimeout !== undefined
|
|
89
|
-
? props.httpTimeout.toSeconds().toString()
|
|
90
|
+
? props.httpTimeout.toSeconds({ integral: false }).toString()
|
|
90
91
|
: '2',
|
|
91
92
|
IGNORE_SSL_ERRORS: (props.ignoreTlsErrors !== undefined && props.ignoreTlsErrors == true)
|
|
92
93
|
.toString()
|
|
@@ -99,7 +100,7 @@ class CanaryFunction extends constructs_1.Construct {
|
|
|
99
100
|
}
|
|
100
101
|
else {
|
|
101
102
|
this.function = new aws_lambda_1.Function(this, 'canary', {
|
|
102
|
-
runtime:
|
|
103
|
+
runtime: MetricsHelper_1.MetricsHelper.PythonRuntime,
|
|
103
104
|
code: aws_lambda_1.Code.fromAsset(path.join(__dirname, 'src/canary.zip')),
|
|
104
105
|
handler: 'index.handler',
|
|
105
106
|
role: executionRole,
|
|
@@ -109,10 +110,10 @@ class CanaryFunction extends constructs_1.Construct {
|
|
|
109
110
|
memorySize: 512,
|
|
110
111
|
layers: [monitoringLayer],
|
|
111
112
|
environment: {
|
|
112
|
-
REGION: aws_cdk_lib_1.
|
|
113
|
-
PARTITION: aws_cdk_lib_1.
|
|
113
|
+
REGION: aws_cdk_lib_1.Aws.REGION,
|
|
114
|
+
PARTITION: aws_cdk_lib_1.Aws.PARTITION,
|
|
114
115
|
TIMEOUT: props.httpTimeout !== undefined
|
|
115
|
-
? props.httpTimeout.toSeconds().toString()
|
|
116
|
+
? props.httpTimeout.toSeconds({ integral: false }).toString()
|
|
116
117
|
: '2',
|
|
117
118
|
IGNORE_SSL_ERRORS: (props.ignoreTlsErrors !== undefined && props.ignoreTlsErrors == true)
|
|
118
119
|
.toString()
|
|
@@ -123,7 +124,7 @@ class CanaryFunction extends constructs_1.Construct {
|
|
|
123
124
|
this.function.addPermission('invokePermission', {
|
|
124
125
|
action: 'lambda:InvokeFunction',
|
|
125
126
|
principal: new aws_iam_1.ServicePrincipal('events.amazonaws.com'),
|
|
126
|
-
sourceArn: aws_cdk_lib_1.
|
|
127
|
+
sourceArn: `arn:${aws_cdk_lib_1.Aws.PARTITION}:events:${aws_cdk_lib_1.Aws.REGION}:${aws_cdk_lib_1.Aws.ACCOUNT_ID}:rule/*`
|
|
127
128
|
});
|
|
128
129
|
this.logGroup = new aws_logs_1.LogGroup(this, 'logGroup', {
|
|
129
130
|
logGroupName: `/aws/lambda/${this.function.functionName}`,
|
|
@@ -149,4 +150,4 @@ class CanaryFunction extends constructs_1.Construct {
|
|
|
149
150
|
}
|
|
150
151
|
}
|
|
151
152
|
exports.CanaryFunction = CanaryFunction;
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYXJ5RnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2FuYXJpZXMvQ2FuYXJ5RnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0Qyw2QkFBNkI7QUFDN0IsNkNBQTBEO0FBQzFELGlEQUFvRTtBQUNwRSxpREFRNkI7QUFDN0IsdURBU2dDO0FBQ2hDLG1EQUEwRTtBQUMxRSwyQ0FBdUM7QUFJdkMsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFXM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksaUJBQWlCLEdBQW1CLElBQUksdUJBQWEsQ0FDdkQsSUFBSSxFQUNKLG1CQUFtQixFQUNuQjtZQUNFLElBQUksRUFBRSxVQUFVO1lBQ2hCLFVBQVUsRUFBRTtnQkFDVixJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLG9DQUFvQztxQkFDckM7b0JBQ0QsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztvQkFDcEIsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2lCQUNqQixDQUFDO2FBQ0g7U0FDRixDQUNGLENBQUM7UUFDRixJQUFJLGdCQUFnQixHQUFHLElBQUksdUJBQWEsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDakUsSUFBSSxFQUFFLFVBQVU7WUFDaEIsVUFBVSxFQUFFO2dCQUNWLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFO3dCQUNQLDRCQUE0Qjt3QkFDNUIsK0JBQStCO3dCQUMvQiw0QkFBNEI7cUJBQzdCO29CQUNELE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7b0JBQ3BCLFNBQVMsRUFBRSxD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QkFBYSxDQUFDLFFBQVE7WUFDakMsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztTQUNyQyxDQUFDLENBQUM7UUFFSCxJQUFJLHVCQUFhLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3pDLElBQUksRUFBRSxVQUFVO1lBQ2hCLFVBQVUsRUFBRTtnQkFDVixJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUNyQyxNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO29CQUNwQixTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7aUJBQ2pCLENBQUM7Z0JBQ0YsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsQ0FBQztvQkFDdEQsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztvQkFDcEIsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7aUJBQ3ZDLENBQUM7YUFDSDtZQUNELEtBQUssRUFBRSxDQUFDLGFBQWEsQ0FBQztTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUE1S0Qsd0NBNEtDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IER1cmF0aW9uLCBGbiwgUmVtb3ZhbFBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElTZWN1cml0eUdyb3VwLCBTZWN1cml0eUdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQge1xuICBFZmZlY3QsXG4gIElNYW5hZ2VkUG9saWN5LFxuICBJUm9sZSxcbiAgTWFuYWdlZFBvbGljeSxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBSb2xlLFxuICBTZXJ2aWNlUHJpbmNpcGFsLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7XG4gIEFyY2hpdGVjdHVyZSxcbiAgQ29kZSxcbiAgRnVuY3Rpb24sXG4gIElGdW5jdGlvbixcbiAgSUxheWVyVmVyc2lvbixcbiAgTGF5ZXJWZXJzaW9uLFxuICBSdW50aW1lLFxuICBUcmFjaW5nLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IElMb2dHcm91cCwgTG9nR3JvdXAsIFJldGVudGlvbkRheXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElDYW5hcnlGdW5jdGlvbiB9IGZyb20gJy4vSUNhbmFyeUZ1bmN0aW9uJztcbmltcG9ydCB7IENhbmFyeUZ1bmN0aW9uUHJvcHMgfSBmcm9tICcuL3Byb3BzL0NhbmFyeUZ1bmN0aW9uUHJvcHMnO1xuXG5leHBvcnQgY2xhc3MgQ2FuYXJ5RnVuY3Rpb24gZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ2FuYXJ5RnVuY3Rpb24ge1xuICAvKipcbiAgICogVGhlIGNhbmFyeSBmdW5jdGlvblxuICAgKi9cbiAgZnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxvZyBncm91cCB3aGVyZSB0aGUgY2FuYXJ0eSBsb2dzIHdpbGwgYmUgc2VudFxuICAgKi9cbiAgbG9nR3JvdXA6IElMb2dHcm91cDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2FuYXJ5RnVuY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBsZXQgeHJheU1hbmFnZWRQb2xpY3k6IElNYW5hZ2VkUG9saWN5ID0gbmV3IE1hbmFnZWRQb2xpY3koXG4gICAgICB0aGlzLFxuICAgICAgJ3hyYXlNYW5hZ2VkUG9saWN5JyxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJy9jYW5hcnkvJyxcbiAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAneHJheTpQdXRUcmFjZVNlZ21lbnRzJyxcbiAgICAgICAgICAgICAgJ3hyYXk6UHV0VGVsZW1ldHJ5UmVjb3JkcycsXG4gICAgICAgICAgICAgICd4cmF5OkdldFNhbXBsaW5nUnVsZXMnLFxuICAgICAgICAgICAgICAneHJheTpHZXRTYW1wbGluZ1RhcmdldHMnLFxuICAgICAgICAgICAgICAneHJheTpHZXRTYW1wbGluZ1N0YXRpc3RpY1N1bW1hcmllcycsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICApO1xuICAgIGxldCBlYzJNYW5hZ2VkUG9saWN5ID0gbmV3IE1hbmFnZWRQb2xpY3kodGhpcywgJ2VjMk1hbmFnZWRQb2xpY3knLCB7XG4gICAgICBwYXRoOiAnL2NhbmFyeS8nLFxuICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAnZWMyOkNyZWF0ZU5ldHdvcmtJbnRlcmZhY2UnLFxuICAgICAgICAgICAgJ2VjMjpEZXNjcmliZU5ldHdvcmtJbnRlcmZhY2VzJyxcbiAgICAgICAgICAgICdlYzI6RGVsZXRlTmV0d29ya0ludGVyZmFjZScsXG4gICAgICAgICAgXSxcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBsZXQgZXhlY3V0aW9uUm9sZTogSVJvbGUgPSBuZXcgUm9sZSh0aGlzLCAnZXhlY3V0aW9uUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJyksXG4gICAgICBwYXRoOiAnL2NhbmFyeS8nLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbeHJheU1hbmFnZWRQb2xpY3ksIGVjMk1hbmFnZWRQb2xpY3ldLFxuICAgIH0pO1xuXG4gICAgLypcbiAgICBsZXQgY29kZTogQXNzZXRDb2RlID0gQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgXCJzcmMvXCIpLCB7XG4gICAgICBidW5kbGluZzoge1xuICAgICAgICAvL2ltYWdlOiBuZXcgUnVudGltZSgncHl0aG9uMy4xMjpsYXRlc3QtYXJtNjQnLCBSdW50aW1lRmFtaWx5LlBZVEhPTikuYnVuZGxpbmdJbWFnZSxcbiAgICAgICAgaW1hZ2U6IFJ1bnRpbWUuUFlUSE9OXzNfMTIuYnVuZGxpbmdJbWFnZSxcbiAgICAgICAgY29tbWFuZDogW1xuICAgICAgICAgICdiYXNoJywgJy1jJyxcbiAgICAgICAgICAncGlwIGluc3RhbGwgLS1uby1jYWNoZSAtciByZXF1aXJlbWVudHMudHh0IC10IC9hc3NldC1vdXRwdXQgJiYgY3AgLS1hcmNoaXZlIC0tdXBkYXRlIC4gL2Fzc2V0LW91dHB1dCcsXG4gICAgICAgIF0sXG4gICAgICAgIHBsYXRmb3JtOiAnbGludXgvYXJtNjQnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICAqL1xuICAgIGxldCBtb25pdG9yaW5nTGF5ZXI6IElMYXllclZlcnNpb24gPSBuZXcgTGF5ZXJWZXJzaW9uKFxuICAgICAgdGhpcyxcbiAgICAgICdNb25pdG9yaW5nTGF5ZXInLFxuICAgICAge1xuICAgICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChcbiAgICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbW9uaXRvcmluZy9zcmMvbW9uaXRvcmluZy1sYXllci56aXAnKSxcbiAgICAgICAgKSxcbiAgICAgICAgY29tcGF0aWJsZUFyY2hpdGVjdHVyZXM6IFtBcmNoaXRlY3R1cmUuQVJNXzY0XSxcbiAgICAgICAgY29tcGF0aWJsZVJ1bnRpbWVzOiBbUnVudGltZS5QWVRIT05fM18xMl0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBpZiAocHJvcHMudnBjICE9PSB1bmRlZmluZWQgJiYgcHJvcHMudnBjICE9IG51bGwpIHtcbiAgICAgIGxldCBzZzogSVNlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cCh0aGlzLCAnY2FuYXJ5U2VjdXJpdHlHcm91cCcsIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdBbGxvdyBjYW5hcnkgdG8gY29tbXVuaWNhdGUgd2l0aCBsb2FkIGJhbGFuY2VyJyxcbiAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5mdW5jdGlvbiA9IG5ldyBGdW5jdGlvbih0aGlzLCAnY2FuYXJ5Jywge1xuICAgICAgICBydW50aW1lOiBSdW50aW1lLlBZVEhPTl8zXzEyLFxuICAgICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnc3JjL2NhbmFyeS56aXAnKSksXG4gICAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgICAgcm9sZTogZXhlY3V0aW9uUm9sZSxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygyNDApLFxuICAgICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICAgIGxheWVyczogW21vbml0b3JpbmdMYXllcl0sXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgUkVHSU9OOiBGbi5yZWYoJ0FXUzo6UmVnaW9uJyksXG4gICAgICAgICAgUEFSVElUSU9OOiBGbi5yZWYoJ0FXUzo6UGFydGl0aW9uJyksXG4gICAgICAgICAgVElNRU9VVDpcbiAgICAgICAgICAgIHByb3BzLmh0dHBUaW1lb3V0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyBwcm9wcy5odHRwVGltZW91dC50b1NlY29uZHMoKS50b1N0cmluZygpXG4gICAgICAgICAgICAgIDogJzInLFxuICAgICAgICAgIElHTk9SRV9TU0xfRVJST1JTOiAoXG4gICAgICAgICAgICBwcm9wcy5pZ25vcmVUbHNFcnJvcnMgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5pZ25vcmVUbHNFcnJvcnMgPT0gdHJ1ZVxuICAgICAgICAgIClcbiAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgfSxcbiAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgIHNlY3VyaXR5R3JvdXBzOiBbc2ddLFxuICAgICAgICB2cGNTdWJuZXRzOiBwcm9wcy5zdWJuZXRTZWxlY3Rpb24sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mdW5jdGlvbiA9IG5ldyBGdW5jdGlvbih0aGlzLCAnY2FuYXJ5Jywge1xuICAgICAgICBydW50aW1lOiBSdW50aW1lLlBZVEhPTl8zXzEyLFxuICAgICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnc3JjL2NhbmFyeS56aXAnKSksXG4gICAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgICAgcm9sZTogZXhlY3V0aW9uUm9sZSxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygyNDApLFxuICAgICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICAgIGxheWVyczogW21vbml0b3JpbmdMYXllcl0sXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgUkVHSU9OOiBGbi5yZWYoJ0FXUzo6UmVnaW9uJyksXG4gICAgICAgICAgUEFSVElUSU9OOiBGbi5yZWYoJ0FXUzo6UGFydGl0aW9uJyksXG4gICAgICAgICAgVElNRU9VVDpcbiAgICAgICAgICAgIHByb3BzLmh0dHBUaW1lb3V0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyBwcm9wcy5odHRwVGltZW91dC50b1NlY29uZHMoKS50b1N0cmluZygpXG4gICAgICAgICAgICAgIDogJzInLFxuICAgICAgICAgIElHTk9SRV9TU0xfRVJST1JTOiAoXG4gICAgICAgICAgICBwcm9wcy5pZ25vcmVUbHNFcnJvcnMgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5pZ25vcmVUbHNFcnJvcnMgPT0gdHJ1ZVxuICAgICAgICAgIClcbiAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZnVuY3Rpb24uYWRkUGVybWlzc2lvbignaW52b2tlUGVybWlzc2lvbicsIHtcbiAgICAgIGFjdGlvbjogJ2xhbWJkYTpJbnZva2VGdW5jdGlvbicsXG4gICAgICBwcmluY2lwYWw6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdldmVudHMuYW1hem9uYXdzLmNvbScpLFxuICAgICAgc291cmNlQXJuOiBGbi5zdWIoXG4gICAgICAgICdhcm46JHtBV1M6OlBhcnRpdGlvbn06ZXZlbnRzOiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9OnJ1bGUvKicsXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2dHcm91cCA9IG5ldyBMb2dHcm91cCh0aGlzLCAnbG9nR3JvdXAnLCB7XG4gICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke3RoaXMuZnVuY3Rpb24uZnVuY3Rpb25OYW1lfWAsXG4gICAgICByZXRlbnRpb246IFJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG5cbiAgICBuZXcgTWFuYWdlZFBvbGljeSh0aGlzLCAnY3dNYW5hZ2VkUG9saWN5Jywge1xuICAgICAgcGF0aDogJy9jYW5hcnkvJyxcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydjbG91ZHdhdGNoOlB1dE1ldHJpY0RhdGEnXSxcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydsb2dzOkNyZWF0ZUxvZ1N0cmVhbScsICdsb2dzOlB1dExvZ0V2ZW50cyddLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIHJlc291cmNlczogW3RoaXMubG9nR3JvdXAubG9nR3JvdXBBcm5dLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgICByb2xlczogW2V4ZWN1dGlvblJvbGVdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYXJ5RnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2FuYXJpZXMvQ2FuYXJ5RnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0Qyw2QkFBNkI7QUFDN0IsNkNBQTJEO0FBQzNELGlEQUFvRTtBQUNwRSxpREFRNkI7QUFDN0IsdURBUWdDO0FBQ2hDLG1EQUEwRTtBQUMxRSwyQ0FBdUM7QUFHdkMsOERBQTJEO0FBRTNELE1BQWEsY0FBZSxTQUFRLHNCQUFTO0lBVzNDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLGlCQUFpQixHQUFtQixJQUFJLHVCQUFhLENBQ3ZELElBQUksRUFDSixtQkFBbUIsRUFDbkI7WUFDRSxJQUFJLEVBQUUsVUFBVTtZQUNoQixVQUFVLEVBQUU7Z0JBQ1YsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUU7d0JBQ1AsdUJBQXVCO3dCQUN2QiwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6QixvQ0FBb0M7cUJBQ3JDO29CQUNELE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7b0JBQ3BCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDakIsQ0FBQzthQUNIO1NBQ0YsQ0FDRixDQUFDO1FBQ0YsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLHVCQUFhLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ2pFLElBQUksRUFBRSxVQUFVO1lBQ2hCLFVBQVUsRUFBRTtnQkFDVixJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRTt3QkFDUCw0QkFBNEI7d0JBQzVCLCtCQUErQjt3QkFDL0IsNEJBQTRCO3FCQUM3QjtvQkFDRCxNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO29CQUNw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SSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUU7WUFDekQsU0FBUyxFQUFFLHdCQUFhLENBQUMsUUFBUTtZQUNqQyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILElBQUksdUJBQWEsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDekMsSUFBSSxFQUFFLFVBQVU7WUFDaEIsVUFBVSxFQUFFO2dCQUNWLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQ3JDLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7b0JBQ3BCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDakIsQ0FBQztnQkFDRixJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLG1CQUFtQixDQUFDO29CQUN0RCxNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO29CQUNwQixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztpQkFDdkMsQ0FBQzthQUNIO1lBQ0QsS0FBSyxFQUFFLENBQUMsYUFBYSxDQUFDO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTFLRCx3Q0EwS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQXdzLCBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElTZWN1cml0eUdyb3VwLCBTZWN1cml0eUdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQge1xuICBFZmZlY3QsXG4gIElNYW5hZ2VkUG9saWN5LFxuICBJUm9sZSxcbiAgTWFuYWdlZFBvbGljeSxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBSb2xlLFxuICBTZXJ2aWNlUHJpbmNpcGFsLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7XG4gIEFyY2hpdGVjdHVyZSxcbiAgQ29kZSxcbiAgRnVuY3Rpb24sXG4gIElGdW5jdGlvbixcbiAgSUxheWVyVmVyc2lvbixcbiAgTGF5ZXJWZXJzaW9uLFxuICBUcmFjaW5nLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IElMb2dHcm91cCwgTG9nR3JvdXAsIFJldGVudGlvbkRheXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElDYW5hcnlGdW5jdGlvbiB9IGZyb20gJy4vSUNhbmFyeUZ1bmN0aW9uJztcbmltcG9ydCB7IENhbmFyeUZ1bmN0aW9uUHJvcHMgfSBmcm9tICcuL3Byb3BzL0NhbmFyeUZ1bmN0aW9uUHJvcHMnO1xuaW1wb3J0IHsgTWV0cmljc0hlbHBlciB9IGZyb20gJy4uL3V0aWxpdGllcy9NZXRyaWNzSGVscGVyJztcblxuZXhwb3J0IGNsYXNzIENhbmFyeUZ1bmN0aW9uIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNhbmFyeUZ1bmN0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBjYW5hcnkgZnVuY3Rpb25cbiAgICovXG4gIGZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgd2hlcmUgdGhlIGNhbmFydHkgbG9ncyB3aWxsIGJlIHNlbnRcbiAgICovXG4gIGxvZ0dyb3VwOiBJTG9nR3JvdXA7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENhbmFyeUZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbGV0IHhyYXlNYW5hZ2VkUG9saWN5OiBJTWFuYWdlZFBvbGljeSA9IG5ldyBNYW5hZ2VkUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgICd4cmF5TWFuYWdlZFBvbGljeScsXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICcvY2FuYXJ5LycsXG4gICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgJ3hyYXk6UHV0VHJhY2VTZWdtZW50cycsXG4gICAgICAgICAgICAgICd4cmF5OlB1dFRlbGVtZXRyeVJlY29yZHMnLFxuICAgICAgICAgICAgICAneHJheTpHZXRTYW1wbGluZ1J1bGVzJyxcbiAgICAgICAgICAgICAgJ3hyYXk6R2V0U2FtcGxpbmdUYXJnZXRzJyxcbiAgICAgICAgICAgICAgJ3hyYXk6R2V0U2FtcGxpbmdTdGF0aXN0aWNTdW1tYXJpZXMnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBsZXQgZWMyTWFuYWdlZFBvbGljeSA9IG5ldyBNYW5hZ2VkUG9saWN5KHRoaXMsICdlYzJNYW5hZ2VkUG9saWN5Jywge1xuICAgICAgcGF0aDogJy9jYW5hcnkvJyxcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ2VjMjpDcmVhdGVOZXR3b3JrSW50ZXJmYWNlJyxcbiAgICAgICAgICAgICdlYzI6RGVzY3JpYmVOZXR3b3JrSW50ZXJmYWNlcycsXG4gICAgICAgICAgICAnZWMyOkRlbGV0ZU5ldHdvcmtJbnRlcmZhY2UnLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgbGV0IGV4ZWN1dGlvblJvbGU6IElSb2xlID0gbmV3IFJvbGUodGhpcywgJ2V4ZWN1dGlvblJvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgcGF0aDogJy9jYW5hcnkvJyxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW3hyYXlNYW5hZ2VkUG9saWN5LCBlYzJNYW5hZ2VkUG9saWN5XSxcbiAgICB9KTtcblxuICAgIC8qXG4gICAgbGV0IGNvZGU6IEFzc2V0Q29kZSA9IENvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsIFwic3JjL1wiKSwge1xuICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgLy9pbWFnZTogbmV3IFJ1bnRpbWUoJ3B5dGhvbjMuMTM6bGF0ZXN0LWFybTY0JywgUnVudGltZUZhbWlseS5QWVRIT04pLmJ1bmRsaW5nSW1hZ2UsXG4gICAgICAgIGltYWdlOiBNZXRyaWNzSGVscGVyLlB5dGhvblJ1bnRpbWUuYnVuZGxpbmdJbWFnZSxcbiAgICAgICAgY29tbWFuZDogW1xuICAgICAgICAgICdiYXNoJywgJy1jJyxcbiAgICAgICAgICAncGlwIGluc3RhbGwgLS1uby1jYWNoZSAtciByZXF1aXJlbWVudHMudHh0IC10IC9hc3NldC1vdXRwdXQgJiYgY3AgLS1hcmNoaXZlIC0tdXBkYXRlIC4gL2Fzc2V0LW91dHB1dCcsXG4gICAgICAgIF0sXG4gICAgICAgIHBsYXRmb3JtOiAnbGludXgvYXJtNjQnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICAqL1xuICAgIGxldCBtb25pdG9yaW5nTGF5ZXI6IElMYXllclZlcnNpb24gPSBuZXcgTGF5ZXJWZXJzaW9uKFxuICAgICAgdGhpcyxcbiAgICAgICdNb25pdG9yaW5nTGF5ZXInLFxuICAgICAge1xuICAgICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChcbiAgICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbW9uaXRvcmluZy9zcmMvbW9uaXRvcmluZy1sYXllci56aXAnKSxcbiAgICAgICAgKSxcbiAgICAgICAgY29tcGF0aWJsZUFyY2hpdGVjdHVyZXM6IFtBcmNoaXRlY3R1cmUuQVJNXzY0XSxcbiAgICAgICAgY29tcGF0aWJsZVJ1bnRpbWVzOiBbTWV0cmljc0hlbHBlci5QeXRob25SdW50aW1lXSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChwcm9wcy52cGMgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy52cGMgIT0gbnVsbCkge1xuICAgICAgbGV0IHNnOiBJU2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKHRoaXMsICdjYW5hcnlTZWN1cml0eUdyb3VwJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0FsbG93IGNhbmFyeSB0byBjb21tdW5pY2F0ZSB3aXRoIGxvYWQgYmFsYW5jZXInLFxuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKHRoaXMsICdjYW5hcnknLCB7XG4gICAgICAgIHJ1bnRpbWU6IE1ldHJpY3NIZWxwZXIuUHl0aG9uUnVudGltZSxcbiAgICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ3NyYy9jYW5hcnkuemlwJykpLFxuICAgICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICAgIHJvbGU6IGV4ZWN1dGlvblJvbGUsXG4gICAgICAgIGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgICAgdHJhY2luZzogVHJhY2luZy5BQ1RJVkUsXG4gICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMjQwKSxcbiAgICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgICBsYXllcnM6IFttb25pdG9yaW5nTGF5ZXJdLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIFJFR0lPTjpBd3MuUkVHSU9OLFxuICAgICAgICAgIFBBUlRJVElPTjogQXdzLlBBUlRJVElPTixcbiAgICAgICAgICBUSU1FT1VUOlxuICAgICAgICAgICAgcHJvcHMuaHR0cFRpbWVvdXQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IHByb3BzLmh0dHBUaW1lb3V0LnRvU2Vjb25kcyh7aW50ZWdyYWw6IGZhbHNlfSkudG9TdHJpbmcoKVxuICAgICAgICAgICAgICA6ICcyJyxcbiAgICAgICAgICBJR05PUkVfU1NMX0VSUk9SUzogKFxuICAgICAgICAgICAgcHJvcHMuaWdub3JlVGxzRXJyb3JzICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuaWdub3JlVGxzRXJyb3JzID09IHRydWVcbiAgICAgICAgICApXG4gICAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIH0sXG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgICBzZWN1cml0eUdyb3VwczogW3NnXSxcbiAgICAgICAgdnBjU3VibmV0czogcHJvcHMuc3VibmV0U2VsZWN0aW9uLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24odGhpcywgJ2NhbmFyeScsIHtcbiAgICAgICAgcnVudGltZTogTWV0cmljc0hlbHBlci5QeXRob25SdW50aW1lLFxuICAgICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnc3JjL2NhbmFyeS56aXAnKSksXG4gICAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgICAgcm9sZTogZXhlY3V0aW9uUm9sZSxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygyNDApLFxuICAgICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICAgIGxheWVyczogW21vbml0b3JpbmdMYXllcl0sXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgUkVHSU9OOiBBd3MuUkVHSU9OLFxuICAgICAgICAgIFBBUlRJVElPTjogQXdzLlBBUlRJVElPTixcbiAgICAgICAgICBUSU1FT1VUOlxuICAgICAgICAgICAgcHJvcHMuaHR0cFRpbWVvdXQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IHByb3BzLmh0dHBUaW1lb3V0LnRvU2Vjb25kcyh7aW50ZWdyYWw6IGZhbHNlfSkudG9TdHJpbmcoKVxuICAgICAgICAgICAgICA6ICcyJyxcbiAgICAgICAgICBJR05PUkVfU1NMX0VSUk9SUzogKFxuICAgICAgICAgICAgcHJvcHMuaWdub3JlVGxzRXJyb3JzICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuaWdub3JlVGxzRXJyb3JzID09IHRydWVcbiAgICAgICAgICApXG4gICAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmZ1bmN0aW9uLmFkZFBlcm1pc3Npb24oJ2ludm9rZVBlcm1pc3Npb24nLCB7XG4gICAgICBhY3Rpb246ICdsYW1iZGE6SW52b2tlRnVuY3Rpb24nLFxuICAgICAgcHJpbmNpcGFsOiBuZXcgU2VydmljZVByaW5jaXBhbCgnZXZlbnRzLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIHNvdXJjZUFybjogYGFybjoke0F3cy5QQVJUSVRJT059OmV2ZW50czoke0F3cy5SRUdJT059OiR7QXdzLkFDQ09VTlRfSUR9OnJ1bGUvKmBcbiAgICB9KTtcblxuICAgIHRoaXMubG9nR3JvdXAgPSBuZXcgTG9nR3JvdXAodGhpcywgJ2xvZ0dyb3VwJywge1xuICAgICAgbG9nR3JvdXBOYW1lOiBgL2F3cy9sYW1iZGEvJHt0aGlzLmZ1bmN0aW9uLmZ1bmN0aW9uTmFtZX1gLFxuICAgICAgcmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIH0pO1xuXG4gICAgbmV3IE1hbmFnZWRQb2xpY3kodGhpcywgJ2N3TWFuYWdlZFBvbGljeScsIHtcbiAgICAgIHBhdGg6ICcvY2FuYXJ5LycsXG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFsnY2xvdWR3YXRjaDpQdXRNZXRyaWNEYXRhJ10sXG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFsnbG9nczpDcmVhdGVMb2dTdHJlYW0nLCAnbG9nczpQdXRMb2dFdmVudHMnXSxcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICByZXNvdXJjZXM6IFt0aGlzLmxvZ0dyb3VwLmxvZ0dyb3VwQXJuXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgcm9sZXM6IFtleGVjdXRpb25Sb2xlXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CanaryTest = void 0;
|
|
4
4
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
5
5
|
// SPDX-License-Identifier: Apache-2.0
|
|
6
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
6
|
const aws_events_1 = require("aws-cdk-lib/aws-events");
|
|
8
7
|
const aws_events_targets_1 = require("aws-cdk-lib/aws-events-targets");
|
|
9
8
|
const constructs_1 = require("constructs");
|
|
9
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
10
10
|
class CanaryTest extends constructs_1.Construct {
|
|
11
11
|
constructor(scope, id, props) {
|
|
12
12
|
super(scope, id);
|
|
@@ -63,13 +63,13 @@ class CanaryTest extends constructs_1.Construct {
|
|
|
63
63
|
postData: props.postData === undefined ? '' : props.postData,
|
|
64
64
|
headers: props.headers === undefined ? {} : props.headers,
|
|
65
65
|
operation: props.operation.operationName,
|
|
66
|
-
faultBoundaryId: aws_cdk_lib_1.
|
|
66
|
+
faultBoundaryId: aws_cdk_lib_1.Aws.REGION,
|
|
67
67
|
faultBoundary: 'region',
|
|
68
68
|
metricNamespace: this.metricNamespace,
|
|
69
69
|
requestCount: props.regionalRequestCount,
|
|
70
70
|
},
|
|
71
71
|
};
|
|
72
|
-
this.timedEventRules[aws_cdk_lib_1.
|
|
72
|
+
this.timedEventRules[aws_cdk_lib_1.Aws.REGION] = new aws_events_1.Rule(this, 'RegionalTimedEvent', {
|
|
73
73
|
schedule: aws_events_1.Schedule.expression(props.schedule),
|
|
74
74
|
enabled: true,
|
|
75
75
|
targets: [
|
|
@@ -81,4 +81,4 @@ class CanaryTest extends constructs_1.Construct {
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
exports.CanaryTest = CanaryTest;
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYXJ5VGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jYW5hcmllcy9DYW5hcnlUZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFDdEMsdURBQWdGO0FBQ2hGLHVFQUFnRTtBQUNoRSwyQ0FBdUM7QUFFdkMsNkNBQWtDO0FBRWxDLE1BQWEsVUFBVyxTQUFRLHNCQUFTO0lBS3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUUxQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsbUJBQW1CO1lBQ3hELENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLCtCQUErQjtpQkFDbEUsZUFBZTtZQUNsQixDQUFDLENBQUMsZ0JBQWdCLENBQUM7UUFFckIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUNuRCxDQUFDLG9CQUFvQixFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzlCLElBQUksa0JBQWtCLEdBQ3BCLEtBQUssQ0FBQyxRQUFRLENBQUMsNENBQTRDLENBQ3pELG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQ2hFLENBQUM7WUFFSixJQUFJLE1BQU0sR0FBVyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25FLElBQUksR0FBRyxHQUNMLE1BQU07Z0JBQ04sS0FBSztnQkFDTCxvQkFBb0I7Z0JBQ3BCLEdBQUc7Z0JBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxtQkFBbUI7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LEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDN0MsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxtQ0FBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7b0JBQ2pDLEtBQUssRUFBRSw0QkFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7aUJBQ3hDLENBQUM7YUFDSDtTQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXJHRCxnQ0FxR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJUnVsZSwgUnVsZSwgUnVsZVRhcmdldElucHV0LCBTY2hlZHVsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBDYW5hcnlUZXN0UHJvcHMgfSBmcm9tICcuL3Byb3BzL0NhbmFyeVRlc3RQcm9wcyc7XG5pbXBvcnQgeyBBd3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmV4cG9ydCBjbGFzcyBDYW5hcnlUZXN0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgdGltZWRFdmVudFJ1bGVzOiB7IFtrZXk6IHN0cmluZ106IElSdWxlIH07XG5cbiAgbWV0cmljTmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENhbmFyeVRlc3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy50aW1lZEV2ZW50UnVsZXMgPSB7fTtcblxuICAgIHRoaXMubWV0cmljTmFtZXNwYWNlID0gcHJvcHMub3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHNcbiAgICAgID8gcHJvcHMub3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAubWV0cmljTmFtZXNwYWNlXG4gICAgICA6ICdjYW5hcnkvbWV0cmljcyc7XG5cbiAgICBwcm9wcy5vcGVyYXRpb24uc2VydmljZS5hdmFpbGFiaWxpdHlab25lTmFtZXMuZm9yRWFjaChcbiAgICAgIChhdmFpbGFiaWxpdHlab25lTmFtZSwgaW5kZXgpID0+IHtcbiAgICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nID1cbiAgICAgICAgICBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihcbiAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVOYW1lLnN1YnN0cmluZyhhdmFpbGFiaWxpdHlab25lTmFtZS5sZW5ndGggLSAxKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgIGxldCBzY2hlbWU6IHN0cmluZyA9IHByb3BzLm9wZXJhdGlvbi5zZXJ2aWNlLmJhc2VVcmwuc3BsaXQoJzonKVswXTtcbiAgICAgICAgbGV0IHVybDogc3RyaW5nID1cbiAgICAgICAgICBzY2hlbWUgK1xuICAgICAgICAgICc6Ly8nICtcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lTmFtZSArXG4gICAgICAgICAgJy4nICtcbiAgICAgICAgICBwcm9wcy5sb2FkQmFsYW5jZXIubG9hZEJhbGFuY2VyRG5zTmFtZSArXG4gICAgICAgICAgcHJvcHMub3BlcmF0aW9uLnBhdGg7XG5cbiAgICAgICAgbGV0IGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7XG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgbWV0aG9kczpcbiAgICAgICAgICAgICAgcHJvcHMuaHR0cE1ldGhvZHMgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gcHJvcHMuaHR0cE1ldGhvZHNcbiAgICAgICAgICAgICAgICA6IHByb3BzLm9wZXJhdGlvbi5odHRwTWV0aG9kcyxcbiAgICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgICAgcG9zdERhdGE6IHByb3BzLnBvc3REYXRhID09PSB1bmRlZmluZWQgPyAnJyA6IHByb3BzLnBvc3REYXRhLFxuICAgICAgICAgICAgaGVhZGVyczogcHJvcHMuaGVhZGVycyA9PT0gdW5kZWZpbmVkID8ge30gOiBwcm9wcy5oZWFkZXJzLFxuICAgICAgICAgICAgb3BlcmF0aW9uOiBwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZSxcbiAgICAgICAgICAgIGZhdWx0Qm91bmRhcnlJZDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgZmF1bHRCb3VuZGFyeTogJ2F6JyxcbiAgICAgICAgICAgIG1ldHJpY05hbWVzcGFjZTogdGhpcy5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgICAgICByZXF1ZXN0Q291bnQ6IHByb3BzLnJlcXVlc3RDb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMudGltZWRFdmVudFJ1bGVzW2F2YWlsYWJpbGl0eVpvbmVJZF0gPSBuZXcgUnVsZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgICdBWicgKyBpbmRleCArIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICsgJ1RpbWVkRXZlbnQnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNjaGVkdWxlOiBTY2hlZHVsZS5leHByZXNzaW9uKHByb3BzLnNjaGVkdWxlKSxcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICB0YXJnZXRzOiBbXG4gICAgICAgICAgICAgIG5ldyBMYW1iZGFGdW5jdGlvbihwcm9wcy5mdW5jdGlvbiwge1xuICAgICAgICAgICAgICAgIGV2ZW50OiBSdWxlVGFyZ2V0SW5wdXQuZnJvbU9iamVjdChkYXRhKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICk7XG5cbiAgICBsZXQgc2NoZW1lOiBzdHJpbmcgPSBwcm9wcy5vcGVyYXRpb24uc2VydmljZS5iYXNlVXJsLnNwbGl0KCc6JylbMF07XG4gICAgbGV0IHVybDogc3RyaW5nID1cbiAgICAgIHNjaGVtZSArXG4gICAgICAnOi8vJyArXG4gICAgICBwcm9wcy5sb2FkQmFsYW5jZXIubG9hZEJhbGFuY2VyRG5zTmFtZSArXG4gICAgICBwcm9wcy5vcGVyYXRpb24ucGF0aDtcblxuICAgIGxldCBkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBtZXRob2RzOlxuICAgICAgICAgIHByb3BzLmh0dHBNZXRob2RzICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gcHJvcHMuaHR0cE1ldGhvZHNcbiAgICAgICAgICAgIDogcHJvcHMub3BlcmF0aW9uLmh0dHBNZXRob2RzLFxuICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgcG9zdERhdGE6IHByb3BzLnBvc3REYXRhID09PSB1bmRlZmluZWQgPyAnJyA6IHByb3BzLnBvc3REYXRhLFxuICAgICAgICBoZWFkZXJzOiBwcm9wcy5oZWFkZXJzID09PSB1bmRlZmluZWQgPyB7fSA6IHByb3BzLmhlYWRlcnMsXG4gICAgICAgIG9wZXJhdGlvbjogcHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUsXG4gICAgICAgIGZhdWx0Qm91bmRhcnlJZDpBd3MuUkVHSU9OLFxuICAgICAgICBmYXVsdEJvdW5kYXJ5OiAncmVnaW9uJyxcbiAgICAgICAgbWV0cmljTmFtZXNwYWNlOiB0aGlzLm1ldHJpY05hbWVzcGFjZSxcbiAgICAgICAgcmVxdWVzdENvdW50OiBwcm9wcy5yZWdpb25hbFJlcXVlc3RDb3VudCxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRoaXMudGltZWRFdmVudFJ1bGVzW0F3cy5SRUdJT05dID0gbmV3IFJ1bGUoXG4gICAgICB0aGlzLFxuICAgICAgJ1JlZ2lvbmFsVGltZWRFdmVudCcsXG4gICAgICB7XG4gICAgICAgIHNjaGVkdWxlOiBTY2hlZHVsZS5leHByZXNzaW9uKHByb3BzLnNjaGVkdWxlKSxcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgdGFyZ2V0czogW1xuICAgICAgICAgIG5ldyBMYW1iZGFGdW5jdGlvbihwcm9wcy5mdW5jdGlvbiwge1xuICAgICAgICAgICAgZXZlbnQ6IFJ1bGVUYXJnZXRJbnB1dC5mcm9tT2JqZWN0KGRhdGEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
Binary file
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ContributorInsightsWidget = void 0;
|
|
4
4
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
5
5
|
// SPDX-License-Identifier: Apache-2.0
|
|
6
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
6
|
const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
|
|
7
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
8
8
|
/**
|
|
9
9
|
* A Contributor Insight dashboard widget
|
|
10
10
|
*/
|
|
@@ -14,8 +14,8 @@ class ContributorInsightsWidget extends aws_cloudwatch_1.ConcreteWidget {
|
|
|
14
14
|
* @param props
|
|
15
15
|
*/
|
|
16
16
|
constructor(props) {
|
|
17
|
-
super(props.width
|
|
18
|
-
this.
|
|
17
|
+
super(props.width || 6, props.height || 6);
|
|
18
|
+
this.props = props;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* Converts the widget into an array of JSON objects (not string), this returns
|
|
@@ -31,25 +31,21 @@ class ContributorInsightsWidget extends aws_cloudwatch_1.ConcreteWidget {
|
|
|
31
31
|
x: this.x,
|
|
32
32
|
y: this.y,
|
|
33
33
|
properties: {
|
|
34
|
+
view: 'timeSeries',
|
|
35
|
+
title: this.props.title,
|
|
36
|
+
region: this.props.region || aws_cdk_lib_1.Aws.REGION,
|
|
34
37
|
insightRule: {
|
|
35
|
-
maxContributorCount: this.
|
|
36
|
-
orderBy: this.
|
|
37
|
-
ruleName: this.
|
|
38
|
+
maxContributorCount: this.props.topContributors,
|
|
39
|
+
orderBy: this.props.orderStatistic,
|
|
40
|
+
ruleName: this.props.insightRule.attrRuleName,
|
|
38
41
|
},
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
legend: {
|
|
43
|
-
position: this.properties.legendPosition,
|
|
44
|
-
},
|
|
45
|
-
view: 'timeSeries',
|
|
46
|
-
period: this.properties.period.toSeconds(),
|
|
47
|
-
title: this.properties.title,
|
|
48
|
-
accountId: this.properties.accountId,
|
|
42
|
+
legend: this.props.legendPosition !== undefined ? { position: this.props.legendPosition } : undefined,
|
|
43
|
+
period: this.props.period?.toSeconds(),
|
|
44
|
+
accountId: this.props.accountId
|
|
49
45
|
},
|
|
50
46
|
},
|
|
51
47
|
];
|
|
52
48
|
}
|
|
53
49
|
}
|
|
54
50
|
exports.ContributorInsightsWidget = ContributorInsightsWidget;
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJpYnV0b3JJbnNpZ2h0c1dpZGdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXNoYm9hcmRzL0NvbnRyaWJ1dG9ySW5zaWdodHNXaWRnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0QywrREFBcUU7QUFFckUsNkNBQWtDO0FBRWxDOztHQUVHO0FBQ0gsTUFBYSx5QkFDWCxTQUFRLCtCQUFjO0lBT3RCOzs7T0FHRztJQUNILFlBQVksS0FBb0M7UUFDOUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNO1FBQ0osT0FBTztZQUNMO2dCQUNFLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ1QsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNULFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztvQkFDdkIsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFHLGlCQUFHLENBQUMsTUFBTTtvQkFDdEMsV0FBVyxFQUFFO3dCQUNYLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZTt3QkFDL0MsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYzt3QkFDbEMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFlBQVk7cUJBQzlDO29CQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7b0JBQ3JHLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUU7b0JBQ3RDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7aUJBQ2hDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBOUNELDhEQThDQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IENvbmNyZXRlV2lkZ2V0LCBJV2lkZ2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQ29udHJpYnV0b3JJbnNpZ2h0V2lkZ2V0UHJvcHMgfSBmcm9tICcuL3Byb3BzL0NvbnRyaWJ1dG9ySW5zaWdodFdpZGdldFByb3BzJztcbmltcG9ydCB7IEF3cyB9IGZyb20gJ2F3cy1jZGstbGliJztcblxuLyoqXG4gKiBBIENvbnRyaWJ1dG9yIEluc2lnaHQgZGFzaGJvYXJkIHdpZGdldFxuICovXG5leHBvcnQgY2xhc3MgQ29udHJpYnV0b3JJbnNpZ2h0c1dpZGdldFxuICBleHRlbmRzIENvbmNyZXRlV2lkZ2V0XG4gIGltcGxlbWVudHMgSVdpZGdldCB7XG4gIC8qKlxuICAgKiBUaGUgd2lkZ2V0IHByb3BlcnRpZXNcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IENvbnRyaWJ1dG9ySW5zaWdodFdpZGdldFByb3BzO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSB3aWRnZXRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wczogQ29udHJpYnV0b3JJbnNpZ2h0V2lkZ2V0UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcy53aWR0aCB8fCA2LCBwcm9wcy5oZWlnaHQgfHwgNik7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSB3aWRnZXQgaW50byBhbiBhcnJheSBvZiBKU09OIG9iamVjdHMgKG5vdCBzdHJpbmcpLCB0aGlzIHJldHVybnNcbiAgICogYSBzaW5nbGUgaXRlbSBpbiB0aGUgYXJyYXlcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgZGljdGlvbmFyaWVzXG4gICAqL1xuICB0b0pzb24oKTogYW55W10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdtZXRyaWMnLFxuICAgICAgICB3aWR0aDogdGhpcy53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcbiAgICAgICAgeDogdGhpcy54LFxuICAgICAgICB5OiB0aGlzLnksXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICB2aWV3OiAndGltZVNlcmllcycsXG4gICAgICAgICAgdGl0bGU6IHRoaXMucHJvcHMudGl0bGUsXG4gICAgICAgICAgcmVnaW9uOiB0aGlzLnByb3BzLnJlZ2lvbnx8IEF3cy5SRUdJT04sICAgICBcbiAgICAgICAgICBpbnNpZ2h0UnVsZToge1xuICAgICAgICAgICAgbWF4Q29udHJpYnV0b3JDb3VudDogdGhpcy5wcm9wcy50b3BDb250cmlidXRvcnMsXG4gICAgICAgICAgICBvcmRlckJ5OiB0aGlzLnByb3BzLm9yZGVyU3RhdGlzdGljLFxuICAgICAgICAgICAgcnVsZU5hbWU6IHRoaXMucHJvcHMuaW5zaWdodFJ1bGUuYXR0clJ1bGVOYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGVnZW5kOiB0aGlzLnByb3BzLmxlZ2VuZFBvc2l0aW9uICE9PSB1bmRlZmluZWQgPyB7IHBvc2l0aW9uOiB0aGlzLnByb3BzLmxlZ2VuZFBvc2l0aW9uIH0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgcGVyaW9kOiB0aGlzLnByb3BzLnBlcmlvZD8udG9TZWNvbmRzKCksXG4gICAgICAgICAgYWNjb3VudElkOiB0aGlzLnByb3BzLmFjY291bnRJZFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdO1xuICB9XG59XG4iXX0=
|