@cdklabs/multi-az-observability 0.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/.jsii +10177 -0
  2. package/API.md +5119 -0
  3. package/LICENSE +202 -0
  4. package/README.md +175 -0
  5. package/cdk.json +68 -0
  6. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.d.ts +214 -0
  7. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.js +763 -0
  8. package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.d.ts +22 -0
  9. package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.js +21 -0
  10. package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.d.ts +34 -0
  11. package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.js +39 -0
  12. package/lib/alarmsandrules/CanaryOperationRegionalAlarmsAndRules.d.ts +7 -0
  13. package/lib/alarmsandrules/CanaryOperationRegionalAlarmsAndRules.js +11 -0
  14. package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.d.ts +16 -0
  15. package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.js +17 -0
  16. package/lib/alarmsandrules/IBaseOperationRegionalAlarmsAndRules.d.ts +18 -0
  17. package/lib/alarmsandrules/IBaseOperationRegionalAlarmsAndRules.js +3 -0
  18. package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.d.ts +30 -0
  19. package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.js +3 -0
  20. package/lib/alarmsandrules/ICanaryOperationRegionalAlarmsAndRules.d.ts +6 -0
  21. package/lib/alarmsandrules/ICanaryOperationRegionalAlarmsAndRules.js +3 -0
  22. package/lib/alarmsandrules/ICanaryOperationZonalAlarmsAndRules.d.ts +12 -0
  23. package/lib/alarmsandrules/ICanaryOperationZonalAlarmsAndRules.js +3 -0
  24. package/lib/alarmsandrules/IOperationAlarmsAndRules.d.ts +55 -0
  25. package/lib/alarmsandrules/IOperationAlarmsAndRules.js +3 -0
  26. package/lib/alarmsandrules/IServerSideOperationRegionalAlarmsAndRules.d.ts +15 -0
  27. package/lib/alarmsandrules/IServerSideOperationRegionalAlarmsAndRules.js +3 -0
  28. package/lib/alarmsandrules/IServerSideOperationZonalAlarmsAndRules.d.ts +36 -0
  29. package/lib/alarmsandrules/IServerSideOperationZonalAlarmsAndRules.js +3 -0
  30. package/lib/alarmsandrules/IServiceAlarmsAndRules.d.ts +44 -0
  31. package/lib/alarmsandrules/IServiceAlarmsAndRules.js +3 -0
  32. package/lib/alarmsandrules/InsightRuleBody.d.ts +67 -0
  33. package/lib/alarmsandrules/InsightRuleBody.js +46 -0
  34. package/lib/alarmsandrules/OperationAlarmsAndRules.d.ts +59 -0
  35. package/lib/alarmsandrules/OperationAlarmsAndRules.js +135 -0
  36. package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.d.ts +19 -0
  37. package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.js +22 -0
  38. package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.d.ts +40 -0
  39. package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.js +46 -0
  40. package/lib/alarmsandrules/ServiceAlarmsAndRules.d.ts +48 -0
  41. package/lib/alarmsandrules/ServiceAlarmsAndRules.js +166 -0
  42. package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.d.ts +24 -0
  43. package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.js +3 -0
  44. package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.d.ts +62 -0
  45. package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.js +3 -0
  46. package/lib/alarmsandrules/props/CanaryOperationRegionalAlarmsAndRulesProps.d.ts +6 -0
  47. package/lib/alarmsandrules/props/CanaryOperationRegionalAlarmsAndRulesProps.js +3 -0
  48. package/lib/alarmsandrules/props/CanaryOperationZonalAlarmsAndRulesProps.d.ts +6 -0
  49. package/lib/alarmsandrules/props/CanaryOperationZonalAlarmsAndRulesProps.js +3 -0
  50. package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.d.ts +45 -0
  51. package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.js +3 -0
  52. package/lib/alarmsandrules/props/ServerSideOperationRegionalAlarmsAndRulesProps.d.ts +6 -0
  53. package/lib/alarmsandrules/props/ServerSideOperationRegionalAlarmsAndRulesProps.js +3 -0
  54. package/lib/alarmsandrules/props/ServerSideOperationZonalAlarmsAndRulesProps.d.ts +6 -0
  55. package/lib/alarmsandrules/props/ServerSideOperationZonalAlarmsAndRulesProps.js +3 -0
  56. package/lib/alarmsandrules/props/ServiceAlarmsAndRulesProps.d.ts +13 -0
  57. package/lib/alarmsandrules/props/ServiceAlarmsAndRulesProps.js +3 -0
  58. package/lib/azmapper/AvailabilityZoneMapper.d.ts +86 -0
  59. package/lib/azmapper/AvailabilityZoneMapper.js +200 -0
  60. package/lib/azmapper/IAvailabilityZoneMapper.d.ts +86 -0
  61. package/lib/azmapper/IAvailabilityZoneMapper.js +3 -0
  62. package/lib/azmapper/props/AvailabilityZoneMapperProps.d.ts +13 -0
  63. package/lib/azmapper/props/AvailabilityZoneMapperProps.js +3 -0
  64. package/lib/azmapper/src/index.py +107 -0
  65. package/lib/canaries/CanaryFunction.d.ts +16 -0
  66. package/lib/canaries/CanaryFunction.js +152 -0
  67. package/lib/canaries/CanaryTest.d.ts +10 -0
  68. package/lib/canaries/CanaryTest.js +84 -0
  69. package/lib/canaries/ICanaryFunction.d.ts +6 -0
  70. package/lib/canaries/ICanaryFunction.js +3 -0
  71. package/lib/canaries/props/AddCanaryTestProps.d.ts +66 -0
  72. package/lib/canaries/props/AddCanaryTestProps.js +3 -0
  73. package/lib/canaries/props/CanaryFunctionProps.d.ts +29 -0
  74. package/lib/canaries/props/CanaryFunctionProps.js +3 -0
  75. package/lib/canaries/props/CanaryTestProps.d.ts +21 -0
  76. package/lib/canaries/props/CanaryTestProps.js +3 -0
  77. package/lib/canaries/props/NetworkConfigurationProps.d.ts +16 -0
  78. package/lib/canaries/props/NetworkConfigurationProps.js +3 -0
  79. package/lib/canaries/src/canary.zip +0 -0
  80. package/lib/dashboards/BasicServiceDashboard.d.ts +10 -0
  81. package/lib/dashboards/BasicServiceDashboard.js +130 -0
  82. package/lib/dashboards/ContributorInsightsWidget.d.ts +22 -0
  83. package/lib/dashboards/ContributorInsightsWidget.js +55 -0
  84. package/lib/dashboards/IOperationAvailabilityAndLatencyDashboard.d.ts +10 -0
  85. package/lib/dashboards/IOperationAvailabilityAndLatencyDashboard.js +3 -0
  86. package/lib/dashboards/IServiceAvailabilityAndLatencyDashboard.d.ts +10 -0
  87. package/lib/dashboards/IServiceAvailabilityAndLatencyDashboard.js +3 -0
  88. package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.d.ts +20 -0
  89. package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +588 -0
  90. package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.d.ts +24 -0
  91. package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +475 -0
  92. package/lib/dashboards/props/BasicServiceDashboardProps.d.ts +23 -0
  93. package/lib/dashboards/props/BasicServiceDashboardProps.js +3 -0
  94. package/lib/dashboards/props/ContributorInsightWidgetProps.d.ts +31 -0
  95. package/lib/dashboards/props/ContributorInsightWidgetProps.js +3 -0
  96. package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.d.ts +84 -0
  97. package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.js +3 -0
  98. package/lib/dashboards/props/OperationAvailabilityWidgetProps.d.ts +37 -0
  99. package/lib/dashboards/props/OperationAvailabilityWidgetProps.js +3 -0
  100. package/lib/dashboards/props/OperationLatencyWidgetProps.d.ts +37 -0
  101. package/lib/dashboards/props/OperationLatencyWidgetProps.js +3 -0
  102. package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.d.ts +30 -0
  103. package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.js +3 -0
  104. package/lib/index.d.ts +35 -0
  105. package/lib/index.js +30 -0
  106. package/lib/metrics/ApplicationLoadBalancerMetrics.d.ts +36 -0
  107. package/lib/metrics/ApplicationLoadBalancerMetrics.js +150 -0
  108. package/lib/metrics/AvailabilityAndLatencyMetrics.d.ts +61 -0
  109. package/lib/metrics/AvailabilityAndLatencyMetrics.js +212 -0
  110. package/lib/metrics/NetworkLoadBalancerMetrics.d.ts +19 -0
  111. package/lib/metrics/NetworkLoadBalancerMetrics.js +48 -0
  112. package/lib/metrics/RegionalAvailabilityMetrics.d.ts +19 -0
  113. package/lib/metrics/RegionalAvailabilityMetrics.js +71 -0
  114. package/lib/metrics/RegionalLatencyMetrics.d.ts +33 -0
  115. package/lib/metrics/RegionalLatencyMetrics.js +69 -0
  116. package/lib/metrics/ZonalAvailabilityMetrics.d.ts +19 -0
  117. package/lib/metrics/ZonalAvailabilityMetrics.js +71 -0
  118. package/lib/metrics/ZonalLatencyMetrics.d.ts +29 -0
  119. package/lib/metrics/ZonalLatencyMetrics.js +65 -0
  120. package/lib/metrics/props/AvailabilityAndLatencyMetricProps.d.ts +23 -0
  121. package/lib/metrics/props/AvailabilityAndLatencyMetricProps.js +3 -0
  122. package/lib/metrics/props/AvailabilityMetricProps.d.ts +11 -0
  123. package/lib/metrics/props/AvailabilityMetricProps.js +3 -0
  124. package/lib/metrics/props/LatencyMetricProps.d.ts +15 -0
  125. package/lib/metrics/props/LatencyMetricProps.js +3 -0
  126. package/lib/metrics/props/RegionalAvailabilityMetricProps.d.ts +6 -0
  127. package/lib/metrics/props/RegionalAvailabilityMetricProps.js +3 -0
  128. package/lib/metrics/props/RegionalLatencyMetricProps.d.ts +6 -0
  129. package/lib/metrics/props/RegionalLatencyMetricProps.js +3 -0
  130. package/lib/metrics/props/ServiceAvailabilityMetricProps.d.ts +23 -0
  131. package/lib/metrics/props/ServiceAvailabilityMetricProps.js +3 -0
  132. package/lib/metrics/props/ServiceLatencyMericProps.d.ts +23 -0
  133. package/lib/metrics/props/ServiceLatencyMericProps.js +3 -0
  134. package/lib/metrics/props/ZonalAvailabilityMetricProps.d.ts +10 -0
  135. package/lib/metrics/props/ZonalAvailabilityMetricProps.js +3 -0
  136. package/lib/metrics/props/ZonalLatencyMetricProps.d.ts +10 -0
  137. package/lib/metrics/props/ZonalLatencyMetricProps.js +3 -0
  138. package/lib/monitoring/src/monitoring-layer.zip +0 -0
  139. package/lib/outlier-detection/IOutlierDetectionFunction.d.ts +12 -0
  140. package/lib/outlier-detection/IOutlierDetectionFunction.js +3 -0
  141. package/lib/outlier-detection/OutlierDetectionFunction.d.ts +16 -0
  142. package/lib/outlier-detection/OutlierDetectionFunction.js +126 -0
  143. package/lib/outlier-detection/props/OutlierDetectionFunctionProps.d.ts +12 -0
  144. package/lib/outlier-detection/props/OutlierDetectionFunctionProps.js +3 -0
  145. package/lib/outlier-detection/src/outlier-detection.zip +0 -0
  146. package/lib/outlier-detection/src/scipy-layer.zip +0 -0
  147. package/lib/services/BasicServiceMultiAZObservability.d.ts +64 -0
  148. package/lib/services/BasicServiceMultiAZObservability.js +504 -0
  149. package/lib/services/CanaryMetrics.d.ts +17 -0
  150. package/lib/services/CanaryMetrics.js +19 -0
  151. package/lib/services/CanaryTestMetricsOverride.d.ts +39 -0
  152. package/lib/services/CanaryTestMetricsOverride.js +23 -0
  153. package/lib/services/ContributorInsightRuleDetails.d.ts +42 -0
  154. package/lib/services/ContributorInsightRuleDetails.js +23 -0
  155. package/lib/services/IBasicServiceMultiAZObservability.d.ts +45 -0
  156. package/lib/services/IBasicServiceMultiAZObservability.js +3 -0
  157. package/lib/services/ICanaryMetrics.d.ts +14 -0
  158. package/lib/services/ICanaryMetrics.js +3 -0
  159. package/lib/services/ICanaryTestMetricsOverride.d.ts +36 -0
  160. package/lib/services/ICanaryTestMetricsOverride.js +3 -0
  161. package/lib/services/IContributorInsightRuleDetails.d.ts +38 -0
  162. package/lib/services/IContributorInsightRuleDetails.js +3 -0
  163. package/lib/services/IInstrumentedServiceMultiAZObservability.d.ts +39 -0
  164. package/lib/services/IInstrumentedServiceMultiAZObservability.js +3 -0
  165. package/lib/services/IOperation.d.ts +75 -0
  166. package/lib/services/IOperation.js +3 -0
  167. package/lib/services/IOperationMetricDetails.d.ts +78 -0
  168. package/lib/services/IOperationMetricDetails.js +3 -0
  169. package/lib/services/IService.d.ts +76 -0
  170. package/lib/services/IService.js +3 -0
  171. package/lib/services/IServiceMetricDetails.d.ts +68 -0
  172. package/lib/services/IServiceMetricDetails.js +3 -0
  173. package/lib/services/InstrumentedServiceMultiAZObservability.d.ts +55 -0
  174. package/lib/services/InstrumentedServiceMultiAZObservability.js +310 -0
  175. package/lib/services/Operation.d.ts +78 -0
  176. package/lib/services/Operation.js +34 -0
  177. package/lib/services/OperationMetricDetails.d.ts +82 -0
  178. package/lib/services/OperationMetricDetails.js +50 -0
  179. package/lib/services/Service.d.ts +80 -0
  180. package/lib/services/Service.js +36 -0
  181. package/lib/services/ServiceMetricDetails.d.ts +71 -0
  182. package/lib/services/ServiceMetricDetails.js +28 -0
  183. package/lib/services/props/BasicServiceMultiAZObservabilityProps.d.ts +126 -0
  184. package/lib/services/props/BasicServiceMultiAZObservabilityProps.js +3 -0
  185. package/lib/services/props/CanaryMetricProps.d.ts +14 -0
  186. package/lib/services/props/CanaryMetricProps.js +3 -0
  187. package/lib/services/props/CanaryTestMetricsOverrideProps.d.ts +47 -0
  188. package/lib/services/props/CanaryTestMetricsOverrideProps.js +3 -0
  189. package/lib/services/props/ContributorInsightRuleDetailsProps.d.ts +38 -0
  190. package/lib/services/props/ContributorInsightRuleDetailsProps.js +3 -0
  191. package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.d.ts +88 -0
  192. package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.js +3 -0
  193. package/lib/services/props/MetricDimensions.d.ts +61 -0
  194. package/lib/services/props/MetricDimensions.js +63 -0
  195. package/lib/services/props/OperationMetricDetailsProps.d.ts +97 -0
  196. package/lib/services/props/OperationMetricDetailsProps.js +3 -0
  197. package/lib/services/props/OperationProps.d.ts +93 -0
  198. package/lib/services/props/OperationProps.js +3 -0
  199. package/lib/services/props/ServiceMetricDetailsProps.d.ts +68 -0
  200. package/lib/services/props/ServiceMetricDetailsProps.js +3 -0
  201. package/lib/services/props/ServiceProps.d.ts +69 -0
  202. package/lib/services/props/ServiceProps.js +3 -0
  203. package/lib/utilities/AvailabilityMetricType.d.ts +26 -0
  204. package/lib/utilities/AvailabilityMetricType.js +33 -0
  205. package/lib/utilities/LatencyMetricType.d.ts +13 -0
  206. package/lib/utilities/LatencyMetricType.js +20 -0
  207. package/lib/utilities/OutlierDetectionAlgorithm.d.ts +42 -0
  208. package/lib/utilities/OutlierDetectionAlgorithm.js +49 -0
  209. package/lib/utilities/StackWithDynamicSource.d.ts +14 -0
  210. package/lib/utilities/StackWithDynamicSource.js +82 -0
  211. package/package.json +176 -0
  212. package/rosetta/default.ts-fixture +13 -0
