@pepperize/cdk-route53-health-check
Version:
Create Route53 HealthChecks to monitor TCP, HTTP, HTTPS endpoints, CloudWatch Alarms and other Route53 HealthChecks.
67 lines • 8.97 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.tags.renderedTags,
});
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.710" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlZC1oZWFsdGgtY2hlY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2FsY3VsYXRlZC1oZWFsdGgtY2hlY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBc0Q7QUFDdEQseURBQXlEO0FBQ3pELG1EQUFtRDtBQUVuRCxpREFBbUY7QUFDbkYsMkRBQXNEO0FBYXREOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQWEscUJBQXNCLFNBQVEsOEJBQWU7SUFLeEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO1FBRXZELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUN4Qyx5QkFBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNoRixDQUFDO1FBRUQsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ3RFLHlCQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM1RCxpQkFBaUIsRUFBRTtnQkFDakIsaUJBQWlCLEVBQUUsa0JBQUksQ0FBQyxJQUFJLENBQUM7b0JBQzNCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO2lCQUN0RixDQUFDO2dCQUNGLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtnQkFDdEMsSUFBSSxFQUFFLG1DQUFlLENBQUMsVUFBVTthQUNqQztZQUNELGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7U0FDeEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUM7UUFFaEQsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsa0JBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksa0NBQWtDLENBQUMsS0FBZ0M7UUFDeEUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLDhCQUE4QixFQUFFLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRU0sbUJBQW1CLENBQUMsV0FBeUI7UUFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDOztBQS9DSCxzREFnREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbm5vdGF0aW9ucywgTGF6eSwgVGFncyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgY2xvdWR3YXRjaCBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCAqIGFzIHJvdXRlNTMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgSGVhbHRoQ2hlY2tCYXNlLCBIZWFsdGhDaGVja09wdGlvbnMsIElIZWFsdGhDaGVjayB9IGZyb20gXCIuL2hlYWx0aC1jaGVja1wiO1xuaW1wb3J0IHsgSGVhbHRoQ2hlY2tUeXBlIH0gZnJvbSBcIi4vaGVhbHRoLWNoZWNrLXR5cGVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDYWxjdWxhdGVkSGVhbHRoQ2hlY2tQcm9wcyBleHRlbmRzIEhlYWx0aENoZWNrT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBIZWFsdGhDaGVjayB0aGF0IG1vbml0b3JzIG90aGVyIFJvdXRlNTMgSGVhbHRoQ2hlY2tzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hpbGRIZWFsdGhDaGVja3M/OiBJSGVhbHRoQ2hlY2tbXTtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY2hpbGQgSGVhbHRoQ2hlY2tzIHRoYXQgQW1hem9uIFJvdXRlNTMgbXVzdCBjb25zaWRlciBoZWFsdGh5XG4gICAqL1xuICByZWFkb25seSBoZWFsdGhUaHJlc2hvbGQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgUm91dGU1MyBIZWFsdGhDaGVjayB0aGF0IG1vbml0b3JzIG90aGVyIFJvdXRlNTMgSGVhbHRoQ2hlY2tzLlxuICpcbiAqIDxiPkV4YW1wbGU8L2I+XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBoZWFsdGhDaGVjayA9IG5ldyBFbmRwb2ludEhlYWx0aENoZWNrKHN0YWNrLCBcIkhlYWx0aENoZWNrXCIsIHtcbiAqICAgZG9tYWluTmFtZTogXCJwZXBwZXJpemUuY29tXCIsXG4gKiB9KTtcbiAqIG5ldyBDYWxjdWxhdGVkSGVhbHRoQ2hlY2soc3RhY2ssIFwiQ2FsY3VsYXRlZEhlYWx0aENoZWNrXCIsIHtcbiAqICAgY2hpbGRIZWFsdGhDaGVja3M6IFtoZWFsdGhDaGVja10sXG4gKiB9KTtcbiAqIGBgYFxuICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2RlX2RlL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLXJvdXRlNTMtaGVhbHRoY2hlY2suaHRtbCNhd3MtcmVzb3VyY2Utcm91dGU1My1oZWFsdGhjaGVjay1wcm9wZXJ0aWVzXG4gKlxuICogQHJlc291cmNlIEFXUzo6Um91dGU1Mzo6SGVhbHRoQ2hlY2tcbiAqL1xuZXhwb3J0IGNsYXNzIENhbGN1bGF0ZWRIZWFsdGhDaGVjayBleHRlbmRzIEhlYWx0aENoZWNrQmFzZSB7XG4gIHB1YmxpYyByZWFkb25seSBoZWFsdGhDaGVja0lkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjaGlsZEhlYWx0aENoZWNrczogSUhlYWx0aENoZWNrW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENhbGN1bGF0ZWRIZWFsdGhDaGVja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuY2hpbGRIZWFsdGhDaGVja3MgPSBwcm9wcy5jaGlsZEhlYWx0aENoZWNrcyA/PyBbXTtcblxuICAgIGlmICh0aGlzLmNoaWxkSGVhbHRoQ2hlY2tzLmxlbmd0aCA+IDI1Nikge1xuICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkRXJyb3IoXCJDaGlsZEhlYWx0aENoZWNrcyBoYXMgdG8gYmUgc21hbGxlciB0aGFuIDI1NlwiKTtcbiAgICB9XG5cbiAgICBpZiAodW5kZWZpbmVkICE9IHByb3BzLmhlYWx0aFRocmVzaG9sZCAmJiBwcm9wcy5oZWFsdGhUaHJlc2hvbGQgPiAyNTYpIHtcbiAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZEVycm9yKFwiSGVhbHRoVGhyZXNob2xkIGhhcyB0byBiZSBzbWFsbGVyIHRoYW4gMjU2XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IHJvdXRlNTMuQ2ZuSGVhbHRoQ2hlY2sodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBoZWFsdGhDaGVja0NvbmZpZzoge1xuICAgICAgICBjaGlsZEhlYWx0aENoZWNrczogTGF6eS5saXN0KHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiB0aGlzLmNoaWxkSGVhbHRoQ2hlY2tzLm1hcCgoaGVhbHRoQ2hlY2spID0+IGhlYWx0aENoZWNrLmhlYWx0aENoZWNrSWQpLFxuICAgICAgICB9KSxcbiAgICAgICAgaGVhbHRoVGhyZXNob2xkOiBwcm9wcy5oZWFsdGhUaHJlc2hvbGQsXG4gICAgICAgIHR5cGU6IEhlYWx0aENoZWNrVHlwZS5DQUxDVUxBVEVELFxuICAgICAgfSxcbiAgICAgIGhlYWx0aENoZWNrVGFnczogdGhpcy50YWdzLnJlbmRlcmVkVGFncyxcbiAgICB9KTtcblxuICAgIHRoaXMuaGVhbHRoQ2hlY2tJZCA9IHJlc291cmNlLmF0dHJIZWFsdGhDaGVja0lkO1xuXG4gICAgaWYgKHByb3BzLmhlYWx0aENoZWNrTmFtZSkge1xuICAgICAgVGFncy5vZih0aGlzKS5hZGQoXCJOYW1lXCIsIHByb3BzLmhlYWx0aENoZWNrTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgQ2hpbGRIZWFsdGhDaGVja3MgdGhhdCBhcmUgaGVhbHRoeSB0aGF0IFJvdXRlNTMgaXMgbW9uaXRvcmluZy5cbiAgICpcbiAgICogVmFsaWQgc3RhdGlzdGljczogQXZlcmFnZSAocmVjb21tZW5kZWQpLCBNaW5pbXVtLCBNYXhpbXVtXG4gICAqL1xuICBwdWJsaWMgbWV0cmljQ2hpbGRIZWFsdGhDaGVja0hlYWx0aHlDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoXCJDaGlsZEhlYWx0aENoZWNrSGVhbHRoeUNvdW50XCIsIHsgc3RhdGlzdGljOiBjbG91ZHdhdGNoLlN0YXRpc3RpYy5BVkVSQUdFLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDaGlsZEhlYWx0aENoZWNrKGhlYWx0aENoZWNrOiBJSGVhbHRoQ2hlY2spIHtcbiAgICB0aGlzLmNoaWxkSGVhbHRoQ2hlY2tzLnB1c2goaGVhbHRoQ2hlY2spO1xuICB9XG59XG4iXX0=