@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
JavaScript
;
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