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.tags.renderedTags, }); 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.710" }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0taGVhbHRoLWNoZWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FsYXJtLWhlYWx0aC1jaGVjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUFxRDtBQUVyRCxtREFBbUQ7QUFFbkQsaURBQXFFO0FBQ3JFLDJEQUFzRDtBQWF0RDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLDhCQUFlO0lBR25ELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7UUFDcEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDNUMsZ0dBQWdHO1FBQ2hHLE1BQU0sV0FBVyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLHVCQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFbkcsTUFBTSw0QkFBNEIsR0FDaEMsS0FBSyxDQUFDLDRCQUE0QixJQUFJLDRCQUE0QixDQUFDLGlCQUFpQixDQUFDO1FBRXZGLE1BQU0sUUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzVELGlCQUFpQixFQUFFO2dCQUNqQixlQUFlLEVBQUU7b0JBQ2YsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsTUFBTSxFQUFFLFdBQVk7aUJBQ3JCO2dCQUNELDRCQUE0QixFQUFFLDRCQUE0QjtnQkFDMUQsSUFBSSxFQUFFLG1DQUFlLENBQUMsaUJBQWlCO2FBQ3hDO1lBQ0QsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtTQUN4QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztRQUVoRCxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixrQkFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQzs7QUE5QkgsNENBK0JDOzs7QUFFRCxJQUFZLDRCQWFYO0FBYkQsV0FBWSw0QkFBNEI7SUFDdEM7O09BRUc7SUFDSCxtREFBbUIsQ0FBQTtJQUNuQjs7T0FFRztJQUNILHVEQUF1QixDQUFBO0lBQ3ZCOztPQUVHO0lBQ0gscUVBQXFDLENBQUE7QUFDdkMsQ0FBQyxFQWJXLDRCQUE0Qiw0Q0FBNUIsNEJBQTRCLFFBYXZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJuRm9ybWF0LCBTdGFjaywgVGFncyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgY2xvdWR3YXRjaCBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCAqIGFzIHJvdXRlNTMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgSGVhbHRoQ2hlY2tCYXNlLCBIZWFsdGhDaGVja09wdGlvbnMgfSBmcm9tIFwiLi9oZWFsdGgtY2hlY2tcIjtcbmltcG9ydCB7IEhlYWx0aENoZWNrVHlwZSB9IGZyb20gXCIuL2hlYWx0aC1jaGVjay10eXBlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxhcm1IZWFsdGhDaGVja1Byb3BzIGV4dGVuZHMgSGVhbHRoQ2hlY2tPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBhbGFybSB0aGF0IFJvdXRlNTMgbW9uaXRvcnNcbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtOiBjbG91ZHdhdGNoLklBbGFybTtcbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgdG8gYXNzaWduIHRvIHRoZSBIZWFsdGhDaGVjayB3aGVuIENsb3VkV2F0Y2ggaGFzIGluc3VmZmljaWVudCBkYXRhIGFib3V0IHRoZSBtZXRyaWNcbiAgICovXG4gIHJlYWRvbmx5IGluc3VmZmljaWVudERhdGFIZWFsdGhTdGF0dXM/OiBJbnN1ZmZpY2llbnREYXRhSGVhbHRoU3RhdHVzO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIFJvdXRlNTMgSGVhbHRoQ2hlY2sgdGhhdCBtb25pdG9ycyBhIENsb3VkV2F0Y2ggQWxhcm0uXG4gKlxuICogPGI+RXhhbXBsZTwvYj5cbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFsYXJtIG5ldyBBbGFybShzdGFjaywgXCJBbGFybVwiLCB7XG4gKiAgIC8vIC4uLlxuICogfSk7XG4gKiBuZXcgQWxhcm1IZWFsdGhDaGVjayhzdGFjaywgXCJIZWFsdGhDaGVja1wiLCB7XG4gKiAgIGFsYXJtOiBhbGFybSxcbiAqIH0pO1xuICogYGBgXG4gKiBAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZGVfZGUvQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2Utcm91dGU1My1oZWFsdGhjaGVjay5odG1sI2F3cy1yZXNvdXJjZS1yb3V0ZTUzLWhlYWx0aGNoZWNrLXByb3BlcnRpZXNcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpSb3V0ZTUzOjpIZWFsdGhDaGVja1xuICovXG5leHBvcnQgY2xhc3MgQWxhcm1IZWFsdGhDaGVjayBleHRlbmRzIEhlYWx0aENoZWNrQmFzZSB7XG4gIHB1YmxpYyByZWFkb25seSBoZWFsdGhDaGVja0lkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFsYXJtSGVhbHRoQ2hlY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7IGFsYXJtTmFtZSwgYWxhcm1Bcm4gfSA9IHByb3BzLmFsYXJtO1xuICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X2FtYXpvbmNsb3Vkd2F0Y2guaHRtbFxuICAgIGNvbnN0IGFsYXJtUmVnaW9uID0gU3RhY2sub2YocHJvcHMuYWxhcm0pLnNwbGl0QXJuKGFsYXJtQXJuLCBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSkucmVnaW9uO1xuXG4gICAgY29uc3QgaW5zdWZmaWNpZW50RGF0YUhlYWx0aFN0YXR1cyA9XG4gICAgICBwcm9wcy5pbnN1ZmZpY2llbnREYXRhSGVhbHRoU3RhdHVzID8/IEluc3VmZmljaWVudERhdGFIZWFsdGhTdGF0dXMuTEFTVF9LTk9XTl9TVEFUVVM7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyByb3V0ZTUzLkNmbkhlYWx0aENoZWNrKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgaGVhbHRoQ2hlY2tDb25maWc6IHtcbiAgICAgICAgYWxhcm1JZGVudGlmaWVyOiB7XG4gICAgICAgICAgbmFtZTogYWxhcm1OYW1lLFxuICAgICAgICAgIHJlZ2lvbjogYWxhcm1SZWdpb24hLFxuICAgICAgICB9LFxuICAgICAgICBpbnN1ZmZpY2llbnREYXRhSGVhbHRoU3RhdHVzOiBpbnN1ZmZpY2llbnREYXRhSGVhbHRoU3RhdHVzLFxuICAgICAgICB0eXBlOiBIZWFsdGhDaGVja1R5cGUuQ0xPVURXQVRDSF9NRVRSSUMsXG4gICAgICB9LFxuICAgICAgaGVhbHRoQ2hlY2tUYWdzOiB0aGlzLnRhZ3MucmVuZGVyZWRUYWdzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5oZWFsdGhDaGVja0lkID0gcmVzb3VyY2UuYXR0ckhlYWx0aENoZWNrSWQ7XG5cbiAgICBpZiAocHJvcHMuaGVhbHRoQ2hlY2tOYW1lKSB7XG4gICAgICBUYWdzLm9mKHRoaXMpLmFkZChcIk5hbWVcIiwgcHJvcHMuaGVhbHRoQ2hlY2tOYW1lKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGVudW0gSW5zdWZmaWNpZW50RGF0YUhlYWx0aFN0YXR1cyB7XG4gIC8qKlxuICAgKiBSb3V0ZTUzIGNvbnNpZGVycyB0aGUgaGVhbHRoIGNoZWNrIHRvIGJlIGhlYWx0aHkuXG4gICAqL1xuICBIRUFMVEhZID0gXCJIZWFsdGh5XCIsXG4gIC8qKlxuICAgKiBSb3V0ZTUzIGNvbnNpZGVycyB0aGUgaGVhbHRoIGNoZWNrIHRvIGJlIHVuaGVhbHRoeS5cbiAgICovXG4gIFVOSEVBTFRIWSA9IFwiVW5oZWFsdGh5XCIsXG4gIC8qKlxuICAgKiBSb3V0ZTUzIHVzZXMgdGhlIHN0YXR1cyBvZiB0aGUgaGVhbHRoIGNoZWNrIGZyb20gdGhlIGxhc3QgdGltZSB0aGF0IENsb3VkV2F0Y2ggaGFkIHN1ZmZpY2llbnQgZGF0YSB0byBkZXRlcm1pbmUgdGhlIGFsYXJtIHN0YXRlLCBvdGhlcndpc2UgaGVhbHRoeVxuICAgKi9cbiAgTEFTVF9LTk9XTl9TVEFUVVMgPSBcIkxhc3RLbm93blN0YXR1c1wiLFxufVxuIl19