Skip to content

HealthCheck

The HealthCheck resource lets you manage AWS Route53 HealthChecks which monitor the health of your resources and ensure high availability by performing periodic checks.

Minimal Example

Create a basic health check that monitors the availability of a website.

ts
import AWS from "alchemy/aws/control";

const basicHealthCheck = await AWS.Route53.HealthCheck("basicHealthCheck", {
  HealthCheckConfig: {
    Type: "HTTP",
    ResourcePath: "/",
    FullyQualifiedDomainName: "www.example.com",
    Port: 80,
    RequestInterval: 30,
    FailureThreshold: 3,
    HealthThreshold: 2,
    AlarmIdentifier: {
      Name: "example-health-check"
    }
  },
  HealthCheckTags: [{ Key: "Environment", Value: "Production" }]
});

Advanced Configuration

Configure a health check with advanced settings for enhanced monitoring, including custom thresholds and HTTP authentication.

ts
const advancedHealthCheck = await AWS.Route53.HealthCheck("advancedHealthCheck", {
  HealthCheckConfig: {
    Type: "HTTPS",
    ResourcePath: "/health",
    FullyQualifiedDomainName: "api.example.com",
    Port: 443,
    RequestInterval: 60,
    FailureThreshold: 5,
    HealthThreshold: 3,
    InvertHealthCheck: true,
    HealthCheckCustomConfig: {
      EnableSNI: true,
      TlsRecordType: "A"
    },
    RequestHeaders: {
      "Authorization": "Bearer token"
    },
    AlarmIdentifier: {
      Name: "api-health-check"
    }
  },
  HealthCheckTags: [{ Key: "Service", Value: "API" }]
});

Monitoring with CloudWatch Alarms

Set up a health check with a CloudWatch alarm to notify when the health check fails.

ts
const monitoredHealthCheck = await AWS.Route53.HealthCheck("monitoredHealthCheck", {
  HealthCheckConfig: {
    Type: "HTTP",
    ResourcePath: "/status",
    FullyQualifiedDomainName: "monitor.example.com",
    Port: 80,
    RequestInterval: 30,
    FailureThreshold: 3,
    HealthThreshold: 1,
    AlarmIdentifier: {
      Name: "monitor-health-check"
    }
  },
  HealthCheckTags: [
    { Key: "Service", Value: "Monitoring" },
    { Key: "Team", Value: "DevOps" }
  ]
});