一、背景
中国区Route53目前是测试阶段,不提供UI,只提供命令行下CLI操作。因此需要用户从这里下载AWS CLI并配置好密钥。这部分基础操作这里略过。
注意,国内和国外环境,用的是同一个CLI工具。但是需要配置的密钥key不同。
二、创建Route53托管Zone
Route53服务有两种zone,一种是public的,可以从internet上查询到这个域名的解析,第二种是内部的,只在VPC内查询。本文面向第一种,即public解析服务。
输入命令。
aws route53 create-hosted-zone --name abc.com --region cn-northwest-1 --endpoint-url https://api.route53.cn --caller-reference "2020-02-05-2239PM"
这里需要注意:
- abc.com是要解析的域名
- –region cn-northwest-1 必须是宁夏区域,不能写北京区域
- –endpoint-url 这个不能修改
- –caller-reference 是调用的唯一标示,可以自行写一个时间戳
执行后效果如下。
在如上截图中,请注意,1)复制命令到控制台窗口的时候不要不小心多打入空格,则命令行会提示参数失败。2)注意第一个红色框中的ID,后续要使用。3)注意系统自动生成的NS记录,要去域名注册商哪里修改。
请注意:每次不同的域名zone生成,系统给出的NS记录都是不一样的。因此当您动手做实验或者配置真实的环境时候,请使用自己操作命令行,系统反馈出来的NS记录去完成后续操作。
三、在域名注册商处变更NS记录
这步骤需要到域名注册商完成。例如在Godaddy上的修改如下。
四、解析记录管理
1、创建记录
首先编辑一个JSON文件,文件名叫做record.json,内容如下。
{
"Comment": "Testing public hosted zone in BJS",
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet":
{
"Name": "web.abc.com",
"Type": "A",
"TTL": 60,
"ResourceRecords": [
{
"Value": "10.200.0.1"
}
]
}
}
]
}
保存在当前目录下。
注意以上的写法,web.abc.com要写全,而不只写A记录 web 三个字母。如果是CNAME、MX等记录,请注意记录类型的英文本身全大写,解析到的对象补全完整的abc.com的后缀。然后到CLI上执行如下命令。
aws route53 change-resource-record-sets --hosted-zone-id Z324E925JJNPZU --change-batch file://record.json --region cn-northwest-1 --endpoint-url https://api.route53.cn
请注意确保record.json在当前目录下。另外zone-id要换成上一步里边输出的ID。执行后效果如下。
现在运行下dig查询结果。如下截图,可以看到查询结果正常。
2、修改记录
修改记录时候,需要编辑record.json,改成如下。
{
"Comment": "Testing public hosted zone in BJS",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet":
{
"Name": "web.abc.com",
"Type": "A",
"TTL": 60,
"ResourceRecords": [
{
"Value": "192.168.0.100"
}
]
}
}
]
}
其中主要替换的就是将创建时候的record.json文件中,有一个字段是action,里边的行为从CREATE改成UPSERT。并且改动IP地址。然后执行如下命令。
aws route53 change-resource-record-sets --hosted-zone-id Z324E925JJNPZU --change-batch file://record.json --region cn-northwest-1 --endpoint-url https://api.route53.cn
执行后返回如下。
现在我们运行dig查询命令,检查解析是否生效。
可以看到解析生效,新的解析结果已经是变成了修改后的地址。
3、显示本域名下所有解析记录
执行如下命令。
aws route53 list-resource-record-sets --hosted-zone-id Z324E925JJNPZU --region cn-northwest-1 --endpoint-url https://api.route53.cn
注意替换命令中的zone-id为实际ID。执行结果如下。
4、删除记录
删除记录的方法是,修改record.json文件。替换Action行为中的UPSERT为DELETE,文件如下。
{
"Comment": "Testing public hosted zone in BJS",
"Changes": [
{
"Action": "DELETE",
"ResourceRecordSet":
{
"Name": "web.abc.com",
"Type": "A",
"TTL": 60,
"ResourceRecords": [
{
"Value": "192.168.0.100"
}
]
}
}
]
}
保存文件。然后执行命令。
aws route53 change-resource-record-sets --hosted-zone-id Z324E925JJNPZU --change-batch file://record.json --region cn-northwest-1 --endpoint-url https://api.route53.cn
命令执行结果如下。
删除完成。再运行查询命令,可以看到刚才的A记录已经不存在了。请注意,每个新创建的domain或者叫zone都有默认的NS记录和SOA记录,请不要删除。
五、删除域名解析zone
对本Domain或者也成为Hosted Zone不再使用需要删除整个域名的话,应先删除其中的记录,然后才能删除整个zone。
如果当前的域名zone内不是空的,还包含有解析记录,那么执行删除时候会报告如下错误:
An error occurred (HostedZoneNotEmpty) when calling the DeleteHostedZone operation: The specified hosted zone contains non-required resource record sets and so cannot be deleted.
这表示域名那还有记录没有删除。请参考前文的操作,完全删除本域名那的A记录、CNAME记录,MX记录等。NS记录和SOA是两条特殊记录,是刚一创建这个ZONE时候就存在的。因此这两个不需要删除。
现在执行如下命令:
aws route53 delete-hosted-zone --id Z324E925JJNPZU --region cn-northwest-1 --endpoint-url https://api.route53.cn
请注意需要替换zone-id为实际的值。执行后结果如下。
至此操作完成。
六、小结
在AWS中国区域Route53服务没有完全上线前,可以参考本文的方法,在CLI下完成域名解析的创建和使用。
全文完。