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" }
  ]
});