@@ -0,0 +1,68 @@
1
+ import { Duration } from 'aws-cdk-lib';
2
+ import { Unit } from 'aws-cdk-lib/aws-cloudwatch';
3
+ /**
4
+ * The properties for default service metric details
5
+ */
6
+ export interface ServiceMetricDetailsProps {
7
+ /**
8
+ * The CloudWatch metric namespace for these metrics
9
+ */
10
+ readonly metricNamespace: string;
11
+ /**
12
+ * The names of success indicating metrics
13
+ */
14
+ readonly successMetricNames: string[];
15
+ /**
16
+ * The names of fault indicating metrics
17
+ */
18
+ readonly faultMetricNames: string[];
19
+ /**
20
+ * The statistic used for alarms, for availability metrics this should
21
+ * be "Sum", for latency metrics it could something like "p99" or "p99.9"
22
+ */
23
+ readonly alarmStatistic: string;
24
+ /**
25
+ * The statistics for successes you want to appear on dashboards, for example, with
26
+ * latency metrics, you might want p50, p99, and tm99. For availability
27
+ * metrics this will typically just be "Sum".
28
+ *
29
+ * @default - For availability metrics, this will be "Sum", for latency metrics it will be just "p99"
30
+ */
31
+ readonly graphedSuccessStatistics?: string[];
32
+ /**
33
+ * The statistics for faults you want to appear on dashboards, for example, with
34
+ * latency metrics, you might want p50, p99, and tm99. For availability
35
+ * metrics this will typically just be "Sum".
36
+ *
37
+ * @default - For availability metrics, this will be "Sum", for latency metrics it will be just "p99"
38
+ */
39
+ readonly graphedFaultStatistics?: string[];
40
+ /**
41
+ * The unit used for these metrics
42
+ */
43
+ readonly unit: Unit;
44
+ /**
45
+ * The period for the metrics
46
+ */
47
+ readonly period: Duration;
48
+ /**
49
+ * The number of evaluation periods for latency and availabiltiy alarms
50
+ */
51
+ readonly evaluationPeriods: number;
52
+ /**
53
+ * The number of datapoints to alarm on for latency and availability alarms
54
+ */
55
+ readonly datapointsToAlarm: number;
56
+ /**
57
+ * The threshold for alarms associated with success metrics, for example if measuring
58
+ * success rate, the threshold may be 99, meaning you would want an alarm that triggers
59
+ * if success drops below 99%.
60
+ */
61
+ readonly successAlarmThreshold: number;
62
+ /**
63
+ * The threshold for alarms associated with fault metrics, for example if measuring
64
+ * fault rate, the threshold may be 1, meaning you would want an alarm that triggers
65
+ * if the fault rate goes above 1%.
66
+ */
67
+ readonly faultAlarmThreshold: number;
68
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZU1ldHJpY0RldGFpbHNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9wcm9wcy9TZXJ2aWNlTWV0cmljRGV0YWlsc1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFVuaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5cbi8qKlxuICogVGhlIHByb3BlcnRpZXMgZm9yIGRlZmF1bHQgc2VydmljZSBtZXRyaWMgZGV0YWlsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VNZXRyaWNEZXRhaWxzUHJvcHMge1xuICAvKipcbiAgICogVGhlIENsb3VkV2F0Y2ggbWV0cmljIG5hbWVzcGFjZSBmb3IgdGhlc2UgbWV0cmljc1xuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljTmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lcyBvZiBzdWNjZXNzIGluZGljYXRpbmcgbWV0cmljc1xuICAgKi9cbiAgcmVhZG9ubHkgc3VjY2Vzc01ldHJpY05hbWVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWVzIG9mIGZhdWx0IGluZGljYXRpbmcgbWV0cmljc1xuICAgKi9cbiAgcmVhZG9ubHkgZmF1bHRNZXRyaWNOYW1lczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0aXN0aWMgdXNlZCBmb3IgYWxhcm1zLCBmb3IgYXZhaWxhYmlsaXR5IG1ldHJpY3MgdGhpcyBzaG91bGRcbiAgICogYmUgXCJTdW1cIiwgZm9yIGxhdGVuY3kgbWV0cmljcyBpdCBjb3VsZCBzb21ldGhpbmcgbGlrZSBcInA5OVwiIG9yIFwicDk5LjlcIlxuICAgKi9cbiAgcmVhZG9ubHkgYWxhcm1TdGF0aXN0aWM6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXRpc3RpY3MgZm9yIHN1Y2Nlc3NlcyB5b3Ugd2FudCB0byBhcHBlYXIgb24gZGFzaGJvYXJkcywgZm9yIGV4YW1wbGUsIHdpdGhcbiAgICogbGF0ZW5jeSBtZXRyaWNzLCB5b3UgbWlnaHQgd2FudCBwNTAsIHA5OSwgYW5kIHRtOTkuIEZvciBhdmFpbGFiaWxpdHlcbiAgICogbWV0cmljcyB0aGlzIHdpbGwgdHlwaWNhbGx5IGp1c3QgYmUgXCJTdW1cIi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBGb3IgYXZhaWxhYmlsaXR5IG1ldHJpY3MsIHRoaXMgd2lsbCBiZSBcIlN1bVwiLCBmb3IgbGF0ZW5jeSBtZXRyaWNzIGl0IHdpbGwgYmUganVzdCBcInA5OVwiXG4gICAqL1xuICByZWFkb25seSBncmFwaGVkU3VjY2Vzc1N0YXRpc3RpY3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHN0YXRpc3RpY3MgZm9yIGZhdWx0cyB5b3Ugd2FudCB0byBhcHBlYXIgb24gZGFzaGJvYXJkcywgZm9yIGV4YW1wbGUsIHdpdGhcbiAgICogbGF0ZW5jeSBtZXRyaWNzLCB5b3UgbWlnaHQgd2FudCBwNTAsIHA5OSwgYW5kIHRtOTkuIEZvciBhdmFpbGFiaWxpdHlcbiAgICogbWV0cmljcyB0aGlzIHdpbGwgdHlwaWNhbGx5IGp1c3QgYmUgXCJTdW1cIi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBGb3IgYXZhaWxhYmlsaXR5IG1ldHJpY3MsIHRoaXMgd2lsbCBiZSBcIlN1bVwiLCBmb3IgbGF0ZW5jeSBtZXRyaWNzIGl0IHdpbGwgYmUganVzdCBcInA5OVwiXG4gICAqL1xuICByZWFkb25seSBncmFwaGVkRmF1bHRTdGF0aXN0aWNzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSB1bml0IHVzZWQgZm9yIHRoZXNlIG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IHVuaXQ6IFVuaXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwZXJpb2QgZm9yIHRoZSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBwZXJpb2Q6IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGV2YWx1YXRpb24gcGVyaW9kcyBmb3IgbGF0ZW5jeSBhbmQgYXZhaWxhYmlsdGl5IGFsYXJtc1xuICAgKi9cbiAgcmVhZG9ubHkgZXZhbHVhdGlvblBlcmlvZHM6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkYXRhcG9pbnRzIHRvIGFsYXJtIG9uIGZvciBsYXRlbmN5IGFuZCBhdmFpbGFiaWxpdHkgYWxhcm1zXG4gICAqL1xuICByZWFkb25seSBkYXRhcG9pbnRzVG9BbGFybTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdGhyZXNob2xkIGZvciBhbGFybXMgYXNzb2NpYXRlZCB3aXRoIHN1Y2Nlc3MgbWV0cmljcywgZm9yIGV4YW1wbGUgaWYgbWVhc3VyaW5nXG4gICAqIHN1Y2Nlc3MgcmF0ZSwgdGhlIHRocmVzaG9sZCBtYXkgYmUgOTksIG1lYW5pbmcgeW91IHdvdWxkIHdhbnQgYW4gYWxhcm0gdGhhdCB0cmlnZ2Vyc1xuICAgKiBpZiBzdWNjZXNzIGRyb3BzIGJlbG93IDk5JS5cbiAgICovXG4gIHJlYWRvbmx5IHN1Y2Nlc3NBbGFybVRocmVzaG9sZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdGhyZXNob2xkIGZvciBhbGFybXMgYXNzb2NpYXRlZCB3aXRoIGZhdWx0IG1ldHJpY3MsIGZvciBleGFtcGxlIGlmIG1lYXN1cmluZ1xuICAgKiBmYXVsdCByYXRlLCB0aGUgdGhyZXNob2xkIG1heSBiZSAxLCBtZWFuaW5nIHlvdSB3b3VsZCB3YW50IGFuIGFsYXJtIHRoYXQgdHJpZ2dlcnNcbiAgICogaWYgdGhlIGZhdWx0IHJhdGUgZ29lcyBhYm92ZSAxJS5cbiAgICovXG4gIHJlYWRvbmx5IGZhdWx0QWxhcm1UaHJlc2hvbGQ6IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,69 @@
1
+ import { Duration } from 'aws-cdk-lib';
2
+ import { ILoadBalancerV2 } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
3
+ import { AddCanaryTestProps } from '../../canaries/props/AddCanaryTestProps';
4
+ import { IContributorInsightRuleDetails } from '../IContributorInsightRuleDetails';
5
+ import { IServiceMetricDetails } from '../IServiceMetricDetails';
6
+ /**
7
+ * Properties to initialize a service
8
+ */
9
+ export interface ServiceProps {
10
+ /**
11
+ * The name of your service
12
+ */
13
+ readonly serviceName: string;
14
+ /**
15
+ * The base endpoint for this service, like "https://www.example.com". Operation
16
+ * paths will be appended to this endpoint for canary testing the service.
17
+ */
18
+ readonly baseUrl: string;
19
+ /**
20
+ * The fault count threshold that indicates the service is unhealthy. This is an absolute value of faults
21
+ * being produced by all critical operations in aggregate.
22
+ */
23
+ readonly faultCountThreshold: number;
24
+ /**
25
+ * A list of the Availability Zone names used by this application
26
+ */
27
+ readonly availabilityZoneNames: string[];
28
+ /**
29
+ * The period for which metrics for the service should be aggregated
30
+ */
31
+ readonly period: Duration;
32
+ /**
33
+ * The load balancer this service sits behind
34
+ *
35
+ * @default - Load balancer metrics won't be shown on dashboards
36
+ * and its ARN won't be included in top level alarm descriptions
37
+ * that automation can use to implement a zonal shift.
38
+ */
39
+ readonly loadBalancer?: ILoadBalancerV2;
40
+ /**
41
+ * Define these settings if you want to automatically add canary
42
+ * tests to your operations. Operations can individually opt out
43
+ * of canary test creation if you define this setting.
44
+ *
45
+ * @default - Automatic canary tests will not be created for
46
+ * operations in this service.
47
+ */
48
+ readonly canaryTestProps?: AddCanaryTestProps;
49
+ /**
50
+ * The default settings that are used for availability metrics
51
+ * for all operations unless specifically overridden in an
52
+ * operation definition.
53
+ */
54
+ readonly defaultAvailabilityMetricDetails: IServiceMetricDetails;
55
+ /**
56
+ * The default settings that are used for availability metrics
57
+ * for all operations unless specifically overridden in an
58
+ * operation definition.
59
+ */
60
+ readonly defaultLatencyMetricDetails: IServiceMetricDetails;
61
+ /**
62
+ * The default settings that are used for contributor insight
63
+ * rules.
64
+ *
65
+ * @default - No defaults are provided and must be specified per operation
66
+ * if the operation has logs that can be queried by contributor insights
67
+ */
68
+ readonly defaultContributorInsightRuleDetails?: IContributorInsightRuleDetails;
69
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZVByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3Byb3BzL1NlcnZpY2VQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJTG9hZEJhbGFuY2VyVjIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mic7XG5pbXBvcnQgeyBBZGRDYW5hcnlUZXN0UHJvcHMgfSBmcm9tICcuLi8uLi9jYW5hcmllcy9wcm9wcy9BZGRDYW5hcnlUZXN0UHJvcHMnO1xuaW1wb3J0IHsgSUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzIH0gZnJvbSAnLi4vSUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzJztcbmltcG9ydCB7IElTZXJ2aWNlTWV0cmljRGV0YWlscyB9IGZyb20gJy4uL0lTZXJ2aWNlTWV0cmljRGV0YWlscyc7XG5cbi8qKlxuICogUHJvcGVydGllcyB0byBpbml0aWFsaXplIGEgc2VydmljZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB5b3VyIHNlcnZpY2VcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGVuZHBvaW50IGZvciB0aGlzIHNlcnZpY2UsIGxpa2UgXCJodHRwczovL3d3dy5leGFtcGxlLmNvbVwiLiBPcGVyYXRpb25cbiAgICogcGF0aHMgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGlzIGVuZHBvaW50IGZvciBjYW5hcnkgdGVzdGluZyB0aGUgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZhdWx0IGNvdW50IHRocmVzaG9sZCB0aGF0IGluZGljYXRlcyB0aGUgc2VydmljZSBpcyB1bmhlYWx0aHkuIFRoaXMgaXMgYW4gYWJzb2x1dGUgdmFsdWUgb2YgZmF1bHRzXG4gICAqIGJlaW5nIHByb2R1Y2VkIGJ5IGFsbCBjcml0aWNhbCBvcGVyYXRpb25zIGluIGFnZ3JlZ2F0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGZhdWx0Q291bnRUaHJlc2hvbGQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHRoZSBBdmFpbGFiaWxpdHkgWm9uZSBuYW1lcyB1c2VkIGJ5IHRoaXMgYXBwbGljYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmVOYW1lczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBwZXJpb2QgZm9yIHdoaWNoIG1ldHJpY3MgZm9yIHRoZSBzZXJ2aWNlIHNob3VsZCBiZSBhZ2dyZWdhdGVkXG4gICAqL1xuICByZWFkb25seSBwZXJpb2Q6IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9hZCBiYWxhbmNlciB0aGlzIHNlcnZpY2Ugc2l0cyBiZWhpbmRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBMb2FkIGJhbGFuY2VyIG1ldHJpY3Mgd29uJ3QgYmUgc2hvd24gb24gZGFzaGJvYXJkc1xuICAgKiBhbmQgaXRzIEFSTiB3b24ndCBiZSBpbmNsdWRlZCBpbiB0b3AgbGV2ZWwgYWxhcm0gZGVzY3JpcHRpb25zXG4gICAqIHRoYXQgYXV0b21hdGlvbiBjYW4gdXNlIHRvIGltcGxlbWVudCBhIHpvbmFsIHNoaWZ0LlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyPzogSUxvYWRCYWxhbmNlclYyO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlc2Ugc2V0dGluZ3MgaWYgeW91IHdhbnQgdG8gYXV0b21hdGljYWxseSBhZGQgY2FuYXJ5XG4gICAqIHRlc3RzIHRvIHlvdXIgb3BlcmF0aW9ucy4gT3BlcmF0aW9ucyBjYW4gaW5kaXZpZHVhbGx5IG9wdCBvdXRcbiAgICogb2YgY2FuYXJ5IHRlc3QgY3JlYXRpb24gaWYgeW91IGRlZmluZSB0aGlzIHNldHRpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQXV0b21hdGljIGNhbmFyeSB0ZXN0cyB3aWxsIG5vdCBiZSBjcmVhdGVkIGZvclxuICAgKiBvcGVyYXRpb25zIGluIHRoaXMgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeVRlc3RQcm9wcz86IEFkZENhbmFyeVRlc3RQcm9wcztcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBhcmUgdXNlZCBmb3IgYXZhaWxhYmlsaXR5IG1ldHJpY3NcbiAgICogZm9yIGFsbCBvcGVyYXRpb25zIHVubGVzcyBzcGVjaWZpY2FsbHkgb3ZlcnJpZGRlbiBpbiBhblxuICAgKiBvcGVyYXRpb24gZGVmaW5pdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzOiBJU2VydmljZU1ldHJpY0RldGFpbHM7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHNldHRpbmdzIHRoYXQgYXJlIHVzZWQgZm9yIGF2YWlsYWJpbGl0eSBtZXRyaWNzXG4gICAqIGZvciBhbGwgb3BlcmF0aW9ucyB1bmxlc3Mgc3BlY2lmaWNhbGx5IG92ZXJyaWRkZW4gaW4gYW5cbiAgICogb3BlcmF0aW9uIGRlZmluaXRpb24uXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHM6IElTZXJ2aWNlTWV0cmljRGV0YWlscztcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBhcmUgdXNlZCBmb3IgY29udHJpYnV0b3IgaW5zaWdodFxuICAgKiBydWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZWZhdWx0cyBhcmUgcHJvdmlkZWQgYW5kIG11c3QgYmUgc3BlY2lmaWVkIHBlciBvcGVyYXRpb25cbiAgICogaWYgdGhlIG9wZXJhdGlvbiBoYXMgbG9ncyB0aGF0IGNhbiBiZSBxdWVyaWVkIGJ5IGNvbnRyaWJ1dG9yIGluc2lnaHRzXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Q29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHM/OiBJQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHM7XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Different availability metric types
3
+ */
4
+ export declare enum AvailabilityMetricType {
5
+ /**
6
+ * The success rate, i.e. (successful responses) / (successful + fault responses) * 100
7
+ */
8
+ SUCCESS_RATE = "Success_Rate",
9
+ /**
10
+ * The number of success responses as an absolute value
11
+ */
12
+ SUCCESS_COUNT = "Success_Count",
13
+ /**
14
+ * The fault rate, i.e. (fault responses) / (successful + fault responses) * 100
15
+ */
16
+ FAULT_RATE = "Fault_Rate",
17
+ /**
18
+ * The number of fault responses as an absolute value
19
+ */
20
+ FAULT_COUNT = "Fault_Count",
21
+ /**
22
+ * The number of requests received that resulted in either a fault or success. This
23
+ * does not include "error" responses that would be equivalent to 4xx responses.
24
+ */
25
+ REQUEST_COUNT = "Request_Count"
26
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.AvailabilityMetricType = void 0;
6
+ /**
7
+ * Different availability metric types
8
+ */
9
+ var AvailabilityMetricType;
10
+ (function (AvailabilityMetricType) {
11
+ /**
12
+ * The success rate, i.e. (successful responses) / (successful + fault responses) * 100
13
+ */
14
+ AvailabilityMetricType["SUCCESS_RATE"] = "Success_Rate";
15
+ /**
16
+ * The number of success responses as an absolute value
17
+ */
18
+ AvailabilityMetricType["SUCCESS_COUNT"] = "Success_Count";
19
+ /**
20
+ * The fault rate, i.e. (fault responses) / (successful + fault responses) * 100
21
+ */
22
+ AvailabilityMetricType["FAULT_RATE"] = "Fault_Rate";
23
+ /**
24
+ * The number of fault responses as an absolute value
25
+ */
26
+ AvailabilityMetricType["FAULT_COUNT"] = "Fault_Count";
27
+ /**
28
+ * The number of requests received that resulted in either a fault or success. This
29
+ * does not include "error" responses that would be equivalent to 4xx responses.
30
+ */
31
+ AvailabilityMetricType["REQUEST_COUNT"] = "Request_Count";
32
+ })(AvailabilityMetricType || (exports.AvailabilityMetricType = AvailabilityMetricType = {}));
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvQXZhaWxhYmlsaXR5TWV0cmljVHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQzs7O0FBRXRDOztHQUVHO0FBQ0gsSUFBWSxzQkEwQlg7QUExQkQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCx1REFBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILHlEQUErQixDQUFBO0lBRS9COztPQUVHO0lBQ0gsbURBQXlCLENBQUE7SUFFekI7O09BRUc7SUFDSCxxREFBMkIsQ0FBQTtJQUUzQjs7O09BR0c7SUFDSCx5REFBK0IsQ0FBQTtBQUNqQyxDQUFDLEVBMUJXLHNCQUFzQixzQ0FBdEIsc0JBQXNCLFFBMEJqQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBEaWZmZXJlbnQgYXZhaWxhYmlsaXR5IG1ldHJpYyB0eXBlc1xuICovXG5leHBvcnQgZW51bSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlIHtcbiAgLyoqXG4gICAqIFRoZSBzdWNjZXNzIHJhdGUsIGkuZS4gKHN1Y2Nlc3NmdWwgcmVzcG9uc2VzKSAvIChzdWNjZXNzZnVsICsgZmF1bHQgcmVzcG9uc2VzKSAqIDEwMFxuICAgKi9cbiAgU1VDQ0VTU19SQVRFID0gJ1N1Y2Nlc3NfUmF0ZScsXG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygc3VjY2VzcyByZXNwb25zZXMgYXMgYW4gYWJzb2x1dGUgdmFsdWVcbiAgICovXG4gIFNVQ0NFU1NfQ09VTlQgPSAnU3VjY2Vzc19Db3VudCcsXG5cbiAgLyoqXG4gICAqIFRoZSBmYXVsdCByYXRlLCBpLmUuIChmYXVsdCByZXNwb25zZXMpIC8gKHN1Y2Nlc3NmdWwgKyBmYXVsdCByZXNwb25zZXMpICogMTAwXG4gICAqL1xuICBGQVVMVF9SQVRFID0gJ0ZhdWx0X1JhdGUnLFxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGZhdWx0IHJlc3BvbnNlcyBhcyBhbiBhYnNvbHV0ZSB2YWx1ZVxuICAgKi9cbiAgRkFVTFRfQ09VTlQgPSAnRmF1bHRfQ291bnQnLFxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHJlcXVlc3RzIHJlY2VpdmVkIHRoYXQgcmVzdWx0ZWQgaW4gZWl0aGVyIGEgZmF1bHQgb3Igc3VjY2Vzcy4gVGhpc1xuICAgKiBkb2VzIG5vdCBpbmNsdWRlIFwiZXJyb3JcIiByZXNwb25zZXMgdGhhdCB3b3VsZCBiZSBlcXVpdmFsZW50IHRvIDR4eCByZXNwb25zZXMuXG4gICAqL1xuICBSRVFVRVNUX0NPVU5UID0gJ1JlcXVlc3RfQ291bnQnLFxufVxuIl19
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The type of latency metric
3
+ */
4
+ export declare enum LatencyMetricType {
5
+ /**
6
+ * Successful response latency
7
+ */
8
+ SUCCESS_LATENCY = "Success_Latency",
9
+ /**
10
+ * Fault response latency
11
+ */
12
+ FAULT_LATENCY = "Fault_Latency"
13
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.LatencyMetricType = void 0;
6
+ /**
7
+ * The type of latency metric
8
+ */
9
+ var LatencyMetricType;
10
+ (function (LatencyMetricType) {
11
+ /**
12
+ * Successful response latency
13
+ */
14
+ LatencyMetricType["SUCCESS_LATENCY"] = "Success_Latency";
15
+ /**
16
+ * Fault response latency
17
+ */
18
+ LatencyMetricType["FAULT_LATENCY"] = "Fault_Latency";
19
+ })(LatencyMetricType || (exports.LatencyMetricType = LatencyMetricType = {}));
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF0ZW5jeU1ldHJpY1R5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbGl0aWVzL0xhdGVuY3lNZXRyaWNUeXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDOzs7QUFFdEM7O0dBRUc7QUFDSCxJQUFZLGlCQVVYO0FBVkQsV0FBWSxpQkFBaUI7SUFDM0I7O09BRUc7SUFDSCx3REFBbUMsQ0FBQTtJQUVuQzs7T0FFRztJQUNILG9EQUErQixDQUFBO0FBQ2pDLENBQUMsRUFWVyxpQkFBaUIsaUNBQWpCLGlCQUFpQixRQVU1QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgdHlwZSBvZiBsYXRlbmN5IG1ldHJpY1xuICovXG5leHBvcnQgZW51bSBMYXRlbmN5TWV0cmljVHlwZSB7XG4gIC8qKlxuICAgKiBTdWNjZXNzZnVsIHJlc3BvbnNlIGxhdGVuY3lcbiAgICovXG4gIFNVQ0NFU1NfTEFURU5DWSA9ICdTdWNjZXNzX0xhdGVuY3knLFxuXG4gIC8qKlxuICAgKiBGYXVsdCByZXNwb25zZSBsYXRlbmN5XG4gICAqL1xuICBGQVVMVF9MQVRFTkNZID0gJ0ZhdWx0X0xhdGVuY3knLFxufVxuIl19
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Available algorithms for performing outlier detection
3
+ */
4
+ export declare enum OutlierDetectionAlgorithm {
5
+ /**
6
+ * Defines using a static value to compare skew in faults or
7
+ * high latency responses.
8
+ *
9
+ * A good default threshold for this is .7 meaning one AZ
10
+ * is responsible for 70% of the total errors or high latency responses
11
+ */
12
+ STATIC = "STATIC",
13
+ /**
14
+ * Uses the chi squared statistic to determine if there is a statistically
15
+ * significant skew in fault rate or high latency distribution
16
+ *
17
+ * A normal default threshold for this is 0.05, which means there is a 5% or
18
+ * less chance of the skew in errors or high latency responses occuring
19
+ */
20
+ CHI_SQUARED = "CHI_SQUARED",
21
+ /**
22
+ * Uses z-score to determine if the skew in faults or high latency respones
23
+ * exceeds a defined number of standard devations
24
+ *
25
+ * A good default threshold value for this is 2, meaning the outlier value is outside
26
+ * 95% of the normal distribution. Using 3 means the outlier is outside 99.7% of
27
+ * the normal distribution.
28
+ */
29
+ Z_SCORE = "Z_SCORE",
30
+ /**
31
+ * Uses Interquartile Range Method to determine an outlier for faults or latency
32
+ *
33
+ * No threshold is required for this method and will be ignored
34
+ */
35
+ IQR = "IQR",
36
+ /**
37
+ * Median Absolute Deviation (MAD) to determine an outlier for faults or latency
38
+ *
39
+ * A common default value threshold 3
40
+ */
41
+ MAD = "MAD"
42
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.OutlierDetectionAlgorithm = void 0;
6
+ /**
7
+ * Available algorithms for performing outlier detection
8
+ */
9
+ var OutlierDetectionAlgorithm;
10
+ (function (OutlierDetectionAlgorithm) {
11
+ /**
12
+ * Defines using a static value to compare skew in faults or
13
+ * high latency responses.
14
+ *
15
+ * A good default threshold for this is .7 meaning one AZ
16
+ * is responsible for 70% of the total errors or high latency responses
17
+ */
18
+ OutlierDetectionAlgorithm["STATIC"] = "STATIC";
19
+ /**
20
+ * Uses the chi squared statistic to determine if there is a statistically
21
+ * significant skew in fault rate or high latency distribution
22
+ *
23
+ * A normal default threshold for this is 0.05, which means there is a 5% or
24
+ * less chance of the skew in errors or high latency responses occuring
25
+ */
26
+ OutlierDetectionAlgorithm["CHI_SQUARED"] = "CHI_SQUARED";
27
+ /**
28
+ * Uses z-score to determine if the skew in faults or high latency respones
29
+ * exceeds a defined number of standard devations
30
+ *
31
+ * A good default threshold value for this is 2, meaning the outlier value is outside
32
+ * 95% of the normal distribution. Using 3 means the outlier is outside 99.7% of
33
+ * the normal distribution.
34
+ */
35
+ OutlierDetectionAlgorithm["Z_SCORE"] = "Z_SCORE";
36
+ /**
37
+ * Uses Interquartile Range Method to determine an outlier for faults or latency
38
+ *
39
+ * No threshold is required for this method and will be ignored
40
+ */
41
+ OutlierDetectionAlgorithm["IQR"] = "IQR";
42
+ /**
43
+ * Median Absolute Deviation (MAD) to determine an outlier for faults or latency
44
+ *
45
+ * A common default value threshold 3
46
+ */
47
+ OutlierDetectionAlgorithm["MAD"] = "MAD";
48
+ })(OutlierDetectionAlgorithm || (exports.OutlierDetectionAlgorithm = OutlierDetectionAlgorithm = {}));
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3V0bGllckRldGVjdGlvbkFsZ29yaXRobS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvT3V0bGllckRldGVjdGlvbkFsZ29yaXRobS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQzs7O0FBRXRDOztHQUVHO0FBQ0gsSUFBWSx5QkEwQ1g7QUExQ0QsV0FBWSx5QkFBeUI7SUFDbkM7Ozs7OztPQU1HO0lBQ0gsOENBQWlCLENBQUE7SUFFakI7Ozs7OztPQU1HO0lBQ0gsd0RBQTJCLENBQUE7SUFFM0I7Ozs7Ozs7T0FPRztJQUNILGdEQUFtQixDQUFBO0lBRW5COzs7O09BSUc7SUFDSCx3Q0FBVyxDQUFBO0lBRVg7Ozs7T0FJRztJQUNILHdDQUFXLENBQUE7QUFDYixDQUFDLEVBMUNXLHlCQUF5Qix5Q0FBekIseUJBQXlCLFFBMENwQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBBdmFpbGFibGUgYWxnb3JpdGhtcyBmb3IgcGVyZm9ybWluZyBvdXRsaWVyIGRldGVjdGlvblxuICovXG5leHBvcnQgZW51bSBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtIHtcbiAgLyoqXG4gICAqIERlZmluZXMgdXNpbmcgYSBzdGF0aWMgdmFsdWUgdG8gY29tcGFyZSBza2V3IGluIGZhdWx0cyBvclxuICAgKiBoaWdoIGxhdGVuY3kgcmVzcG9uc2VzLlxuICAgKlxuICAgKiBBIGdvb2QgZGVmYXVsdCB0aHJlc2hvbGQgZm9yIHRoaXMgaXMgLjcgbWVhbmluZyBvbmUgQVpcbiAgICogaXMgcmVzcG9uc2libGUgZm9yIDcwJSBvZiB0aGUgdG90YWwgZXJyb3JzIG9yIGhpZ2ggbGF0ZW5jeSByZXNwb25zZXNcbiAgICovXG4gIFNUQVRJQyA9ICdTVEFUSUMnLFxuXG4gIC8qKlxuICAgKiBVc2VzIHRoZSBjaGkgc3F1YXJlZCBzdGF0aXN0aWMgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGlzIGEgc3RhdGlzdGljYWxseVxuICAgKiBzaWduaWZpY2FudCBza2V3IGluIGZhdWx0IHJhdGUgb3IgaGlnaCBsYXRlbmN5IGRpc3RyaWJ1dGlvblxuICAgKlxuICAgKiBBIG5vcm1hbCBkZWZhdWx0IHRocmVzaG9sZCBmb3IgdGhpcyBpcyAwLjA1LCB3aGljaCBtZWFucyB0aGVyZSBpcyBhIDUlIG9yXG4gICAqIGxlc3MgY2hhbmNlIG9mIHRoZSBza2V3IGluIGVycm9ycyBvciBoaWdoIGxhdGVuY3kgcmVzcG9uc2VzIG9jY3VyaW5nXG4gICAqL1xuICBDSElfU1FVQVJFRCA9ICdDSElfU1FVQVJFRCcsXG5cbiAgLyoqXG4gICAqIFVzZXMgei1zY29yZSB0byBkZXRlcm1pbmUgaWYgdGhlIHNrZXcgaW4gZmF1bHRzIG9yIGhpZ2ggbGF0ZW5jeSByZXNwb25lc1xuICAgKiBleGNlZWRzIGEgZGVmaW5lZCBudW1iZXIgb2Ygc3RhbmRhcmQgZGV2YXRpb25zXG4gICAqXG4gICAqIEEgZ29vZCBkZWZhdWx0IHRocmVzaG9sZCB2YWx1ZSBmb3IgdGhpcyBpcyAyLCBtZWFuaW5nIHRoZSBvdXRsaWVyIHZhbHVlIGlzIG91dHNpZGVcbiAgICogOTUlIG9mIHRoZSBub3JtYWwgZGlzdHJpYnV0aW9uLiBVc2luZyAzIG1lYW5zIHRoZSBvdXRsaWVyIGlzIG91dHNpZGUgOTkuNyUgb2ZcbiAgICogdGhlIG5vcm1hbCBkaXN0cmlidXRpb24uXG4gICAqL1xuICBaX1NDT1JFID0gJ1pfU0NPUkUnLFxuXG4gIC8qKlxuICAgKiBVc2VzIEludGVycXVhcnRpbGUgUmFuZ2UgTWV0aG9kIHRvIGRldGVybWluZSBhbiBvdXRsaWVyIGZvciBmYXVsdHMgb3IgbGF0ZW5jeVxuICAgKlxuICAgKiBObyB0aHJlc2hvbGQgaXMgcmVxdWlyZWQgZm9yIHRoaXMgbWV0aG9kIGFuZCB3aWxsIGJlIGlnbm9yZWRcbiAgICovXG4gIElRUiA9ICdJUVInLFxuXG4gIC8qKlxuICAgKiBNZWRpYW4gQWJzb2x1dGUgRGV2aWF0aW9uIChNQUQpIHRvIGRldGVybWluZSBhbiBvdXRsaWVyIGZvciBmYXVsdHMgb3IgbGF0ZW5jeVxuICAgKlxuICAgKiBBIGNvbW1vbiBkZWZhdWx0IHZhbHVlIHRocmVzaG9sZCAzXG4gICAqL1xuICBNQUQgPSAnTUFEJyxcbn1cbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { NestedStack, NestedStackProps } from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+ export interface NestedStackWithDynamicSourceProps extends NestedStackProps {
4
+ assetsBucketsParameterName?: string;
5
+ assetsBucketPrefixParameterName?: string;
6
+ }
7
+ /**
8
+ * If you are using a dynamic location for assets and pass those as a variable
9
+ * in your top stack, this allows you to continue passing those down
10
+ */
11
+ export declare class StackWithDynamicSource extends NestedStack {
12
+ private static updateBaseParams;
13
+ constructor(scope: Construct, id: string, props: NestedStackWithDynamicSourceProps);
14
+ }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StackWithDynamicSource = void 0;
4
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ // SPDX-License-Identifier: Apache-2.0
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ /**
8
+ * If you are using a dynamic location for assets and pass those as a variable
9
+ * in your top stack, this allows you to continue passing those down
10
+ */
11
+ class StackWithDynamicSource extends aws_cdk_lib_1.NestedStack {
12
+ static updateBaseParams(scope, props) {
13
+ if (props.assetsBucketsParameterName !== undefined) {
14
+ let currentNode = scope;
15
+ while (currentNode !== undefined && !(currentNode instanceof aws_cdk_lib_1.Stack)) {
16
+ currentNode = currentNode.node.scope;
17
+ }
18
+ if (currentNode !== undefined) {
19
+ let assetsBucket = currentNode.node.tryFindChild(props.assetsBucketsParameterName);
20
+ if (assetsBucket !== undefined &&
21
+ assetsBucket instanceof aws_cdk_lib_1.CfnParameter) {
22
+ if (props.parameters === undefined) {
23
+ let tmp = {
24
+ parameters: {},
25
+ timeout: props.timeout,
26
+ notificationArns: props.notificationArns,
27
+ removalPolicy: props.removalPolicy,
28
+ description: props.description,
29
+ };
30
+ if (tmp.parameters !== undefined) {
31
+ tmp.parameters[props.assetsBucketsParameterName] =
32
+ assetsBucket.valueAsString;
33
+ if (props.assetsBucketPrefixParameterName !== undefined) {
34
+ let assetsBucketPrefix = currentNode.node.tryFindChild(props.assetsBucketPrefixParameterName);
35
+ if (assetsBucketPrefix !== undefined &&
36
+ assetsBucketPrefix instanceof aws_cdk_lib_1.CfnParameter) {
37
+ tmp.parameters[props.assetsBucketPrefixParameterName] =
38
+ assetsBucketPrefix.valueAsString;
39
+ }
40
+ }
41
+ }
42
+ return tmp;
43
+ }
44
+ else {
45
+ props.parameters[props.assetsBucketsParameterName] =
46
+ assetsBucket.valueAsString;
47
+ if (props.assetsBucketPrefixParameterName !== undefined) {
48
+ let assetsBucketPrefix = currentNode.node.tryFindChild(props.assetsBucketPrefixParameterName);
49
+ if (assetsBucketPrefix !== undefined &&
50
+ assetsBucketPrefix instanceof aws_cdk_lib_1.CfnParameter) {
51
+ props.parameters[props.assetsBucketPrefixParameterName] =
52
+ assetsBucketPrefix.valueAsString;
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ return props;
60
+ }
61
+ constructor(scope, id, props) {
62
+ super(scope, id, StackWithDynamicSource.updateBaseParams(scope, props));
63
+ let currentNode = this;
64
+ while (currentNode !== undefined && !(currentNode instanceof aws_cdk_lib_1.Stack)) {
65
+ currentNode = currentNode.node.scope;
66
+ }
67
+ if (currentNode !== undefined) {
68
+ if (props.assetsBucketsParameterName !== undefined) {
69
+ new aws_cdk_lib_1.CfnParameter(currentNode, props.assetsBucketsParameterName, {
70
+ type: 'String',
71
+ });
72
+ }
73
+ if (props.assetsBucketPrefixParameterName !== undefined) {
74
+ new aws_cdk_lib_1.CfnParameter(currentNode, props.assetsBucketPrefixParameterName, {
75
+ type: 'String',
76
+ });
77
+ }
78
+ }
79
+ }
80
+ }
81
+ exports.StackWithDynamicSource = StackWithDynamicSource;
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2tXaXRoRHluYW1pY1NvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvU3RhY2tXaXRoRHluYW1pY1NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBQ3RDLDZDQUtxQjtBQVFyQjs7O0dBR0c7QUFDSCxNQUFhLHNCQUF1QixTQUFRLHlCQUFXO0lBQzdDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDN0IsS0FBaUIsRUFDakIsS0FBd0M7UUFFeEMsSUFBSSxLQUFLLENBQUMsMEJBQTBCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkQsSUFBSSxXQUFXLEdBQTJCLEtBQUssQ0FBQztZQUVoRCxPQUFPLFdBQVcsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLFdBQVcsWUFBWSxtQkFBSyxDQUFDLEVBQUUsQ0FBQztnQkFDcEUsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3ZDLENBQUM7WUFFRCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxZQUFZLEdBQ2QsV0FDRCxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7Z0JBRXRELElBQ0UsWUFBWSxLQUFLLFNBQVM7b0JBQzFCLFlBQVksWUFBWSwwQkFBWSxFQUNwQyxDQUFDO29CQUNELElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDbkMsSUFBSSxHQUFHLEdBQXFCOzRCQUMxQixVQUFVLEVBQUUsRUFBRTs0QkFDZCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87NEJBQ3RCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7NEJBQ3hDLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTs0QkFDbEMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO3lCQUMvQixDQUFDO3dCQUVGLElBQUksR0FBRyxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQzs0QkFDakMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUM7Z0NBQzlDLFlBQVksQ0FBQyxhQUFhLENBQUM7NEJBRTdCLElBQUksS0FBSyxDQUFDLCtCQUErQixLQUFLLFNBQVMsRUFBRSxDQUFDO2dDQUN4RCxJQUFJLGtCQUFrQixHQUNwQixXQUNELENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztnQ0FDM0QsSUFDRSxrQkFBa0IsS0FBSyxTQUFTO29DQUNoQyxrQkFBa0IsWUFBWSwwQkFBWSxFQUMxQyxDQUFDO29DQUNELEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDO3dDQUNuRCxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7Z0NBQ3JDLENBQUM7NEJBQ0gsQ0FBQzt3QkFDSCxDQUFDO3dCQUVELE9BQU8sR0FBRyxDQUFDO29CQUNiLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQzs0QkFDaEQsWUFBWSxDQUFDLGFBQWEsQ0FBQzt3QkFFN0IsSUFBSSxLQUFLLENBQUMsK0JBQStCLEtBQUssU0FBUyxFQUFFLENBQUM7NEJBQ3hELElBQUksa0JBQWtCLEdBQ3BCLFdBQ0QsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDOzRCQUUzRCxJQUNFLGtCQUFrQixLQUFLLFNBQVM7Z0NBQ2hDLGtCQUFrQixZQUFZLDBCQUFZLEVBQzFDLENBQUM7Z0NBQ0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUM7b0NBQ3JELGtCQUFrQixDQUFDLGFBQWEsQ0FBQzs0QkFDckMsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUF5QixDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUF3QztRQUV4QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV4RSxJQUFJLFdBQVcsR0FBMkIsSUFBSSxDQUFDO1FBRS9DLE9BQU8sV0FBVyxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsV0FBVyxZQUFZLG1CQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BFLFdBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN2QyxDQUFDO1FBRUQsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUIsSUFBSSxLQUFLLENBQUMsMEJBQTBCLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ25ELElBQUksMEJBQVksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLDBCQUEwQixFQUFFO29CQUM5RCxJQUFJLEVBQUUsUUFBUTtpQkFDZixDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsK0JBQStCLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3hELElBQUksMEJBQVksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLCtCQUErQixFQUFFO29CQUNuRSxJQUFJLEVBQUUsUUFBUTtpQkFDZixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXJHRCx3REFxR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQge1xuICBDZm5QYXJhbWV0ZXIsXG4gIE5lc3RlZFN0YWNrLFxuICBOZXN0ZWRTdGFja1Byb3BzLFxuICBTdGFjayxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmVzdGVkU3RhY2tXaXRoRHluYW1pY1NvdXJjZVByb3BzIGV4dGVuZHMgTmVzdGVkU3RhY2tQcm9wcyB7XG4gIGFzc2V0c0J1Y2tldHNQYXJhbWV0ZXJOYW1lPzogc3RyaW5nO1xuICBhc3NldHNCdWNrZXRQcmVmaXhQYXJhbWV0ZXJOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIElmIHlvdSBhcmUgdXNpbmcgYSBkeW5hbWljIGxvY2F0aW9uIGZvciBhc3NldHMgYW5kIHBhc3MgdGhvc2UgYXMgYSB2YXJpYWJsZVxuICogaW4geW91ciB0b3Agc3RhY2ssIHRoaXMgYWxsb3dzIHlvdSB0byBjb250aW51ZSBwYXNzaW5nIHRob3NlIGRvd25cbiAqL1xuZXhwb3J0IGNsYXNzIFN0YWNrV2l0aER5bmFtaWNTb3VyY2UgZXh0ZW5kcyBOZXN0ZWRTdGFjayB7XG4gIHByaXZhdGUgc3RhdGljIHVwZGF0ZUJhc2VQYXJhbXMoXG4gICAgc2NvcGU6IElDb25zdHJ1Y3QsXG4gICAgcHJvcHM6IE5lc3RlZFN0YWNrV2l0aER5bmFtaWNTb3VyY2VQcm9wcyxcbiAgKTogTmVzdGVkU3RhY2tQcm9wcyB7XG4gICAgaWYgKHByb3BzLmFzc2V0c0J1Y2tldHNQYXJhbWV0ZXJOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBjdXJyZW50Tm9kZTogSUNvbnN0cnVjdCB8IHVuZGVmaW5lZCA9IHNjb3BlO1xuXG4gICAgICB3aGlsZSAoY3VycmVudE5vZGUgIT09IHVuZGVmaW5lZCAmJiAhKGN1cnJlbnROb2RlIGluc3RhbmNlb2YgU3RhY2spKSB7XG4gICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubm9kZS5zY29wZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGN1cnJlbnROb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IGFzc2V0c0J1Y2tldDogSUNvbnN0cnVjdCB8IHVuZGVmaW5lZCA9IChcbiAgICAgICAgICBjdXJyZW50Tm9kZSBhcyBTdGFja1xuICAgICAgICApLm5vZGUudHJ5RmluZENoaWxkKHByb3BzLmFzc2V0c0J1Y2tldHNQYXJhbWV0ZXJOYW1lKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgYXNzZXRzQnVja2V0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBhc3NldHNCdWNrZXQgaW5zdGFuY2VvZiBDZm5QYXJhbWV0ZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHByb3BzLnBhcmFtZXRlcnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbGV0IHRtcDogTmVzdGVkU3RhY2tQcm9wcyA9IHtcbiAgICAgICAgICAgICAgcGFyYW1ldGVyczoge30sXG4gICAgICAgICAgICAgIHRpbWVvdXQ6IHByb3BzLnRpbWVvdXQsXG4gICAgICAgICAgICAgIG5vdGlmaWNhdGlvbkFybnM6IHByb3BzLm5vdGlmaWNhdGlvbkFybnMsXG4gICAgICAgICAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3ksXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmICh0bXAucGFyYW1ldGVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHRtcC5wYXJhbWV0ZXJzW3Byb3BzLmFzc2V0c0J1Y2tldHNQYXJhbWV0ZXJOYW1lXSA9XG4gICAgICAgICAgICAgICAgYXNzZXRzQnVja2V0LnZhbHVlQXNTdHJpbmc7XG5cbiAgICAgICAgICAgICAgaWYgKHByb3BzLmFzc2V0c0J1Y2tldFByZWZpeFBhcmFtZXRlck5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGxldCBhc3NldHNCdWNrZXRQcmVmaXg6IElDb25zdHJ1Y3QgfCB1bmRlZmluZWQgPSAoXG4gICAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZSBhcyBTdGFja1xuICAgICAgICAgICAgICAgICkubm9kZS50cnlGaW5kQ2hpbGQocHJvcHMuYXNzZXRzQnVja2V0UHJlZml4UGFyYW1ldGVyTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgYXNzZXRzQnVja2V0UHJlZml4ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgIGFzc2V0c0J1Y2tldFByZWZpeCBpbnN0YW5jZW9mIENmblBhcmFtZXRlclxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgdG1wLnBhcmFtZXRlcnNbcHJvcHMuYXNzZXRzQnVja2V0UHJlZml4UGFyYW1ldGVyTmFtZV0gPVxuICAgICAgICAgICAgICAgICAgICBhc3NldHNCdWNrZXRQcmVmaXgudmFsdWVBc1N0cmluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRtcDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvcHMucGFyYW1ldGVyc1twcm9wcy5hc3NldHNCdWNrZXRzUGFyYW1ldGVyTmFtZV0gPVxuICAgICAgICAgICAgICBhc3NldHNCdWNrZXQudmFsdWVBc1N0cmluZztcblxuICAgICAgICAgICAgaWYgKHByb3BzLmFzc2V0c0J1Y2tldFByZWZpeFBhcmFtZXRlck5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsZXQgYXNzZXRzQnVja2V0UHJlZml4OiBJQ29uc3RydWN0IHwgdW5kZWZpbmVkID0gKFxuICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlIGFzIFN0YWNrXG4gICAgICAgICAgICAgICkubm9kZS50cnlGaW5kQ2hpbGQocHJvcHMuYXNzZXRzQnVja2V0UHJlZml4UGFyYW1ldGVyTmFtZSk7XG5cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGFzc2V0c0J1Y2tldFByZWZpeCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgYXNzZXRzQnVja2V0UHJlZml4IGluc3RhbmNlb2YgQ2ZuUGFyYW1ldGVyXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHByb3BzLnBhcmFtZXRlcnNbcHJvcHMuYXNzZXRzQnVja2V0UHJlZml4UGFyYW1ldGVyTmFtZV0gPVxuICAgICAgICAgICAgICAgICAgYXNzZXRzQnVja2V0UHJlZml4LnZhbHVlQXNTdHJpbmc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHMgYXMgTmVzdGVkU3RhY2tQcm9wcztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogTmVzdGVkU3RhY2tXaXRoRHluYW1pY1NvdXJjZVByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIFN0YWNrV2l0aER5bmFtaWNTb3VyY2UudXBkYXRlQmFzZVBhcmFtcyhzY29wZSwgcHJvcHMpKTtcblxuICAgIGxldCBjdXJyZW50Tm9kZTogSUNvbnN0cnVjdCB8IHVuZGVmaW5lZCA9IHRoaXM7XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUgIT09IHVuZGVmaW5lZCAmJiAhKGN1cnJlbnROb2RlIGluc3RhbmNlb2YgU3RhY2spKSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5vZGUuc2NvcGU7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnROb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChwcm9wcy5hc3NldHNCdWNrZXRzUGFyYW1ldGVyTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5ldyBDZm5QYXJhbWV0ZXIoY3VycmVudE5vZGUsIHByb3BzLmFzc2V0c0J1Y2tldHNQYXJhbWV0ZXJOYW1lLCB7XG4gICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHMuYXNzZXRzQnVja2V0UHJlZml4UGFyYW1ldGVyTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5ldyBDZm5QYXJhbWV0ZXIoY3VycmVudE5vZGUsIHByb3BzLmFzc2V0c0J1Y2tldFByZWZpeFBhcmFtZXRlck5hbWUsIHtcbiAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
package/package.json ADDED
@@ -0,0 +1,176 @@
1
+ {
2
+ "name": "@cdklabs/multi-az-observability",
3
+ "description": "A CDK construct for implementing multi-AZ observability to detect single AZ impairments",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/cdklabs/cdk-multi-az-observability/"
7
+ },
8
+ "scripts": {
9
+ "build": "npx projen build",
10
+ "build-assets": "npx projen build-assets",
11
+ "build-canary-function": "npx projen build-canary-function",
12
+ "build-monitoring-layer": "npx projen build-monitoring-layer",
13
+ "build-outlier-detection-function": "npx projen build-outlier-detection-function",
14
+ "build-scipy-layer": "npx projen build-scipy-layer",
15
+ "bump": "npx projen bump",
16
+ "clobber": "npx projen clobber",
17
+ "compat": "npx projen compat",
18
+ "compile": "npx projen compile",
19
+ "default": "npx projen default",
20
+ "docgen": "npx projen docgen",
21
+ "eject": "npx projen eject",
22
+ "integ": "npx projen integ",
23
+ "integ:update": "npx projen integ:update",
24
+ "package": "npx projen package",
25
+ "package-all": "npx projen package-all",
26
+ "package:dotnet": "npx projen package:dotnet",
27
+ "package:go": "npx projen package:go",
28
+ "package:java": "npx projen package:java",
29
+ "package:js": "npx projen package:js",
30
+ "package:python": "npx projen package:python",
31
+ "post-compile": "npx projen post-compile",
32
+ "post-upgrade": "npx projen post-upgrade",
33
+ "pre-compile": "npx projen pre-compile",
34
+ "release": "npx projen release",
35
+ "rosetta:extract": "npx projen rosetta:extract",
36
+ "test": "npx projen test",
37
+ "test:watch": "npx projen test:watch",
38
+ "unbump": "npx projen unbump",
39
+ "upgrade": "npx projen upgrade",
40
+ "upgrade-cdklabs-projen-project-types": "npx projen upgrade-cdklabs-projen-project-types",
41
+ "upgrade-dev-deps": "npx projen upgrade-dev-deps",
42
+ "watch": "npx projen watch",
43
+ "projen": "npx projen"
44
+ },
45
+ "author": {
46
+ "name": "Amazon Web Services",
47
+ "email": "aws-cdk-dev@amazon.com",
48
+ "organization": true
49
+ },
50
+ "devDependencies": {
51
+ "@aws-cdk/integ-runner": "latest",
52
+ "@aws-cdk/integ-tests-alpha": "latest",
53
+ "@types/jest": "^29.5.14",
54
+ "@types/node": "^18",
55
+ "aws-cdk-lib": "2.173.1",
56
+ "cdk-nag": "^2.34.23",
57
+ "cdklabs-projen-project-types": "^0.1.211",
58
+ "commit-and-tag-version": "^12",
59
+ "constructs": "10.0.5",
60
+ "jest": "^29.7.0",
61
+ "jest-junit": "^15",
62
+ "jsii": "~5.5.0",
63
+ "jsii-diff": "^1.105.0",
64
+ "jsii-docgen": "^10.5.0",
65
+ "jsii-pacmak": "^1.105.0",
66
+ "jsii-rosetta": "~5.5.0",
67
+ "prettier": "^3.3.3",
68
+ "projen": "^0.90.5",
69
+ "ts-jest": "^29.2.5",
70
+ "ts-node": "^10.9.2",
71
+ "typescript": "^5.6.3"
72
+ },
73
+ "peerDependencies": {
74
+ "aws-cdk-lib": "^2.173.1",
75
+ "constructs": "^10.0.5"
76
+ },
77
+ "keywords": [
78
+ "aws-cdk",
79
+ "cdk",
80
+ "cloudwatch",
81
+ "monitoring",
82
+ "multi-az",
83
+ "observability",
84
+ "resilience"
85
+ ],
86
+ "engines": {
87
+ "node": ">= 18.12.0"
88
+ },
89
+ "main": "lib/index.js",
90
+ "license": "Apache-2.0",
91
+ "homepage": "https://github.com/cdklabs/cdk-multi-az-observability",
92
+ "publishConfig": {
93
+ "access": "public"
94
+ },
95
+ "version": "0.0.0-alpha.0",
96
+ "jest": {
97
+ "coverageProvider": "v8",
98
+ "roots": [
99
+ "<rootDir>/test"
100
+ ],
101
+ "testMatch": [
102
+ "**/*.test.ts",
103
+ "<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)",
104
+ "<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)",
105
+ "<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)",
106
+ "<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"
107
+ ],
108
+ "clearMocks": true,
109
+ "collectCoverage": true,
110
+ "coverageReporters": [
111
+ "json",
112
+ "lcov",
113
+ "clover",
114
+ "cobertura",
115
+ "text"
116
+ ],
117
+ "coverageDirectory": "coverage",
118
+ "coveragePathIgnorePatterns": [
119
+ "/node_modules/"
120
+ ],
121
+ "testPathIgnorePatterns": [
122
+ "/node_modules/"
123
+ ],
124
+ "watchPathIgnorePatterns": [
125
+ "/node_modules/"
126
+ ],
127
+ "reporters": [
128
+ "default",
129
+ [
130
+ "jest-junit",
131
+ {
132
+ "outputDirectory": "test-reports"
133
+ }
134
+ ]
135
+ ],
136
+ "transform": {
137
+ "^.+\\.[t]sx?$": [
138
+ "ts-jest",
139
+ {
140
+ "tsconfig": "tsconfig.dev.json"
141
+ }
142
+ ]
143
+ }
144
+ },
145
+ "types": "lib/index.d.ts",
146
+ "stability": "experimental",
147
+ "jsii": {
148
+ "outdir": "dist",
149
+ "targets": {
150
+ "java": {
151
+ "package": "io.github.cdklabs.multiazobservability",
152
+ "maven": {
153
+ "groupId": "io.github.cdklabs",
154
+ "artifactId": "cdk-multi-az-observability"
155
+ }
156
+ },
157
+ "python": {
158
+ "distName": "cdklabs.multi-az-observability",
159
+ "module": "cdklabs.multi_az_observability"
160
+ },
161
+ "dotnet": {
162
+ "namespace": "Cdklabs.MultiAZObservability",
163
+ "packageId": "Cdklabs.MultiAZObservability"
164
+ },
165
+ "go": {
166
+ "moduleName": "github.com/cdklabs/cdk-multi-az-observability-go",
167
+ "packageName": "multi-az-observability"
168
+ }
169
+ },
170
+ "tsc": {
171
+ "outDir": "lib",
172
+ "rootDir": "src"
173
+ }
174
+ },
175
+ "//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\"."
176
+ }