AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides comprehensive domain expertise for managing Amazon Route 53 DNS configurations. It acts as a router to specific, self-contained procedures for tasks ranging from basic public DNS record creation to complex hybrid network resolution, traffic steering, and security-focused DNS Firewall management. It emphasizes best practices for IAM security, DNS transport encryption, and scalable configuration management across multi-account environments.
What it does
- Maps hostnames to IPs, AWS resources, or other hostnames via public DNS records.
- Implements traffic-steering policies like weighted routing and failover for disaster recovery.
- Configures health checks to monitor endpoint availability and trigger alerts.
- Secures VPC traffic by blocking malicious domains using DNS Firewall.
- Centralizes DNS configurations and security rules across multiple accounts using Route 53 Profiles or Firewall Manager.
- Enables hybrid network resolution and manages VPC Resolver configurations for Outposts.
When to use it
- When you need to point a domain or subdomain to an AWS resource or external IP.
- When implementing blue/green deployments or canary releases using weighted routing.
- When setting up high-availability architectures requiring cross-region failover.
- When you need to filter malicious DNS queries within a VPC.
- When managing DNS configurations at scale across an AWS Organization.
- When resolving private DNS queries between on-premises networks and AWS VPCs.
Advantages
- Provides structured, step-by-step procedures for complex DNS tasks.
- Includes critical security constraints for IAM and DNS transport.
- Offers clear decision frameworks for choosing between routing policies or centralization methods.
- Ensures consistent configuration by routing to specialized, self-contained reference files.
- Supports both sandboxed execution via AWS MCP and standard AWS CLI fallback.
Usage examples
- “How do I point my domain example.com to an S3 bucket?”
- The agent will guide you through the 'creating a public DNS record' procedure to map your domain to the S3 bucket endpoint.
- “I need to block known malicious domains for all my VPCs.”
- The agent will direct you to the 'centralizing DNS Firewall' procedure to deploy protection across your organization.
- “How can I fail over traffic between two regions?”
- The agent will provide the 'configuring failover routing' steps, including setting up the necessary health checks.
- “How do I resolve private DNS between my on-premises network and AWS?”
- The agent will walk you through the 'resolving private DNS for hybrid networks' procedure.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/aws/route53/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip route53.zip -d .agents/skills
Documentation by AWS
Amazon Route 53
Overview
Domain expertise for configuring Amazon Route 53 DNS across the public and private resolution paths: hosted zone records, traffic-steering routing policies, health checks, DNS Firewall, Route 53 Profiles, VPC Resolver (also known as Route 53 Resolver) for hybrid and Outposts networks, and Global Resolver.
This skill is a router. Each customer task maps to a procedure file under references/. Read the
matching reference in full before acting, then follow its constraints and steps. The reference
files are self-contained: each carries its own decision tables, constraints, procedure, and
troubleshooting.
Execute commands using the AWS MCP server when connected (sandboxed execution, audit logging,
observability). Fall back to the AWS CLI otherwise. All Route 53 Domains API calls are made in
us-east-1 regardless of where the customer works.
Which Route 53 task do you need?
| Goal | Reference |
|---|---|
| Point a hostname or zone apex at an IP, AWS resource, or hostname | creating a public DNS record |
| Split traffic across endpoints in a ratio (blue/green, canary, A/B) | splitting traffic with weighted routing |
| Fail over between two Regions for disaster recovery | configuring failover routing |
| Monitor whether an endpoint is up and get alerted | setting up a health check |
| Block malicious domains for a VPC at the resolver | blocking malicious domains |
| Work out which DNS Firewall rule wins for a domain across multiple rule groups | identifying the effective DNS Firewall rule |
| Apply one DNS config across many VPCs and accounts | configuring Route 53 Profiles |
| Fan DNS Firewall out across many accounts org-wide | centralizing DNS Firewall with Profiles |
| Resolve private DNS both ways across a hybrid network | resolving private DNS for hybrid networks |
| Run VPC Resolver locally on an AWS Outposts rack | running VPC Resolver on Outposts |
| Give on-premises and remote clients one anycast DNS endpoint | setting up Global Resolver |
Routing notes
Records vs routing policies. A plain hostname-to-target mapping is the public DNS record task. Splitting or steering traffic (weighted, failover) is a separate routing-policy task with its own reference. Start from the customer's intent, not the record type.
Health checks vs failover. A health check monitors an endpoint and raises alarms. The failover routing policy decides where traffic goes when a check fails. They are two references and are often used together: set up the health check, then wire it into failover.
DNS Firewall for one VPC vs many accounts. Authoring rules for a VPC is the blocking reference. Fanning the same protection across accounts with Profiles and Firewall Manager is the centralizing reference.
DNS Firewall authoring vs diagnosis. Creating or changing rules is the blocking reference. Working out which rule already wins for a domain when several rule groups are associated (a read and diagnostic task) is the identifying-the-effective-rule reference.
Profiles, two entry points. General Profile setup (attach resources, share via RAM, cost and visibility tradeoffs) is the configuring-Profiles reference. Using Profiles specifically to scale DNS Firewall org-wide is the centralizing reference.
VPC Resolver, three contexts. In-Region hybrid resolution, the Outposts-local resolver, and the Global Resolver anycast endpoint are three separate references. Match the reference to where the resolver runs.
Cross-service work
Pointing a custom domain at a CloudFront distribution, or failing over between CloudFront distributions, is cross-service work spanning Route 53 and CloudFront. Use this skill for the Route 53 side of pure-Route 53 tasks only.
Security Considerations
These apply across the Route 53 tasks below; each reference repeats the ones load-bearing for its workflow.
You SHOULD use least-privilege IAM credentials provisioned through IAM roles (instance profiles, SSO/IAM Identity Center session credentials, or
aws sts assume-role) rather than long-lived IAM user access keys, and prefer read-only credentials for inspection steps.You SHOULD recommend encrypted DNS transport (DoT or DoH) over plaintext Do53 for resolver client populations, since Do53 exposes queried domain names to on-path observers.
You MUST scope resolver-endpoint security group rules on port 53 to the on-premises CIDR ranges or known DNS server IPs, never
0.0.0.0/0.You MUST encrypt query log and notification destinations at rest: KMS on CloudWatch Logs log groups, SSE-S3/SSE-KMS on S3 buckets, server-side encryption (SSE) on a Data Firehose stream, and SSE on SNS topics, because DNS query logs and health-check notifications can reveal infrastructure topology.
For Global Resolver, you MUST treat access-token
valuereturned at create time as a secret; store it in AWS Secrets Manager rather than in plaintext, and validate which client populations each DNS view authorizes.
Additional Resources
Files
- ATTRIBUTION.mdAdded by AutoGineer925 B
- LICENSELicence file added by AutoGineer9.9 KiB
- NOTICELicence file added by AutoGineer67 B
- SKILL.md6.4 KiB
- references/blocking-malicious-domains.md20.7 KiB
- references/centralizing-dns-firewall.md17.3 KiB
- references/configuring-failover-routing.md15.1 KiB
- references/configuring-route53-profiles.md15.4 KiB
- references/creating-a-public-dns-record.md12.9 KiB
- references/identifying-the-effective-dns-firewall-rule.md15.1 KiB
- references/resolving-private-dns-for-hybrid-networks.md15.3 KiB
- references/running-route53-resolver-on-outposts.md10.5 KiB
- references/setting-up-a-route53-health-check.md11.2 KiB
- references/setting-up-route53-global-resolver.md25.5 KiB
- references/splitting-traffic-with-weighted-routing.md10.7 KiB
references/setting-up-a-route53-health-check.md
Setting Up a Route 53 Health Check
Overview
Domain expertise for creating a Route 53 health check that monitors whether an endpoint is up, choosing the right check type, handling private targets that public health checkers cannot reach, and wiring the check to a CloudWatch alarm and an Amazon Simple Notification Service (SNS) topic so someone is told when the endpoint goes unhealthy.
Does not cover the failover routing policy itself (that is the failover skill) or record creation. A health check changes routing and raises alarms; it does not create records.
Execute commands using the AWS MCP server when connected (sandboxed execution, audit logging, observability). Fall back to the AWS CLI otherwise.
Table of Contents
Overview
Workflow
Decision: which health check type
Decision: ETH vs a custom health check for an AWS resource
Private targets
Notifications
Procedure
Additional Resources
Workflow
To create a health check and wire notifications, follow the procedure exactly. See the Procedure section below.
The procedure covers:
Choosing the health check type
Handling targets behind an Elastic Load Balancer with Evaluate Target Health (ETH)
Handling private resources public checkers cannot reach
Wiring a CloudWatch alarm and SNS topic for notifications
Surfacing the console link to verify
Decision: which health check type
| Type | Use when |
|---|---|
| Endpoint monitoring | A public HTTP, HTTPS, or TCP target |
| Calculated | The aggregate health of several child checks |
| CloudWatch alarm-based | A private resource, or any signal expressed as a CloudWatch metric |
Constraints:
You MUST tell the customer that protocol, port, and IP address are immutable after creation. Fixing one means deleting the check and recreating it
Decision: ETH vs a custom health check for an AWS resource
| Choice | Use when |
|---|---|
| Evaluate Target Health | The record is an alias to an AWS resource that reports its own health (ELB and other internal AWS targets). Free, nothing extra to maintain |
| Custom health check | The customer needs to monitor something ETH does not cover: a specific path, a non-ELB target, or a calculated combination |
Constraints:
For an alias record pointing at an Elastic Load Balancer (ELB), you SHOULD prefer ETH. A Route 53 health check on the instances behind the ELB duplicates the monitoring the ELB already does, creates conflicting failure signals, and a check on a public ELB endpoint costs money per check
Private targets
Constraints:
You MUST recognize a private target before creating the check. Route 53 health checkers run from public AWS IP ranges; pointed at a private resource, a standard check reports all-failed and can never pass
For an alias record to an internal AWS resource, use ETH. For anything with no usable target health, publish a custom signal to a CloudWatch metric (for example, from a Lambda function inside the VPC that probes the private resource) and back the health check with a CloudWatch alarm on that metric
Notifications
Constraints:
You MUST wire the health check to a CloudWatch alarm on its status metric, and point the alarm at an SNS topic the team subscribes to. A health check on its own changes routing and surfaces status, but does not notify anyone
You MUST enable KMS server-side encryption (SSE) on the SNS topic (a new topic created with
--attributes KmsMasterKeyId={kms_key_id}, or confirm an existingsns_topic_arnhas SSE enabled), because the notification content can reveal endpoint and infrastructure topologyYou MUST confirm the SNS topic's subscription list is limited to authorized personnel before wiring the alarm, because health-check notifications reveal endpoint topology and availability status
Procedure
Overview
This procedure creates a Route 53 health check that monitors whether an endpoint is up. It chooses the check type, handles targets behind an Elastic Load Balancer (ELB) with Evaluate Target Health (ETH), handles private resources public checkers cannot reach, wires a CloudWatch alarm and SNS topic for notifications, and surfaces the console link to verify.
Parameters
target (required): What to monitor: a public FQDN/IP, an alias-to-ELB record, or a private resource.
check_type (required):
endpoint,calculated, orcloudwatch-alarm.protocol (required for endpoint):
HTTP,HTTPS, orTCP.resource_path (optional): The path to probe for HTTP/HTTPS checks (e.g.,
/health).notify (optional, default: true): Whether to wire a CloudWatch alarm and SNS topic.
sns_topic_arn (optional): An existing SNS topic to notify.
Constraints for parameter acquisition:
You MUST ask for all required parameters upfront in a single prompt
You MUST confirm whether the target is public, behind an ELB, or private, because it changes the approach
Steps
1. Verify dependencies
Constraints:
You MUST confirm credentials with
aws sts get-caller-identityYou MUST REQUIRE provisioning credentials through ephemeral mechanisms (IAM roles via instance profiles, SSO/IAM Identity Center session credentials, or
aws sts assume-role) rather than long-lived IAM user access keys.You MUST enable Route 53 query logging to an encrypted destination where applicable, ensure CloudTrail is enabled to audit changes, and set CloudWatch alarms on health-check status where health checks are involved.
2. Choose the approach for the target
Constraints:
For an alias record to an ELB or other internal AWS resource, you SHOULD use ETH on the record rather than a standalone health check
For a private resource with no usable target health, you MUST use a CloudWatch alarm-based check backed by a custom metric, not a standard endpoint check (public checkers cannot reach private resources)
You MUST warn that protocol, port, and IP are immutable after creation
3. Create the health check
Constraints:
For a public endpoint:
aws route53 create-health-check --caller-reference {ref} --health-check-config '{ "Type": "{protocol}", "FullyQualifiedDomainName": "{fqdn}", "Port": {port}, "ResourcePath": "{resource_path}", "RequestInterval": 30, "FailureThreshold": 3 }'For a calculated check (aggregate health of several child checks):
aws route53 create-health-check --caller-reference {ref} --health-check-config '{ "Type": "CALCULATED", "ChildHealthChecks": ["{child_health_check_id_1}", "{child_health_check_id_2}"], "HealthThreshold": 1 }'HealthThresholdis the minimum number of child checks that must be healthy for the calculated check to report Healthy.For a CloudWatch alarm-based check:
aws route53 create-health-check --caller-reference {ref} --health-check-config '{ "Type": "CLOUDWATCH_METRIC", "AlarmIdentifier": {"Region": "{region}", "Name": "{alarm_name}"}, "InsufficientDataHealthStatus": "Unhealthy" }'Use
"Unhealthy"as the default: a data gap forces the check unhealthy and acts on it rather than masking it. Override to"LastKnownStatus"only for standalone monitoring where spurious flaps from transient metric gaps are costlier than delayed detection.
4. Wire notifications
Constraints:
If
notifyis true, you MUST create a CloudWatch alarm on the health check status metric and point it at an SNS topic. You MUST enable KMS SSE on that topic — create a new topic withaws sns create-topic --name {topic} --attributes KmsMasterKeyId={kms_key_id}, or confirm a providedsns_topic_arnalready has SSE enabled — because notification content can reveal infrastructure topology:aws cloudwatch put-metric-alarm \ --alarm-name {alarm_name} --namespace AWS/Route53 \ --metric-name HealthCheckStatus --dimensions Name=HealthCheckId,Value={health_check_id} \ --statistic Minimum --period 60 --threshold 1 \ --comparison-operator LessThanThreshold --evaluation-periods 1 \ --alarm-actions {sns_topic_arn} --region us-east-1You MUST confirm the SNS topic's subscription list is limited to authorized personnel before wiring the alarm, because health-check notifications reveal endpoint topology and availability status
5. Confirm and surface the console link
Constraints:
You MUST verify the check reports Healthy for a known-good target
You MUST present the health check details console view, filling
{healthCheckId}:https://console.aws.amazon.com/route53/v2/healthchecks/home#/details/{healthCheckId}
Example
Example input
{
"target": "app.example.com",
"check_type": "endpoint",
"protocol": "HTTPS",
"resource_path": "/health",
"notify": true
}Example output
Created HTTPS health check for app.example.com/health, wired to a CloudWatch alarm and SNS topic.
Verify in the console:
https://console.aws.amazon.com/route53/v2/healthchecks/home#/details/abcd1234-...Troubleshooting
Health check always Unhealthy for a target that is fine
The VPC security group may not allow inbound traffic from Route 53 health checkers. Add the
AWS-managed prefix list com.amazonaws.<region>.route53-healthchecks to the security group. If
the target is fully private, use ETH on the alias record or a CloudWatch alarm-based check
(Step 2). See Configuring router and firewall rules for Route 53 health checks.
Protocol, port, or IP fields are grayed out
Those fields are immutable. Delete and recreate the check (Step 2).
Duplicate or conflicting failure signals behind an ELB
A custom check duplicates the ELB's monitoring. Use ETH on the alias-to-ELB record (Step 2).
Endpoint went down but no one was alerted
The check is not wired to an alarm and topic. Add a CloudWatch alarm and SNS topic (Step 4).
Security Considerations
You SHOULD use least-privilege IAM credentials provisioned through ephemeral mechanisms (IAM roles, SSO/IAM Identity Center session credentials, or
aws sts assume-role) rather than long-lived IAM user access keys, and prefer read-only credentials for inspection steps.You MUST wire the health check to a CloudWatch alarm on its status metric pointed at an SNS topic, and ensure CloudTrail is enabled to audit health-check changes, because a check on its own raises no notification when an endpoint goes unhealthy.
You MUST enable KMS server-side encryption on the SNS topic used for health-check alarm notifications, because notification content can reveal endpoint and infrastructure topology.
You MUST confirm the SNS topic's subscription list is limited to authorized personnel.
Additional Resources
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an MCP server
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- AWS
- Publisher
- AWS (Official)
- Source
- aws/agent-toolkit-for-aws · skills/specialized-skills/networking-and-content-delivery-skills/route53 · commit 0a218f8
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- NOTICE (added by AutoGineer from NOTICE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by AWS or AWS.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download route53.zip