Registering, changing, and deleting records to Route 53 using AWS CLI
Note:
I verified the use of the parameter “–dns-name” in the command [aws route53 list-hosted-zones-by-name], The returned result did not meet the request. Example:
aws route53 list-hosted-zones-by-name --dns-name example.com
{
"HostedZones": [
{
"Id": "/hostedzone/Z01404082JK1xxxxx",
"Name": "dev.luvina.lixx.",
"CallerReference": "19fc7ef0-58bb-4c14-b086-cd3c7fbbb838",
"Config": {
"Comment": "dev.luvina.lixx",
"PrivateZone": false
},
"ResourceRecordSetCount": 14
}
],
"DNSName": "example.com",
"IsTruncated": false,
"MaxItems": "100"
}
You can search for the zone ID from the host zone name by using the command [aws route53 list-hosted-zones] that specifies the parameter [–query] as shown in the sample below. [1]
Please note that you need to add [.] To the end of the domain name specified in the –query condition. Example: [example.com] → [example.com.]
Sample:
aws route53 list-hosted-zones --query "HostedZones[?Name=='example.com.'].Id" --output text
To register / change / delete records, please use the AWS CLI command [aws route53 change-resource-record-sets] as shown in the sample below. [2]
Sample:
aws route53 change-resource-record-sets --hosted-zone-id <YOUR_HOSTED_ZONE_ID> --change-batch file://example.json
The contents of the [example.json] file should look like this:
{
"Comment": "optional comment about the changes in this change batch request",
"Changes":
[
{
"Action": "CREATE",
"ResourceRecordSet":
{
"Name": "example.com",
"Type": "A",
"TTL": 3600,
"ResourceRecords":
[
{
"Value": "xx.x.x.xx"
}
]
}
}
]
}
References:
[1] list-hosted-zones
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/route53/list-hosted-zones.html
[2] change-resource-record-sets