UNPKG

@pepperize/cdk-route53-health-check

Version:

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

68 lines 8.39 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.InsufficientDataHealthStatus = exports.AlarmHealthCheck = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cdk_lib_1 = require("aws-cdk-lib"); 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 a CloudWatch Alarm. * * <b>Example</b> * ```typescript * const alarm new Alarm(stack, "Alarm", { * // ... * }); * new AlarmHealthCheck(stack, "HealthCheck", { * alarm: alarm, * }); * ``` * @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 AlarmHealthCheck extends health_check_1.HealthCheckBase { constructor(scope, id, props) { super(scope, id); const { alarmName, alarmArn } = props.alarm; // https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatch.html const alarmRegion = aws_cdk_lib_1.Stack.of(props.alarm).splitArn(alarmArn, aws_cdk_lib_1.ArnFormat.COLON_RESOURCE_NAME).region; const insufficientDataHealthStatus = props.insufficientDataHealthStatus ?? InsufficientDataHealthStatus.LAST_KNOWN_STATUS; const resource = new route53.CfnHealthCheck(this, "Resource", { healthCheckConfig: { alarmIdentifier: { name: alarmName, region: alarmRegion, }, insufficientDataHealthStatus: insufficientDataHealthStatus, type: health_check_type_1.HealthCheckType.CLOUDWATCH_METRIC, }, healthCheckTags: this.resolveSafeTags(), }); this.healthCheckId = resource.attrHealthCheckId; if (props.healthCheckName) { aws_cdk_lib_1.Tags.of(this).add("Name", props.healthCheckName); } } } exports.AlarmHealthCheck = AlarmHealthCheck; _a = JSII_RTTI_SYMBOL_1; AlarmHealthCheck[_a] = { fqn: "@pepperize/cdk-route53-health-check.AlarmHealthCheck", version: "0.0.755" }; var InsufficientDataHealthStatus; (function (InsufficientDataHealthStatus) { /** * Route53 considers the health check to be healthy. */ InsufficientDataHealthStatus["HEALTHY"] = "Healthy"; /** * Route53 considers the health check to be unhealthy. */ InsufficientDataHealthStatus["UNHEALTHY"] = "Unhealthy"; /** * Route53 uses the status of the health check from the last time that CloudWatch had sufficient data to determine the alarm state, otherwise healthy */ InsufficientDataHealthStatus["LAST_KNOWN_STATUS"] = "LastKnownStatus"; })(InsufficientDataHealthStatus || (exports.InsufficientDataHealthStatus = InsufficientDataHealthStatus = {})); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0taGVhbHRoLWNoZWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FsYXJtLWhlYWx0aC1jaGVjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUFxRDtBQUVyRCxtREFBbUQ7QUFFbkQsaURBQXFFO0FBQ3JFLDJEQUFzRDtBQWF0RDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLDhCQUFlO0lBR25ELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7UUFDcEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDNUMsZ0dBQWdHO1FBQ2hHLE1BQU0sV0FBVyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLHVCQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFbkcsTUFBTSw0QkFBNEIsR0FDaEMsS0FBSyxDQUFDLDRCQUE0QixJQUFJLDRCQUE0QixDQUFDLGlCQUFpQixDQUFDO1FBRXZGLE1BQU0sUUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzVELGlCQUFpQixFQUFFO2dCQUNqQixlQUFlLEVBQUU7b0JBQ2YsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsTUFBTSxFQUFFLFdBQVk7aUJBQ3JCO2dCQUNELDRCQUE0QixFQUFFLDRCQUE0QjtnQkFDMUQsSUFBSSxFQUFFLG1DQUFlLENBQUMsaUJBQWlCO2FBQ3hDO1lBQ0QsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUU7U0FDeEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUM7UUFFaEQsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsa0JBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7O0FBOUJILDRDQStCQzs7O0FBRUQsSUFBWSw0QkFhWDtBQWJELFdBQVksNEJBQTRCO0lBQ3RDOztPQUVHO0lBQ0gsbURBQW1CLENBQUE7SUFDbkI7O09BRUc7SUFDSCx1REFBdUIsQ0FBQTtJQUN2Qjs7T0FFRztJQUNILHFFQUFxQyxDQUFBO0FBQ3ZDLENBQUMsRUFiVyw0QkFBNEIsNENBQTVCLDRCQUE0QixRQWF2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFybkZvcm1hdCwgU3RhY2ssIFRhZ3MgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGNsb3Vkd2F0Y2ggZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5pbXBvcnQgKiBhcyByb3V0ZTUzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEhlYWx0aENoZWNrQmFzZSwgSGVhbHRoQ2hlY2tPcHRpb25zIH0gZnJvbSBcIi4vaGVhbHRoLWNoZWNrXCI7XG5pbXBvcnQgeyBIZWFsdGhDaGVja1R5cGUgfSBmcm9tIFwiLi9oZWFsdGgtY2hlY2stdHlwZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFsYXJtSGVhbHRoQ2hlY2tQcm9wcyBleHRlbmRzIEhlYWx0aENoZWNrT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYWxhcm0gdGhhdCBSb3V0ZTUzIG1vbml0b3JzXG4gICAqL1xuICByZWFkb25seSBhbGFybTogY2xvdWR3YXRjaC5JQWxhcm07XG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIHRvIGFzc2lnbiB0byB0aGUgSGVhbHRoQ2hlY2sgd2hlbiBDbG91ZFdhdGNoIGhhcyBpbnN1ZmZpY2llbnQgZGF0YSBhYm91dCB0aGUgbWV0cmljXG4gICAqL1xuICByZWFkb25seSBpbnN1ZmZpY2llbnREYXRhSGVhbHRoU3RhdHVzPzogSW5zdWZmaWNpZW50RGF0YUhlYWx0aFN0YXR1cztcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBSb3V0ZTUzIEhlYWx0aENoZWNrIHRoYXQgbW9uaXRvcnMgYSBDbG91ZFdhdGNoIEFsYXJtLlxuICpcbiAqIDxiPkV4YW1wbGU8L2I+XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhbGFybSBuZXcgQWxhcm0oc3RhY2ssIFwiQWxhcm1cIiwge1xuICogICAvLyAuLi5cbiAqIH0pO1xuICogbmV3IEFsYXJtSGVhbHRoQ2hlY2soc3RhY2ssIFwiSGVhbHRoQ2hlY2tcIiwge1xuICogICBhbGFybTogYWxhcm0sXG4gKiB9KTtcbiAqIGBgYFxuICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2RlX2RlL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLXJvdXRlNTMtaGVhbHRoY2hlY2suaHRtbCNhd3MtcmVzb3VyY2Utcm91dGU1My1oZWFsdGhjaGVjay1wcm9wZXJ0aWVzXG4gKlxuICogQHJlc291cmNlIEFXUzo6Um91dGU1Mzo6SGVhbHRoQ2hlY2tcbiAqL1xuZXhwb3J0IGNsYXNzIEFsYXJtSGVhbHRoQ2hlY2sgZXh0ZW5kcyBIZWFsdGhDaGVja0Jhc2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgaGVhbHRoQ2hlY2tJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBbGFybUhlYWx0aENoZWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgeyBhbGFybU5hbWUsIGFsYXJtQXJuIH0gPSBwcm9wcy5hbGFybTtcbiAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hbWF6b25jbG91ZHdhdGNoLmh0bWxcbiAgICBjb25zdCBhbGFybVJlZ2lvbiA9IFN0YWNrLm9mKHByb3BzLmFsYXJtKS5zcGxpdEFybihhbGFybUFybiwgQXJuRm9ybWF0LkNPTE9OX1JFU09VUkNFX05BTUUpLnJlZ2lvbjtcblxuICAgIGNvbnN0IGluc3VmZmljaWVudERhdGFIZWFsdGhTdGF0dXMgPVxuICAgICAgcHJvcHMuaW5zdWZmaWNpZW50RGF0YUhlYWx0aFN0YXR1cyA/PyBJbnN1ZmZpY2llbnREYXRhSGVhbHRoU3RhdHVzLkxBU1RfS05PV05fU1RBVFVTO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgcm91dGU1My5DZm5IZWFsdGhDaGVjayh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIGhlYWx0aENoZWNrQ29uZmlnOiB7XG4gICAgICAgIGFsYXJtSWRlbnRpZmllcjoge1xuICAgICAgICAgIG5hbWU6IGFsYXJtTmFtZSxcbiAgICAgICAgICByZWdpb246IGFsYXJtUmVnaW9uISxcbiAgICAgICAgfSxcbiAgICAgICAgaW5zdWZmaWNpZW50RGF0YUhlYWx0aFN0YXR1czogaW5zdWZmaWNpZW50RGF0YUhlYWx0aFN0YXR1cyxcbiAgICAgICAgdHlwZTogSGVhbHRoQ2hlY2tUeXBlLkNMT1VEV0FUQ0hfTUVUUklDLFxuICAgICAgfSxcbiAgICAgIGhlYWx0aENoZWNrVGFnczogdGhpcy5yZXNvbHZlU2FmZVRhZ3MoKSxcbiAgICB9KTtcblxuICAgIHRoaXMuaGVhbHRoQ2hlY2tJZCA9IHJlc291cmNlLmF0dHJIZWFsdGhDaGVja0lkO1xuXG4gICAgaWYgKHByb3BzLmhlYWx0aENoZWNrTmFtZSkge1xuICAgICAgVGFncy5vZih0aGlzKS5hZGQoXCJOYW1lXCIsIHByb3BzLmhlYWx0aENoZWNrTmFtZSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBlbnVtIEluc3VmZmljaWVudERhdGFIZWFsdGhTdGF0dXMge1xuICAvKipcbiAgICogUm91dGU1MyBjb25zaWRlcnMgdGhlIGhlYWx0aCBjaGVjayB0byBiZSBoZWFsdGh5LlxuICAgKi9cbiAgSEVBTFRIWSA9IFwiSGVhbHRoeVwiLFxuICAvKipcbiAgICogUm91dGU1MyBjb25zaWRlcnMgdGhlIGhlYWx0aCBjaGVjayB0byBiZSB1bmhlYWx0aHkuXG4gICAqL1xuICBVTkhFQUxUSFkgPSBcIlVuaGVhbHRoeVwiLFxuICAvKipcbiAgICogUm91dGU1MyB1c2VzIHRoZSBzdGF0dXMgb2YgdGhlIGhlYWx0aCBjaGVjayBmcm9tIHRoZSBsYXN0IHRpbWUgdGhhdCBDbG91ZFdhdGNoIGhhZCBzdWZmaWNpZW50IGRhdGEgdG8gZGV0ZXJtaW5lIHRoZSBhbGFybSBzdGF0ZSwgb3RoZXJ3aXNlIGhlYWx0aHlcbiAgICovXG4gIExBU1RfS05PV05fU1RBVFVTID0gXCJMYXN0S25vd25TdGF0dXNcIixcbn1cbiJdfQ==