使用AWS CLI操作Route53

一、背景

中国区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下完成域名解析的创建和使用。

全文完。