diagnostics_cheat_sheets/cheat-sheets/Route53-AWS-CLI-examples.adoc
hhftechnologies ccdfb79a59 update
2024-10-01 11:45:28 +05:30

143 lines
3.1 KiB
Text

= Route53 AWS CLI examples cookbook
:homepage: https://yurisk.info
:toc:
Author: Yuri Slobodyanyuk, https://www.linkedin.com/in/yurislobodyanyuk/
== Short Introduction
* AWS Route53 is the only service with 100% SLA.
* Amazon Registrar does domain registration only for _.com, .org, .net_ domains, the
rest are registered via _Gandi SAS_
== List all hosted zones (private and public)
[source, bash]
----
aws route53 list-hosted-zones
----
If you are using configuration profiles:
[source, bash]
----
aws route53 list-hosted-zones --profile <profile-name>
----
This command returns _zone-id_ you will need in future queries.
== Show all records of a zone
[source, bash]
----
aws route53 list-resource-record-sets --hosted-zone-id Z3HR6JS50CWURT
----
=== Filter output for specific records
Show all and only A records from a zone:
----
aws route53 list-resource-record-sets --hosted-zone-id ZN36CWKHEDURT \
--query "ResourceRecordSets[?Type == 'A'] "
----
Show only records matching the given record value (here _www.yurisk.info_):
----
aws route53 list-resource-record-sets --hosted-zone-id ZN36CWKHEDURT \
--query "ResourceRecordSets[?Name == 'www.yurisk.info.'] "
----
NOTE: AWS returns maximum 100 items in one response. Use paging with `NextToken`
if you expect to get more results.
== Create a new public zone
Create a new public zone named _example334455.com_:
----
aws route53 create-hosted-zone --name example334455.com \
--caller-reference some-text-for-me-for-reference
----
On success returns zone's ID, request status (e.g. `Pending`), allocated name
servers. The `caller-reference` you set is used for identifying this request in
logs etc. and can be arbitrary string.
== Add A record to a zone
While mainly expected to store the record in JSON format in a local file, we
can specify the record(s) to add explicitly with `--change-batch`. Let's add A
record _www.example334455.com_ wtih TTL of 600, pointing to IP _1.2.3.4_:
----
aws route53 change-resource-record-sets --hosted-zone-id Z0967968IADGHN5TI3WW \
--change-batch '
{
"Comment": "Adding A record",
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "www.example334455.com",
"Type": "A",
"TTL": 600,
"ResourceRecords": [
{
"Value": "1.2.3.4"
}
]
}
}
]
}
'
----
== Delete a record from a zone
Let's delete the A record just created _www.example334455.com_ (we use
`Action:DELETE`):
----
aws route53 change-resource-record-sets --hosted-zone-id Z0967968IADGHN5TI3WW \
--change-batch '
{
"Comment": "Adding A record",
"Changes": [
{
"Action": "DELETE",
"ResourceRecordSet": {
"Name": "www.example334455.com",
"Type": "A",
"TTL": 600,
"ResourceRecords": [
{
"Value": "1.2.3.4"
}
]
}
}
]
}
'
----
== Delete a zone completely
NOTE: You cannot delete a non-empty zone, have to 1st delete all records except
NS.
Trying to delete a zone with other than NS records gives this error:
----
An error occurred (HostedZoneNotEmpty) when calling the DeleteHostedZone
operation: The specified hosted zone contains non-required resource record
sets and so cannot be deleted
----
We delete the empty zone _example334455.com_:
----
aws route53 delete-hosted-zone --id Z0967968IADGHN5TI3WW
----