@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.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==