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://mp-staging.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/configuring-route53-profiles.md
Configuring Route 53 Profiles
Overview
Domain expertise for defining a DNS configuration once with a Route 53 Profile and applying it across many VPCs and accounts. Covers attaching DNS resources to a Profile, associating it with VPCs, sharing it cross-account through AWS Resource Access Manager (RAM), and the four things customers get wrong: the sharing prerequisite, the per-association cost, the admin-sharing injection risk, and the owner-side visibility gap.
Does not cover authoring DNS Firewall rules, the hybrid resolver setup, or the org-wide DNS Firewall fan-out. Those are separate skills.
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
Four things customers get wrong
Decision: Profile vs manual per-VPC associations
Decision: read-only vs admin sharing
Troubleshooting
Procedure
Additional Resources
Workflow
To configure and share a Profile, follow the procedure exactly. See the Procedure section below.
The procedure covers:
Attaching DNS resources (private hosted zones, resolver rules, DNS Firewall rule groups, Resolver query logging configurations, interface VPC endpoints) to a Profile
Associating the Profile with target VPCs (each association binds one VPC; a Profile can be associated with up to 1,000 VPCs per Region, a default quota AWS can raise on request)
Sharing the Profile cross-account through RAM with the correct managed permission
Setting expectations on cost and owner-side visibility
Four things customers get wrong
The sharing prerequisite. Cross-account sharing requires a RAM resource share with the correct managed permission. If sharing outside the Organization, the recipient must also accept the RAM share invitation. These steps are frequently missed, and the recipient then cannot associate.
The admin-sharing injection risk. A recipient with admin on a shared Profile can associate
any resource, including its own private hosted zone, and that association applies to every other
account consuming the Profile. Default to read-only. When the recipient genuinely needs to
contribute resources, prefer a scoped IAM condition-key policy on the RAM share (for example,
only hosted zones whose name ends in test.com) over blanket admin.
The cost tradeoff. Profiles are billed per account, not per Profile: $0.75/hour covers up to 100 Profile-VPC associations across all Profiles the account owns in a Region, then $0.0014 per association per hour. The Profile owner pays for every association, including those created by RAM recipients in their own accounts. For a small, stable set of VPCs, manual associations can be cheaper. Surface this before rollout, not after.
The owner-side visibility gap. From the owner account, the agent cannot enumerate which consumer accounts associated their VPCs to a shared Profile. The owner sees the RAM share, not the resulting associations.
Constraints:
You MUST default to read-only sharing and explain the injection risk before granting admin
You MUST use the correct RAM managed permission and ensure non-Organization recipients accept the share invitation
You MUST surface the per-association cost when the VPC set is small and stable
You MUST remember a VPC can have only one Profile associated at a time; associating a second Profile to a VPC that already has one fails
You MUST be explicit about the owner-side visibility gap rather than implying the owner can see the full association list. Fuller visibility requires org-level access (an organization CloudTrail trail, an AWS Config aggregator, or per-account role assumption); frame that as a conditional path, not the default
Decision: Profile vs manual per-VPC associations
| Choice | Use when |
|---|---|
| Profile | The fleet is large or growing; a Profile scales to up to 1,000 VPCs per Region and avoids drift |
| Manual associations | The VPC set is small and stable, where the per-association charge makes a Profile more expensive |
Decision: read-only vs admin sharing
| Choice | Use when |
|---|---|
| Read-only | Default. The recipient only needs to associate the shared Profile with its VPCs |
| Admin | The recipient must contribute its own resources (e.g., a distributed zone hierarchy), accepting that it can inject configuration into every consumer |
| Scoped contribution via IAM condition keys | The recipient must contribute resources but the owner wants to bound what it can add. RAM sharing supports IAM condition keys, so the policy can allow, for example, only private hosted zones whose name ends in test.com. Prefer this over blanket admin when contribution must be limited |
Troubleshooting
Recipient account cannot associate the shared Profile
The RAM share is missing, the wrong permission was used, or the recipient has not accepted the share invitation. Verify the share exists with the correct managed permission and that the recipient accepted the invitation (automatic within an Organization with RAM sharing enabled).
Recipient cannot contribute its own hosted zones
Only VPC-association rights were granted. Grant the broader permission for two-way contribution, weighing the injection risk.
Owner cannot see which accounts use the Profile
The owner account sees the share, not the associations. Use an org CloudTrail trail, a Config aggregator, or per-account roles.
Unexpected charges after Profile rollout
Per-account Profile pricing: $0.75/hour covers the first 100 Profile-VPC associations across all the account's Profiles in a Region, then $0.0014 per association per hour, and the owner pays for associations made by RAM recipients. Compare against manual associations for small, stable fleets.
One account's DNS config appears in others
Admin sharing let a recipient inject a resource. Default to read-only; reserve admin for genuine need.
Procedure
Overview
This procedure defines a DNS configuration once with a Route 53 Profile and applies it across many VPCs and accounts. It attaches DNS resources to the Profile, associates the Profile with VPCs, shares it cross-account through AWS Resource Access Manager (RAM) with the correct managed permission, and sets expectations on cost and owner-side visibility.
Parameters
region (required): The AWS Region for the Profile (e.g.,
us-east-1).dns_resources (required): The resources to attach, each an ARN: private hosted zones, resolver rules, DNS Firewall rule groups, Resolver query logging configurations, or interface VPC endpoints.
vpc_ids (required): The VPC IDs to associate the Profile with.
share_principals (optional): Account IDs or AWS Organizations OU ARNs for cross-account sharing.
share_permission (optional, default: read-only):
read-onlyoradmin.
Constraints for parameter acquisition:
You MUST ask for all required parameters upfront in a single prompt
You MUST default
share_permissionto read-only and confirm before using adminYou MUST surface the per-association cost when
vpc_idsis small and stable
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 SHOULD prefer least-privilege credentials for read steps
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. Create the Profile and attach DNS resources
Constraints:
You MUST create one Profile and attach each resource to it:
aws route53profiles create-profile --name {profile_name} --region {region} aws route53profiles associate-resource-to-profile \ --profile-id {profile_id} \ --resource-arn {resource_arn} \ --name {association_name} --region {region}When the resource is a DNS Firewall rule group, you MUST include a priority via
--resource-properties; the call fails for a rule group without it. The priority sets the rule group's processing order (allowed range 100-9900, lowest evaluated first):aws route53profiles associate-resource-to-profile \ --profile-id {profile_id} \ --resource-arn {firewall_rule_group_arn} \ --resource-properties '{"priority": 101}' \ --name {association_name} --region {region}You SHOULD move query logging to the Profile level so the configuration propagates automatically rather than being re-done per VPC
3. Associate the Profile with VPCs
Constraints:
You MUST associate the Profile with each target VPC. Each call binds one VPC; a Profile can be associated with up to 1,000 VPCs per Region (a default quota AWS can raise on request). A VPC can have only one Profile associated at a time, so this fails if the VPC already has one:
aws route53profiles associate-profile \ --profile-id {profile_id} \ --resource-id {vpc_id} \ --name {association_name} --region {region}The association returns
UPDATINGand is not in effect until it reachesCOMPLETE. You MUST pollget-profile-associationuntil the status isCOMPLETEbefore reporting success:aws route53profiles get-profile-association \ --profile-association-id {association_id} --region {region}
4. Share the Profile cross-account (optional)
Constraints:
You MUST create the RAM resource share with the appropriate managed permission. The built-in
AWSRAMPermissionRoute53ProfileAllowAssociationgrants association-only (read-only) access:aws ram create-resource-share \ --name {share_name} \ --resource-arns {profile_arn} \ --principals {share_principals} \ --permission-arns {ram_permission_arn} \ --region {region}If sharing outside the AWS Organization (or if organizational sharing is not enabled), the recipient MUST accept the resource share invitation before they can use the shared Profile:
aws ram get-resource-share-invitations --region {region} aws ram accept-resource-share-invitation \ --resource-share-invitation-arn {invitation_arn} --region {region}Shares within an Organization that has RAM sharing enabled are accepted automatically.
You MUST default to read-only. Before granting admin, you MUST explain that a recipient with admin can associate a resource that applies to every consumer of the Profile
You SHOULD use a custom RAM managed permission to scope what a contributing recipient may add (for example, only private hosted zones whose name ends in
test.com) rather than granting blanket resource-association access
5. Set expectations on cost and visibility
Constraints:
You MUST tell the customer that Profiles are billed per account ($0.75/hour for up to 100 Profile-VPC associations across all the account's Profiles in a Region, then $0.0014 per association per hour), that the Profile owner pays for all associations including those made by RAM recipients, and that manual associations can be cheaper for a small, stable set of VPCs
You MUST be explicit that from the owner account you cannot enumerate which consumer accounts associated their VPCs to a shared Profile. For the full picture, use an organization CloudTrail trail, an AWS Config aggregator, or per-account role assumption
6. Confirm and surface the console link
Constraints:
You MUST present the Profile detail console view, filling
{region}and{profileId}from the API response:https://{region}.console.aws.amazon.com/route53profiles/home?region={region}#/profiles/{profileId}
Example
Example input
{
"region": "us-east-1",
"dns_resources": ["arn:aws:route53resolver:us-east-1:111122223333:firewall-rule-group/rslvr-frg-0123456789abcdef0"],
"vpc_ids": ["vpc-0abc123"],
"share_principals": ["ou-abcd-1234abcd"],
"share_permission": "read-only"
}Example output
Created Profile rp-0a1b2c3d4e5f, attached 1 resource, associated with vpc-0abc123.
- Shared read-only with ou-abcd-1234abcd via RAM (association-only permission)
Verify in the console:
https://us-east-1.console.aws.amazon.com/route53profiles/home?region=us-east-1#/profiles/rp-0a1b2c3d4e5fTroubleshooting
Recipient account cannot associate the shared Profile
RAM share missing, wrong permission used, or the recipient has not accepted the share invitation. Re-check the share exists with the correct managed permission and that the recipient accepted (Step 4).
Owner cannot see which accounts use the Profile
The owner account sees the share, not the associations. Use an org CloudTrail trail, a Config aggregator, or per-account roles (Step 5).
Unexpected charges after rollout
Per-account Profile pricing ($0.75/hour for the first 100 Profile-VPC associations in a Region, then $0.0014 each per hour; owner pays for RAM-recipient associations). Compare against manual associations for small, stable fleets.
One account's DNS config appears in others
Admin sharing let a recipient inject a resource. Default to read-only.
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 default RAM shares to read-only (association-only) and explain the injection risk before granting admin, because a contributing recipient can associate a resource that then applies to every account consuming the Profile. Prefer a scoped IAM condition-key policy over blanket admin when a recipient must contribute resources.
You MUST move Resolver query logging to the Profile level and send it to an encrypted destination (KMS on CloudWatch Logs, SSE-S3/SSE-KMS on S3, or server-side encryption on a Data Firehose stream), and ensure CloudTrail is enabled to audit Profile and association changes, because query logs reveal the domains the fleet resolves.
Per-Profile resource quotas
| Resource type | Default quota | Adjustable |
|---|---|---|
| DNS Firewall rule groups per Profile | 5 | No |
| Resolver rules per Profile | 1,000 | Yes |
| Private hosted zones per Profile | 5,000 | Yes |
| Resolver query logging configurations per Profile | 2 | No |
These are in addition to the 1,000 VPC associations per Profile (adjustable) and 5 Profiles per account per Region.
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.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download route53.zip