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