@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,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The minimum unhealthy targets for an AZ to be considered impaired instead
|
|
3
|
+
* of individual targets in the zone. You must specify either count or percentage,
|
|
4
|
+
* if you specify both, only count will be used.
|
|
5
|
+
*/
|
|
6
|
+
export interface MinimumUnhealthyTargets {
|
|
7
|
+
/**
|
|
8
|
+
* The minimum number of targets that must be unhealthy. If the number of
|
|
9
|
+
* unhealthy targets is equal to this, or greater, the impact ot a single AZ
|
|
10
|
+
* is not considered ot be from a "single" target. You must specify either count or percentage,
|
|
11
|
+
* if you specify both, only count will be used.
|
|
12
|
+
*
|
|
13
|
+
* @default This value is not used
|
|
14
|
+
*/
|
|
15
|
+
readonly count?: number;
|
|
16
|
+
/**
|
|
17
|
+
* The minimum percentage of targets that must be unhealthy. If the percentage
|
|
18
|
+
* of unhealthy targets is equal to this, or greater, the impact to a single AZ
|
|
19
|
+
* is not considered to be from a "single" target. You must specify either count or percentage,
|
|
20
|
+
* if you specify both, only count will be used.
|
|
21
|
+
*
|
|
22
|
+
* @default This value is not used
|
|
23
|
+
*/
|
|
24
|
+
readonly percentage?: number;
|
|
25
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWluaW11bVVuaGVhbHRoeVRhcmdldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbGl0aWVzL01pbmltdW1VbmhlYWx0aHlUYXJnZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBtaW5pbXVtIHVuaGVhbHRoeSB0YXJnZXRzIGZvciBhbiBBWiB0byBiZSBjb25zaWRlcmVkIGltcGFpcmVkIGluc3RlYWRcbiAqIG9mIGluZGl2aWR1YWwgdGFyZ2V0cyBpbiB0aGUgem9uZS4gWW91IG11c3Qgc3BlY2lmeSBlaXRoZXIgY291bnQgb3IgcGVyY2VudGFnZSxcbiAqIGlmIHlvdSBzcGVjaWZ5IGJvdGgsIG9ubHkgY291bnQgd2lsbCBiZSB1c2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pbmltdW1VbmhlYWx0aHlUYXJnZXRzIHtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiB0YXJnZXRzIHRoYXQgbXVzdCBiZSB1bmhlYWx0aHkuIElmIHRoZSBudW1iZXIgb2ZcbiAgICogdW5oZWFsdGh5IHRhcmdldHMgaXMgZXF1YWwgdG8gdGhpcywgb3IgZ3JlYXRlciwgdGhlIGltcGFjdCBvdCBhIHNpbmdsZSBBWlxuICAgKiBpcyBub3QgY29uc2lkZXJlZCBvdCBiZSBmcm9tIGEgXCJzaW5nbGVcIiB0YXJnZXQuIFlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGNvdW50IG9yIHBlcmNlbnRhZ2UsXG4gICAqIGlmIHlvdSBzcGVjaWZ5IGJvdGgsIG9ubHkgY291bnQgd2lsbCBiZSB1c2VkLlxuICAgKiBcbiAgICogQGRlZmF1bHQgVGhpcyB2YWx1ZSBpcyBub3QgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgY291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHBlcmNlbnRhZ2Ugb2YgdGFyZ2V0cyB0aGF0IG11c3QgYmUgdW5oZWFsdGh5LiBJZiB0aGUgcGVyY2VudGFnZVxuICAgKiBvZiB1bmhlYWx0aHkgdGFyZ2V0cyBpcyBlcXVhbCB0byB0aGlzLCBvciBncmVhdGVyLCB0aGUgaW1wYWN0IHRvIGEgc2luZ2xlIEFaXG4gICAqIGlzIG5vdCBjb25zaWRlcmVkIHRvIGJlIGZyb20gYSBcInNpbmdsZVwiIHRhcmdldC4gWW91IG11c3Qgc3BlY2lmeSBlaXRoZXIgY291bnQgb3IgcGVyY2VudGFnZSxcbiAgICogaWYgeW91IHNwZWNpZnkgYm90aCwgb25seSBjb3VudCB3aWxsIGJlIHVzZWQuXG4gICAqIFxuICAgKiBAZGVmYXVsdCBUaGlzIHZhbHVlIGlzIG5vdCB1c2VkXG4gICAqL1xuICByZWFkb25seSBwZXJjZW50YWdlPzogbnVtYmVyO1xufSJdfQ==
|
package/package.json
CHANGED
|
@@ -52,26 +52,26 @@
|
|
|
52
52
|
"@aws-cdk/integ-tests-alpha": "latest",
|
|
53
53
|
"@types/jest": "^29.5.14",
|
|
54
54
|
"@types/node": "^18",
|
|
55
|
-
"aws-cdk-lib": "2.
|
|
56
|
-
"cdk-nag": "^2.
|
|
57
|
-
"cdklabs-projen-project-types": "^0.
|
|
55
|
+
"aws-cdk-lib": "2.189.1",
|
|
56
|
+
"cdk-nag": "^2.37.44",
|
|
57
|
+
"cdklabs-projen-project-types": "^0.3.5",
|
|
58
58
|
"commit-and-tag-version": "^12",
|
|
59
59
|
"constructs": "10.0.5",
|
|
60
60
|
"jest": "^29.7.0",
|
|
61
|
-
"jest-junit": "^
|
|
62
|
-
"jsii": "
|
|
63
|
-
"jsii-diff": "^1.
|
|
61
|
+
"jest-junit": "^16",
|
|
62
|
+
"jsii": "5.8.0",
|
|
63
|
+
"jsii-diff": "^1.115.0",
|
|
64
64
|
"jsii-docgen": "^10.5.0",
|
|
65
|
-
"jsii-pacmak": "^1.
|
|
66
|
-
"jsii-rosetta": "~5.7
|
|
67
|
-
"prettier": "^3.
|
|
68
|
-
"projen": "^0.
|
|
69
|
-
"ts-jest": "^29.
|
|
65
|
+
"jsii-pacmak": "^1.115.0",
|
|
66
|
+
"jsii-rosetta": "~5.9.7",
|
|
67
|
+
"prettier": "^3.6.2",
|
|
68
|
+
"projen": "^0.96.3",
|
|
69
|
+
"ts-jest": "^29.4.4",
|
|
70
70
|
"ts-node": "^10.9.2",
|
|
71
|
-
"typescript": "^5.
|
|
71
|
+
"typescript": "^5.9.3"
|
|
72
72
|
},
|
|
73
73
|
"peerDependencies": {
|
|
74
|
-
"aws-cdk-lib": "^2.
|
|
74
|
+
"aws-cdk-lib": "^2.189.1",
|
|
75
75
|
"constructs": "^10.0.5"
|
|
76
76
|
},
|
|
77
77
|
"keywords": [
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"publishConfig": {
|
|
93
93
|
"access": "public"
|
|
94
94
|
},
|
|
95
|
-
"version": "0.0.1-alpha.
|
|
95
|
+
"version": "0.0.1-alpha.60",
|
|
96
96
|
"jest": {
|
|
97
97
|
"coverageProvider": "v8",
|
|
98
98
|
"roots": [
|
|
@@ -2,12 +2,84 @@
|
|
|
2
2
|
import { Construct } from 'constructs';
|
|
3
3
|
import {
|
|
4
4
|
Stack,
|
|
5
|
+
Aws,
|
|
6
|
+
Duration
|
|
5
7
|
} from 'aws-cdk-lib';
|
|
8
|
+
import {
|
|
9
|
+
CfnNatGateway,
|
|
10
|
+
SelectedSubnets,
|
|
11
|
+
SubnetType,
|
|
12
|
+
Vpc,
|
|
13
|
+
} from 'aws-cdk-lib/aws-ec2';
|
|
14
|
+
import { ApplicationLoadBalancer, ApplicationTargetGroup } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
|
|
15
|
+
import { Stats, Unit } from 'aws-cdk-lib/aws-cloudwatch';
|
|
16
|
+
import { ILogGroup, LogGroup } from 'aws-cdk-lib/aws-logs';
|
|
17
|
+
|
|
18
|
+
import { BasicServiceMultiAZObservability } from '@cdklabs/multi-az-observability';
|
|
19
|
+
import { Service } from '@cdklabs/multi-az-observability';
|
|
20
|
+
import { InstrumentedServiceMultiAZObservability } from '@cdklabs/multi-az-observability';
|
|
21
|
+
import { IOperation } from '@cdklabs/multi-az-observability';
|
|
22
|
+
import { IService } from '@cdklabs/multi-az-observability';
|
|
23
|
+
import { Operation } from '@cdklabs/multi-az-observability';
|
|
24
|
+
import { ApplicationLoadBalancerLatencyOutlierAlgorithm } from '@cdklabs/multi-az-observability';
|
|
25
|
+
import { MetricDimensions } from '@cdklabs/multi-az-observability';
|
|
26
|
+
import { OperationAvailabilityMetricDetails } from '@cdklabs/multi-az-observability';
|
|
27
|
+
import { OperationLatencyMetricDetails } from '@cdklabs/multi-az-observability';
|
|
28
|
+
import { ServiceAvailabilityMetricDetails, ServiceLatencyMetricDetails, ContributorInsightRuleDetails } from '@cdklabs/multi-az-observability';
|
|
6
29
|
|
|
7
30
|
class Fixture extends Stack {
|
|
8
31
|
constructor(scope: Construct, id: string) {
|
|
9
32
|
super(scope, id);
|
|
33
|
+
let stack = scope;
|
|
34
|
+
let azs: string[] = [
|
|
35
|
+
Aws.REGION + 'a',
|
|
36
|
+
Aws.REGION + 'b',
|
|
37
|
+
Aws.REGION + 'c',
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
let vpc = new Vpc(stack, 'vpc', {
|
|
41
|
+
availabilityZones: azs,
|
|
42
|
+
subnetConfiguration: [
|
|
43
|
+
{
|
|
44
|
+
subnetType: SubnetType.PRIVATE_WITH_EGRESS,
|
|
45
|
+
name: 'private_with_egress_subnets',
|
|
46
|
+
cidrMask: 24,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
createInternetGateway: false,
|
|
50
|
+
natGateways: 0,
|
|
51
|
+
restrictDefaultSecurityGroup: false,
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
let subnets: SelectedSubnets = vpc.selectSubnets({
|
|
55
|
+
subnetType: SubnetType.PRIVATE_WITH_EGRESS,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
let natGateway1 = new CfnNatGateway(stack, 'AZ1NatGateway', {
|
|
59
|
+
subnetId: subnets.subnetIds[0],
|
|
60
|
+
});
|
|
61
|
+
let natGateway2 = new CfnNatGateway(stack, 'AZ2NatGateway', {
|
|
62
|
+
subnetId: subnets.subnetIds[1],
|
|
63
|
+
});
|
|
64
|
+
let natGateway3 = new CfnNatGateway(stack, 'AZ3NatGateway', {
|
|
65
|
+
subnetId: subnets.subnetIds[2],
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
let loadBalancer = new ApplicationLoadBalancer(stack, 'alb', {
|
|
69
|
+
vpc: vpc,
|
|
70
|
+
crossZoneEnabled: true,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
let targetGroup1: ApplicationTargetGroup = new ApplicationTargetGroup(stack, "tg1", {
|
|
75
|
+
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
let targetGroup2: ApplicationTargetGroup = new ApplicationTargetGroup(stack, "tg2", {
|
|
79
|
+
|
|
80
|
+
});
|
|
10
81
|
|
|
82
|
+
let logGroup: ILogGroup = new LogGroup(stack, 'Logs', {});
|
|
11
83
|
/// here
|
|
12
84
|
}
|
|
13
85
|
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
// Fixture with packages imported, but nothing else
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import {
|
|
4
|
+
Stack,
|
|
5
|
+
Aws,
|
|
6
|
+
Duration
|
|
7
|
+
} from 'aws-cdk-lib';
|
|
8
|
+
import {
|
|
9
|
+
CfnNatGateway,
|
|
10
|
+
SelectedSubnets,
|
|
11
|
+
SubnetType,
|
|
12
|
+
Vpc,
|
|
13
|
+
} from 'aws-cdk-lib/aws-ec2';
|
|
14
|
+
import { ApplicationLoadBalancer, ApplicationTargetGroup } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
|
|
15
|
+
import { Stats, Unit } from 'aws-cdk-lib/aws-cloudwatch';
|
|
16
|
+
import { ILogGroup, LogGroup } from 'aws-cdk-lib/aws-logs';
|
|
17
|
+
|
|
18
|
+
import { BasicServiceMultiAZObservability } from '@cdklabs/multi-az-observability';
|
|
19
|
+
import { Service } from '@cdklabs/multi-az-observability';
|
|
20
|
+
import { InstrumentedServiceMultiAZObservability } from '@cdklabs/multi-az-observability';
|
|
21
|
+
import { IOperation } from '@cdklabs/multi-az-observability';
|
|
22
|
+
import { IService } from '@cdklabs/multi-az-observability';
|
|
23
|
+
import { Operation } from '@cdklabs/multi-az-observability';
|
|
24
|
+
import { ApplicationLoadBalancerLatencyOutlierAlgorithm } from '@cdklabs/multi-az-observability';
|
|
25
|
+
import { MetricDimensions } from '@cdklabs/multi-az-observability';
|
|
26
|
+
import { OperationAvailabilityMetricDetails } from '@cdklabs/multi-az-observability';
|
|
27
|
+
import { OperationLatencyMetricDetails } from '@cdklabs/multi-az-observability';
|
|
28
|
+
import { ServiceAvailabilityMetricDetails, ServiceLatencyMetricDetails, ContributorInsightRuleDetails } from '@cdklabs/multi-az-observability';
|
|
29
|
+
|
|
30
|
+
class Fixture extends Stack {
|
|
31
|
+
constructor(scope: Construct, id: string) {
|
|
32
|
+
super(scope, id);
|
|
33
|
+
let stack = scope;
|
|
34
|
+
let azs: string[] = [
|
|
35
|
+
Aws.REGION + 'a',
|
|
36
|
+
Aws.REGION + 'b',
|
|
37
|
+
Aws.REGION + 'c',
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
let vpc = new Vpc(stack, 'vpc', {
|
|
41
|
+
availabilityZones: azs,
|
|
42
|
+
subnetConfiguration: [
|
|
43
|
+
{
|
|
44
|
+
subnetType: SubnetType.PRIVATE_WITH_EGRESS,
|
|
45
|
+
name: 'private_with_egress_subnets',
|
|
46
|
+
cidrMask: 24,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
createInternetGateway: false,
|
|
50
|
+
natGateways: 0,
|
|
51
|
+
restrictDefaultSecurityGroup: false,
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
let subnets: SelectedSubnets = vpc.selectSubnets({
|
|
55
|
+
subnetType: SubnetType.PRIVATE_WITH_EGRESS,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
let natGateway1 = new CfnNatGateway(stack, 'AZ1NatGateway', {
|
|
59
|
+
subnetId: subnets.subnetIds[0],
|
|
60
|
+
});
|
|
61
|
+
let natGateway2 = new CfnNatGateway(stack, 'AZ2NatGateway', {
|
|
62
|
+
subnetId: subnets.subnetIds[1],
|
|
63
|
+
});
|
|
64
|
+
let natGateway3 = new CfnNatGateway(stack, 'AZ3NatGateway', {
|
|
65
|
+
subnetId: subnets.subnetIds[2],
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
let loadBalancer = new ApplicationLoadBalancer(stack, 'alb', {
|
|
70
|
+
vpc: vpc,
|
|
71
|
+
crossZoneEnabled: true,
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
let targetGroup1: ApplicationTargetGroup = new ApplicationTargetGroup(stack, "tg1", {
|
|
76
|
+
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
let targetGroup2: ApplicationTargetGroup = new ApplicationTargetGroup(stack, "tg2", {
|
|
80
|
+
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
let logGroup: ILogGroup = new LogGroup(stack, 'Logs', {});
|
|
84
|
+
|
|
85
|
+
let service: IService = new Service({
|
|
86
|
+
serviceName: 'test',
|
|
87
|
+
availabilityZoneNames: vpc.availabilityZones,
|
|
88
|
+
baseUrl: 'http://www.example.com',
|
|
89
|
+
faultCountThreshold: 25,
|
|
90
|
+
period: Duration.seconds(60),
|
|
91
|
+
loadBalancer: loadBalancer,
|
|
92
|
+
targetGroups: [ targetGroup1, targetGroup2 ],
|
|
93
|
+
defaultAvailabilityMetricDetails: {
|
|
94
|
+
metricNamespace: 'front-end/metrics',
|
|
95
|
+
successMetricNames: ['Success'],
|
|
96
|
+
faultMetricNames: ['Fault', 'Error'],
|
|
97
|
+
alarmStatistic: 'Sum',
|
|
98
|
+
unit: Unit.COUNT,
|
|
99
|
+
period: Duration.seconds(60),
|
|
100
|
+
evaluationPeriods: 5,
|
|
101
|
+
datapointsToAlarm: 3,
|
|
102
|
+
successAlarmThreshold: 99.9,
|
|
103
|
+
faultAlarmThreshold: 0.1,
|
|
104
|
+
graphedFaultStatistics: ['Sum'],
|
|
105
|
+
graphedSuccessStatistics: ['Sum'],
|
|
106
|
+
},
|
|
107
|
+
defaultLatencyMetricDetails: {
|
|
108
|
+
metricNamespace: 'front-end/metrics',
|
|
109
|
+
successMetricNames: ['SuccessLatency'],
|
|
110
|
+
faultMetricNames: ['FaultLatency'],
|
|
111
|
+
alarmStatistic: 'p99',
|
|
112
|
+
unit: Unit.MILLISECONDS,
|
|
113
|
+
period: Duration.seconds(60),
|
|
114
|
+
evaluationPeriods: 5,
|
|
115
|
+
datapointsToAlarm: 3,
|
|
116
|
+
successAlarmThreshold: Duration.millis(150),
|
|
117
|
+
graphedFaultStatistics: ['p99'],
|
|
118
|
+
graphedSuccessStatistics: ['p50', 'p99', 'tm99'],
|
|
119
|
+
},
|
|
120
|
+
defaultContributorInsightRuleDetails: {
|
|
121
|
+
successLatencyMetricJsonPath: '$.SuccessLatency',
|
|
122
|
+
faultMetricJsonPath: '$.Faults',
|
|
123
|
+
operationNameJsonPath: '$.Operation',
|
|
124
|
+
instanceIdJsonPath: '$.InstanceId',
|
|
125
|
+
availabilityZoneIdJsonPath: '$.AZ-ID',
|
|
126
|
+
logGroups: [logGroup],
|
|
127
|
+
},
|
|
128
|
+
canaryTestProps: {
|
|
129
|
+
requestCount: 10,
|
|
130
|
+
schedule: 'rate(1 minute)',
|
|
131
|
+
loadBalancer: loadBalancer,
|
|
132
|
+
networkConfiguration: {
|
|
133
|
+
vpc: vpc,
|
|
134
|
+
subnetSelection: { subnetType: SubnetType.PRIVATE_ISOLATED },
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
minimumUnhealthyTargets: {
|
|
138
|
+
percentage: 0.1
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
/// here
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ApplicationLoadBalancerLatencyOutlierCalculation = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* The options for calculating if an AZ is an outlier for latency for ALBs
|
|
6
|
-
*/
|
|
7
|
-
var ApplicationLoadBalancerLatencyOutlierCalculation;
|
|
8
|
-
(function (ApplicationLoadBalancerLatencyOutlierCalculation) {
|
|
9
|
-
/**
|
|
10
|
-
* This will take the latency threshold and count the number of requests per AZ
|
|
11
|
-
* that exceed this threshold and then calculate the percentage of requests
|
|
12
|
-
* exceeding this threshold belong to each AZ. This provides a static comparison
|
|
13
|
-
* of the number of high latency requests in one AZ versus the others
|
|
14
|
-
*/
|
|
15
|
-
ApplicationLoadBalancerLatencyOutlierCalculation["STATIC"] = "STATIC";
|
|
16
|
-
/**
|
|
17
|
-
* This calculates the z score of latency in one AZ against the other AZs. It uses
|
|
18
|
-
* the target response time of all requests to calculate the standard deviation and
|
|
19
|
-
* average for all AZs. This is the default.
|
|
20
|
-
*/
|
|
21
|
-
ApplicationLoadBalancerLatencyOutlierCalculation["Z_SCORE"] = "Z_SCORE";
|
|
22
|
-
})(ApplicationLoadBalancerLatencyOutlierCalculation || (exports.ApplicationLoadBalancerLatencyOutlierCalculation = ApplicationLoadBalancerLatencyOutlierCalculation = {}));
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckNhbGN1bGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jhc2ljX29ic2VydmFiaWxpdHkvcHJvcHMvQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckNhbGN1bGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBWSxnREFnQlg7QUFoQkQsV0FBWSxnREFBZ0Q7SUFFeEQ7Ozs7O09BS0c7SUFDSCxxRUFBaUIsQ0FBQTtJQUVqQjs7OztPQUlHO0lBQ0gsdUVBQWtCLENBQUE7QUFDdEIsQ0FBQyxFQWhCVyxnREFBZ0QsZ0VBQWhELGdEQUFnRCxRQWdCM0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBvcHRpb25zIGZvciBjYWxjdWxhdGluZyBpZiBhbiBBWiBpcyBhbiBvdXRsaWVyIGZvciBsYXRlbmN5IGZvciBBTEJzXG4gKi9cbmV4cG9ydCBlbnVtIEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTGF0ZW5jeU91dGxpZXJDYWxjdWxhdGlvblxue1xuICAgIC8qKlxuICAgICAqIFRoaXMgd2lsbCB0YWtlIHRoZSBsYXRlbmN5IHRocmVzaG9sZCBhbmQgY291bnQgdGhlIG51bWJlciBvZiByZXF1ZXN0cyBwZXIgQVogXG4gICAgICogdGhhdCBleGNlZWQgdGhpcyB0aHJlc2hvbGQgYW5kIHRoZW4gY2FsY3VsYXRlIHRoZSBwZXJjZW50YWdlIG9mIHJlcXVlc3RzXG4gICAgICogZXhjZWVkaW5nIHRoaXMgdGhyZXNob2xkIGJlbG9uZyB0byBlYWNoIEFaLiBUaGlzIHByb3ZpZGVzIGEgc3RhdGljIGNvbXBhcmlzb25cbiAgICAgKiBvZiB0aGUgbnVtYmVyIG9mIGhpZ2ggbGF0ZW5jeSByZXF1ZXN0cyBpbiBvbmUgQVogdmVyc3VzIHRoZSBvdGhlcnNcbiAgICAgKi9cbiAgICBTVEFUSUMgPSBcIlNUQVRJQ1wiLFxuXG4gICAgLyoqXG4gICAgICogVGhpcyBjYWxjdWxhdGVzIHRoZSB6IHNjb3JlIG9mIGxhdGVuY3kgaW4gb25lIEFaIGFnYWluc3QgdGhlIG90aGVyIEFacy4gSXQgdXNlc1xuICAgICAqIHRoZSB0YXJnZXQgcmVzcG9uc2UgdGltZSBvZiBhbGwgcmVxdWVzdHMgdG8gY2FsY3VsYXRlIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gYW5kXG4gICAgICogYXZlcmFnZSBmb3IgYWxsIEFacy4gVGhpcyBpcyB0aGUgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBaX1NDT1JFPSBcIlpfU0NPUkVcIlxufSJdfQ==
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { IAlarm } from 'aws-cdk-lib/aws-cloudwatch';
|
|
2
|
-
import { CfnNatGateway } from 'aws-cdk-lib/aws-ec2';
|
|
3
|
-
import { IApplicationLoadBalancer } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
|
|
4
|
-
import { IConstruct } from 'constructs';
|
|
5
|
-
/**
|
|
6
|
-
* Properties of a basic service
|
|
7
|
-
*/
|
|
8
|
-
export interface IBasicServiceMultiAZObservability extends IConstruct {
|
|
9
|
-
/**
|
|
10
|
-
* The NAT Gateways being used in the service, each set of NAT Gateways
|
|
11
|
-
* are keyed by their Availability Zone Id
|
|
12
|
-
*/
|
|
13
|
-
natGateways?: {
|
|
14
|
-
[key: string]: CfnNatGateway[];
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* The application load balancers being used by the service
|
|
18
|
-
*/
|
|
19
|
-
applicationLoadBalancers?: IApplicationLoadBalancer[];
|
|
20
|
-
/**
|
|
21
|
-
* The name of the service
|
|
22
|
-
*/
|
|
23
|
-
serviceName: string;
|
|
24
|
-
/**
|
|
25
|
-
* The alarms indicating if an AZ is an outlier for NAT GW
|
|
26
|
-
* packet loss and has isolated impact
|
|
27
|
-
*/
|
|
28
|
-
natGWZonalIsolatedImpactAlarms?: {
|
|
29
|
-
[key: string]: IAlarm;
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* The alarms indicating if an AZ is an outlier for ALB
|
|
33
|
-
* faults and has isolated impact
|
|
34
|
-
*/
|
|
35
|
-
albZonalIsolatedImpactAlarms?: {
|
|
36
|
-
[key: string]: IAlarm;
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* The alarms indicating if an AZ has isolated impact
|
|
40
|
-
* from either ALB or NAT GW metrics
|
|
41
|
-
*/
|
|
42
|
-
aggregateZonalIsolatedImpactAlarms: {
|
|
43
|
-
[key: string]: IAlarm;
|
|
44
|
-
};
|
|
45
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0lCYXNpY1NlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgSUFsYXJtIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQ2ZuTmF0R2F0ZXdheSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgb2YgYSBiYXNpYyBzZXJ2aWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5IGV4dGVuZHMgSUNvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgTkFUIEdhdGV3YXlzIGJlaW5nIHVzZWQgaW4gdGhlIHNlcnZpY2UsIGVhY2ggc2V0IG9mIE5BVCBHYXRld2F5c1xuICAgKiBhcmUga2V5ZWQgYnkgdGhlaXIgQXZhaWxhYmlsaXR5IFpvbmUgSWRcbiAgICovXG4gIG5hdEdhdGV3YXlzPzogeyBba2V5OiBzdHJpbmddOiBDZm5OYXRHYXRld2F5W10gfTtcblxuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGxvYWQgYmFsYW5jZXJzIGJlaW5nIHVzZWQgYnkgdGhlIHNlcnZpY2VcbiAgICovXG4gIGFwcGxpY2F0aW9uTG9hZEJhbGFuY2Vycz86IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcltdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2VydmljZVxuICAgKi9cbiAgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFsYXJtcyBpbmRpY2F0aW5nIGlmIGFuIEFaIGlzIGFuIG91dGxpZXIgZm9yIE5BVCBHV1xuICAgKiBwYWNrZXQgbG9zcyBhbmQgaGFzIGlzb2xhdGVkIGltcGFjdFxuICAgKi9cbiAgbmF0R1dab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zPzogeyBba2V5OiBzdHJpbmddOiBJQWxhcm0gfTtcblxuICAvKipcbiAgICogVGhlIGFsYXJtcyBpbmRpY2F0aW5nIGlmIGFuIEFaIGlzIGFuIG91dGxpZXIgZm9yIEFMQlxuICAgKiBmYXVsdHMgYW5kIGhhcyBpc29sYXRlZCBpbXBhY3RcbiAgICovXG4gIGFsYlpvbmFsSXNvbGF0ZWRJbXBhY3RBbGFybXM/OiB7IFtrZXk6IHN0cmluZ106IElBbGFybSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgYWxhcm1zIGluZGljYXRpbmcgaWYgYW4gQVogaGFzIGlzb2xhdGVkIGltcGFjdFxuICAgKiBmcm9tIGVpdGhlciBBTEIgb3IgTkFUIEdXIG1ldHJpY3NcbiAgICovXG4gIGFnZ3JlZ2F0ZVpvbmFsSXNvbGF0ZWRJbXBhY3RBbGFybXM6IHsgW2tleTogc3RyaW5nXTogSUFsYXJtIH07XG59XG4iXX0=
|