UNPKG

@pepperize/cdk-route53-health-check

Version:

Create Route53 HealthChecks to monitor TCP, HTTP, HTTPS endpoints, CloudWatch Alarms and other Route53 HealthChecks.

67 lines 8.96 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.CalculatedHealthCheck = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const cloudwatch = require("aws-cdk-lib/aws-cloudwatch"); const route53 = require("aws-cdk-lib/aws-route53"); const health_check_1 = require("./health-check"); const health_check_type_1 = require("./health-check-type"); /** * Create a Route53 HealthCheck that monitors other Route53 HealthChecks. * * <b>Example</b> * ```typescript * const healthCheck = new EndpointHealthCheck(stack, "HealthCheck", { * domainName: "pepperize.com", * }); * new CalculatedHealthCheck(stack, "CalculatedHealthCheck", { * childHealthChecks: [healthCheck], * }); * ``` * @link https://docs.aws.amazon.com/de_de/AWSCloudFormation/latest/UserGuide/aws-resource-route53-healthcheck.html#aws-resource-route53-healthcheck-properties * * @resource AWS::Route53::HealthCheck */ class CalculatedHealthCheck extends health_check_1.HealthCheckBase { constructor(scope, id, props) { super(scope, id); this.childHealthChecks = props.childHealthChecks ?? []; if (this.childHealthChecks.length > 256) { aws_cdk_lib_1.Annotations.of(this).addError("ChildHealthChecks has to be smaller than 256"); } if (undefined != props.healthThreshold && props.healthThreshold > 256) { aws_cdk_lib_1.Annotations.of(this).addError("HealthThreshold has to be smaller than 256"); } const resource = new route53.CfnHealthCheck(this, "Resource", { healthCheckConfig: { childHealthChecks: aws_cdk_lib_1.Lazy.list({ produce: () => this.childHealthChecks.map((healthCheck) => healthCheck.healthCheckId), }), healthThreshold: props.healthThreshold, type: health_check_type_1.HealthCheckType.CALCULATED, }, healthCheckTags: this.resolveSafeTags(), }); this.healthCheckId = resource.attrHealthCheckId; if (props.healthCheckName) { aws_cdk_lib_1.Tags.of(this).add("Name", props.healthCheckName); } } /** * The number of ChildHealthChecks that are healthy that Route53 is monitoring. * * Valid statistics: Average (recommended), Minimum, Maximum */ metricChildHealthCheckHealthyCount(props) { return this.metric("ChildHealthCheckHealthyCount", { statistic: cloudwatch.Statistic.AVERAGE, ...props }); } addChildHealthCheck(healthCheck) { this.childHealthChecks.push(healthCheck); } } exports.CalculatedHealthCheck = CalculatedHealthCheck; _a = JSII_RTTI_SYMBOL_1; CalculatedHealthCheck[_a] = { fqn: "@pepperize/cdk-route53-health-check.CalculatedHealthCheck", version: "0.0.755" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlZC1oZWFsdGgtY2hlY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2FsY3VsYXRlZC1oZWFsdGgtY2hlY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBc0Q7QUFDdEQseURBQXlEO0FBQ3pELG1EQUFtRDtBQUVuRCxpREFBbUY7QUFDbkYsMkRBQXNEO0FBYXREOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQWEscUJBQXNCLFNBQVEsOEJBQWU7SUFLeEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO1FBRXZELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUN4Qyx5QkFBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNoRixDQUFDO1FBRUQsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ3RFLHlCQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM1RCxpQkFBaUIsRUFBRTtnQkFDakIsaUJBQWlCLEVBQUUsa0JBQUksQ0FBQyxJQUFJLENBQUM7b0JBQzNCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO2lCQUN0RixDQUFDO2dCQUNGLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtnQkFDdEMsSUFBSSxFQUFFLG1DQUFlLENBQUMsVUFBVTthQUNqQztZQUNELGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFO1NBQ3hDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1FBRWhELElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFCLGtCQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGtDQUFrQyxDQUFDLEtBQWdDO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVNLG1CQUFtQixDQUFDLFdBQXlCO1FBQ2xELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7QUEvQ0gsc0RBZ0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5ub3RhdGlvbnMsIExhenksIFRhZ3MgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGNsb3Vkd2F0Y2ggZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5pbXBvcnQgKiBhcyByb3V0ZTUzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEhlYWx0aENoZWNrQmFzZSwgSGVhbHRoQ2hlY2tPcHRpb25zLCBJSGVhbHRoQ2hlY2sgfSBmcm9tIFwiLi9oZWFsdGgtY2hlY2tcIjtcbmltcG9ydCB7IEhlYWx0aENoZWNrVHlwZSB9IGZyb20gXCIuL2hlYWx0aC1jaGVjay10eXBlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsY3VsYXRlZEhlYWx0aENoZWNrUHJvcHMgZXh0ZW5kcyBIZWFsdGhDaGVja09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgSGVhbHRoQ2hlY2sgdGhhdCBtb25pdG9ycyBvdGhlciBSb3V0ZTUzIEhlYWx0aENoZWNrcy5cbiAgICovXG4gIHJlYWRvbmx5IGNoaWxkSGVhbHRoQ2hlY2tzPzogSUhlYWx0aENoZWNrW107XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNoaWxkIEhlYWx0aENoZWNrcyB0aGF0IEFtYXpvbiBSb3V0ZTUzIG11c3QgY29uc2lkZXIgaGVhbHRoeVxuICAgKi9cbiAgcmVhZG9ubHkgaGVhbHRoVGhyZXNob2xkPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIFJvdXRlNTMgSGVhbHRoQ2hlY2sgdGhhdCBtb25pdG9ycyBvdGhlciBSb3V0ZTUzIEhlYWx0aENoZWNrcy5cbiAqXG4gKiA8Yj5FeGFtcGxlPC9iPlxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgaGVhbHRoQ2hlY2sgPSBuZXcgRW5kcG9pbnRIZWFsdGhDaGVjayhzdGFjaywgXCJIZWFsdGhDaGVja1wiLCB7XG4gKiAgIGRvbWFpbk5hbWU6IFwicGVwcGVyaXplLmNvbVwiLFxuICogfSk7XG4gKiBuZXcgQ2FsY3VsYXRlZEhlYWx0aENoZWNrKHN0YWNrLCBcIkNhbGN1bGF0ZWRIZWFsdGhDaGVja1wiLCB7XG4gKiAgIGNoaWxkSGVhbHRoQ2hlY2tzOiBbaGVhbHRoQ2hlY2tdLFxuICogfSk7XG4gKiBgYGBcbiAqIEBsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kZV9kZS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1yb3V0ZTUzLWhlYWx0aGNoZWNrLmh0bWwjYXdzLXJlc291cmNlLXJvdXRlNTMtaGVhbHRoY2hlY2stcHJvcGVydGllc1xuICpcbiAqIEByZXNvdXJjZSBBV1M6OlJvdXRlNTM6OkhlYWx0aENoZWNrXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWxjdWxhdGVkSGVhbHRoQ2hlY2sgZXh0ZW5kcyBIZWFsdGhDaGVja0Jhc2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgaGVhbHRoQ2hlY2tJZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgY2hpbGRIZWFsdGhDaGVja3M6IElIZWFsdGhDaGVja1tdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDYWxjdWxhdGVkSGVhbHRoQ2hlY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmNoaWxkSGVhbHRoQ2hlY2tzID0gcHJvcHMuY2hpbGRIZWFsdGhDaGVja3MgPz8gW107XG5cbiAgICBpZiAodGhpcy5jaGlsZEhlYWx0aENoZWNrcy5sZW5ndGggPiAyNTYpIHtcbiAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZEVycm9yKFwiQ2hpbGRIZWFsdGhDaGVja3MgaGFzIHRvIGJlIHNtYWxsZXIgdGhhbiAyNTZcIik7XG4gICAgfVxuXG4gICAgaWYgKHVuZGVmaW5lZCAhPSBwcm9wcy5oZWFsdGhUaHJlc2hvbGQgJiYgcHJvcHMuaGVhbHRoVGhyZXNob2xkID4gMjU2KSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRFcnJvcihcIkhlYWx0aFRocmVzaG9sZCBoYXMgdG8gYmUgc21hbGxlciB0aGFuIDI1NlwiKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyByb3V0ZTUzLkNmbkhlYWx0aENoZWNrKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgaGVhbHRoQ2hlY2tDb25maWc6IHtcbiAgICAgICAgY2hpbGRIZWFsdGhDaGVja3M6IExhenkubGlzdCh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5jaGlsZEhlYWx0aENoZWNrcy5tYXAoKGhlYWx0aENoZWNrKSA9PiBoZWFsdGhDaGVjay5oZWFsdGhDaGVja0lkKSxcbiAgICAgICAgfSksXG4gICAgICAgIGhlYWx0aFRocmVzaG9sZDogcHJvcHMuaGVhbHRoVGhyZXNob2xkLFxuICAgICAgICB0eXBlOiBIZWFsdGhDaGVja1R5cGUuQ0FMQ1VMQVRFRCxcbiAgICAgIH0sXG4gICAgICBoZWFsdGhDaGVja1RhZ3M6IHRoaXMucmVzb2x2ZVNhZmVUYWdzKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLmhlYWx0aENoZWNrSWQgPSByZXNvdXJjZS5hdHRySGVhbHRoQ2hlY2tJZDtcblxuICAgIGlmIChwcm9wcy5oZWFsdGhDaGVja05hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKFwiTmFtZVwiLCBwcm9wcy5oZWFsdGhDaGVja05hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIENoaWxkSGVhbHRoQ2hlY2tzIHRoYXQgYXJlIGhlYWx0aHkgdGhhdCBSb3V0ZTUzIGlzIG1vbml0b3JpbmcuXG4gICAqXG4gICAqIFZhbGlkIHN0YXRpc3RpY3M6IEF2ZXJhZ2UgKHJlY29tbWVuZGVkKSwgTWluaW11bSwgTWF4aW11bVxuICAgKi9cbiAgcHVibGljIG1ldHJpY0NoaWxkSGVhbHRoQ2hlY2tIZWFsdGh5Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKFwiQ2hpbGRIZWFsdGhDaGVja0hlYWx0aHlDb3VudFwiLCB7IHN0YXRpc3RpYzogY2xvdWR3YXRjaC5TdGF0aXN0aWMuQVZFUkFHRSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkQ2hpbGRIZWFsdGhDaGVjayhoZWFsdGhDaGVjazogSUhlYWx0aENoZWNrKSB7XG4gICAgdGhpcy5jaGlsZEhlYWx0aENoZWNrcy5wdXNoKGhlYWx0aENoZWNrKTtcbiAgfVxufVxuIl19