Working with AWS Route53 (with examples)
Introduction
AWS Route53 is a highly available and scalable Domain Name System (DNS) web service provided by Amazon Web Services. It allows you to manage and route traffic to your domain names by providing DNS resolution and domain registration services. In this article, we will explore eight different use cases of the aws route53
command-line tool with code examples.
Prerequisites
To follow along with the examples in this article, make sure you have the AWS CLI (Command Line Interface) installed and configured with your AWS account credentials.
1. List All Hosted Zones (Public and Private)
To list all hosted zones in your AWS Route53 account, you can use the list-hosted-zones
command.
aws route53 list-hosted-zones
This command will return information about all the hosted zones in your account, including their respective IDs, names, and configurations.
Motivation: This command is useful when you want to view the complete list of hosted zones in your AWS Route53 account. It helps you to quickly identify the domain names you have registered and manage their DNS configurations.
Arguments:
- No arguments required.
Example Output:
{
"HostedZones": [
{
"Id": "/hostedzone/ABC123XYZ",
"Name": "example.com.",
"Config": {
"Comment": "Example hosted zone.",
"PrivateZone": false
},
"ResourceRecordSetCount": 10
},
{
"Id": "/hostedzone/DEF456ABC",
"Name": "mydomain.com.",
"Config": {
"Comment": "",
"PrivateZone": true
},
"ResourceRecordSetCount": 5
}
]
}
2. Show All Records in a Zone
To retrieve all the DNS records in a specific hosted zone, you can use the list-resource-record-sets
command.
aws route53 list-resource-record-sets --hosted-zone-id zone_id
Replace zone_id
with the ID of the hosted zone you want to inspect.
Motivation: This command is helpful when you need to list all the DNS records associated with a specific domain in your hosted zone. It allows you to verify and manage the individual DNS records such as A records, CNAME records, MX records, etc.
Arguments:
--hosted-zone-id
: The ID of the hosted zone for which you want to list DNS records.
Example Output:
{
"ResourceRecordSets": [
{
"Name": "example.com.",
"Type": "A",
"TTL": 300,
"ResourceRecords": [
{
"Value": "123.45.67.89"
}
]
},
{
"Name": "example.com.",
"Type": "MX",
"TTL": 300,
"ResourceRecords": [
{
"Value": "10 mail.example.com."
}
]
}
]
}
3. Create a New Public Zone
To create a new public hosted zone in AWS Route53, you can use the create-hosted-zone
command.
aws route53 create-hosted-zone --name name --caller-reference request_identifier
Replace name
with the name of your new hosted zone (e.g., example.com) and request_identifier
with a unique identifier for the request (e.g., my-request-id).
Motivation: This command allows you to create a new public hosted zone for your domain name registration. It is useful when you want to manage the DNS records for your domain names within AWS Route53 and utilize their highly available and scalable DNS infrastructure.
Arguments:
--name
: The name of the hosted zone you want to create (e.g., example.com).--caller-reference
: A unique identifier for the request. It helps prevent accidental retries when creating the same hosted zone.
Example Output:
{
"HostedZone": {
"Id": "/hostedzone/ABC123XYZ",
"Name": "example.com.",
"CallerReference": "my-request-id",
"Config": {
"Comment": "",
"PrivateZone": false
},
"ResourceRecordSetCount": 0
},
"ChangeInfo": {
"Id": "/change/DEF456ABC",
"Status": "PENDING",
"SubmittedAt": "2022-03-01T10:20:30Z",
"Comment": ""
},
"DelegationSet": {
"NameServers": [
"ns-1234.awsdns-12.co.uk",
"ns-5678.awsdns-34.org",
"ns-9012.awsdns-56.com",
"ns-3456.awsdns-78.net"
]
}
}
4. Delete a Zone
To delete a hosted zone in AWS Route53, you can use the delete-hosted-zone
command.
aws route53 delete-hosted-zone --id zone_id
Replace zone_id
with the ID of the hosted zone you want to delete.
Motivation: This command is useful when you want to remove a hosted zone and its associated DNS records from AWS Route53. Be cautious as this action is irreversible and will permanently delete all the DNS records in the specified zone.
Arguments:
--id
: The ID of the hosted zone you want to delete.
Example Output: No output will be returned if the deletion is successful.
5. Test DNS Resolving by Amazon Servers
To test DNS resolution by Amazon servers for a specific DNS record in a hosted zone, you can use the test-dns-answer
command.
aws route53 test-dns-answer --hosted-zone-id zone_id --record-name name --record-type type
Replace zone_id
with the ID of the hosted zone you want to test, name
with the name of the DNS record, and type
with the record type (e.g., A, MX, CNAME, etc.).
Motivation: This command allows you to verify that the DNS resolution for a specific DNS record is correctly configured and functioning as expected. It helps you identify any potential issues with your DNS records.
Arguments:
--hosted-zone-id
: The ID of the hosted zone you want to test.--record-name
: The name of the DNS record you want to test.--record-type
: The record type of the DNS record (e.g., A, MX, CNAME, etc.).
Example Output:
{
"RecordName": "example.com.",
"RecordType": "A",
"RecordData": [
{
"Value": "123.45.67.89"
}
],
"ResponseCode": "NOERROR"
}
Conclusion
In this article, we have explored eight different use cases of the aws route53
command-line tool. We have covered how to list all hosted zones, show all records in a zone, create a new public zone, delete a zone, and test DNS resolving by Amazon servers. These examples give you a solid understanding of the capabilities of the aws route53
command and how to effectively manage your DNS configurations in AWS Route53.