如何使用cli53在Route53中创建/更新SRV记录?
使用cli53在启动时自动创建/更新Route53 SRV记录
别担心,我会一步步帮你把这个问题搞定,尽量把命令和步骤讲得简单直白,完全适配不熟悉Linux操作和脚本的朋友。
先确认前置条件
在开始之前,有两个关键事项要搞定:
- 给你的EC2实例绑定一个IAM角色,这个角色必须包含
route53:ChangeResourceRecordSets权限,权限范围要覆盖你要操作的Route53区域(可以指定区域的ARN,比如arn:aws:route53:::hostedzone/ZONE_ID) - 验证cli53能正常运行:手动执行
cli53 --version,能返回版本号就说明没问题
核心命令:创建/更新SRV记录
cli53的change命令支持UPSERT操作——这是最适合你的场景的操作:如果目标SRV记录已经存在就更新它,不存在就直接创建,完全不用管之前的状态,非常适合放到启动脚本里重复执行。
命令模板
cli53 change YOUR_DOMAIN. UPSERT \ --srv "_SERVICE._PROTOCOL" TTL IN SRV PRIORITY WEIGHT PORT TARGET_HOST.
替换占位符说明
把上面命令里的占位符换成你的实际信息:
YOUR_DOMAIN.:你的Route53区域域名,注意末尾必须加.,比如example.com._SERVICE._PROTOCOL:SRV记录的服务+协议前缀,比如SIP服务用_sip._tcp,XMPP用_xmpp._tcpTTL:记录的生存时间,单位秒,一般设300(5分钟)就足够PRIORITY:SRV优先级,数字越小优先级越高,比如主服务器用10,备份服务器可以设20WEIGHT:同优先级下的负载权重,数字越高流量占比越大,备份服务器可以设5PORT:你的服务监听的端口,比如SIP默认是5060TARGET_HOST.:你的EC2实例对应的域名(比如弹性IP绑定的域名),注意末尾要加.,比如backup-server.example.com.
示例命令
假设你要为SIP服务创建备份SRV记录,实际命令就是:
cli53 change example.com. UPSERT \ --srv "_sip._tcp" 300 IN SRV 20 5 5060 backup-ec2.example.com.
把命令加入开机启动脚本(Systemd系统)
现在AWS EC2的主流镜像(比如Amazon Linux 2、Ubuntu 18.04+)都用Systemd,我们可以创建一个开机自动执行的服务:
- 创建服务配置文件
用编辑器创建/etc/systemd/system/update-route53-srv.service,内容如下(记得替换成你的实际命令):
[Unit] Description=Update Route53 SRV Record on Startup After=network.target # 确保网络完全就绪后再执行命令 [Service] Type=oneshot # 只执行一次 ExecStart=/usr/local/bin/cli53 change example.com. UPSERT --srv "_sip._tcp" 300 IN SRV 20 5 5060 backup-ec2.example.com. [Install] WantedBy=multi-user.target # 在多用户模式下自动启动
- 启用开机服务
执行下面的命令让服务生效并开机自动运行:
sudo systemctl daemon-reload sudo systemctl enable update-route53-srv.service
最后测试一下
先手动执行一遍你的cli53命令,去Route53控制台确认记录是否正确创建/更新;没问题的话重启EC2实例,再去控制台验证开机是否自动执行了更新操作。
如果遇到权限错误,检查IAM角色的权限配置是否正确;如果命令执行失败,仔细核对占位符有没有替换对,尤其是域名末尾的.绝对不能漏!
内容的提问来源于stack exchange,提问作者Travis N
相关产品推荐
相关产品推荐

