通过AWS命令行工具(CLI)管理DNS记录,可快速实现自动化操作。本教程将涵盖从安装配置到增删查改记录的完整流程。
准备工作
1. 安装AWS CLI
适用系统:
Linux/macOS
bashcurl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
Windows
下载 MSI安装包 并运行
如果有安装scoop,也可以直接通过scoop安装。Scoop
验证安装:
aws --version
2. 配置访问凭证
aws configure
按提示输入以下信息(从IAM控制台获取):
AWS Access Key ID:类似
AKIAxxxxxxxx
AWS Secret Access Key:类似
wJalrxxxxxxxx
Default region name:推荐
us-east-1
Default output format:建议
json
💡 安全提示:建议为CLI创建仅具有
Route53FullAccess
权限的IAM用户,避免使用root账户密钥。
核心操作指南
1. 列出所有托管区域
aws route53 list-hosted-zones
输出示例:
json{
"HostedZones": [{
"Id": "/hostedzone/Z1PA6795EXAMPLE",
"Name": "example.com.",
"ResourceRecordSetCount": 5
}]
}
关键操作:
记录
Id
字段(Z1PA6795EXAMPLE
即为托管区域ID)使用
jq
工具快速提取ID:aws route53 list-hosted-zones | jq -r '.HostedZones[] | .Id'
2. 添加DNS记录
操作流程:
创建
change-record.json
文件:
{
"Changes": [{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "app.example.com",
"Type": "A",
"TTL": 300,
"ResourceRecords": [{ "Value": "192.0.2.1" }]
}
}]
}
执行命令进行添加:
aws route53 change-resource-record-sets --hosted-zone-id Z1PA6795EXAMPLE --change-batch file://change-record.json
重要说明:
支持所有记录类型(CNAME、MX等),修改
Type
即可批量操作:在
Changes
数组中可同时添加多个记录变更返回
Pending
状态需等待传播(通常<60秒)
3. 删除DNS记录
修改JSON文件:
{
"Changes": [{
"Action": "DELETE",
"ResourceRecordSet": {
"Name": "app.example.com",
"Type": "A",
"TTL": 300,
"ResourceRecords": [{ "Value": "192.0.2.1" }]
}
}]
}
使用相同命令执行删除:
aws route53 change-resource-record-sets --hosted-zone-id Z1PA6795EXAMPLE --change-batch file://change-record.json
⚠️ 删除注意事项:
必须与现有记录完全匹配(包括TTL和值)
建议先通过查询确认记录准确信息
4. 记录查询技巧
查询全部记录:
aws route53 list-resource-record-sets --hosted-zone-id Z1PA6795EXAMPLE
精准过滤记录:
aws route53 list-resource-record-sets --hosted-zone-id Z1PA6795EXAMPLE --query "ResourceRecordSets[?Name=='app.example.com.']"
高级技巧
批量导入/导出
结合jq
处理JSON文件,可实现记录集的批量迁移变更跟踪
通过get-change
命令追踪操作状态:aws route53 get-change --id C3B62EXAMPLE
别名记录配置
添加ELB等服务的别名记录:
{
"AliasTarget": {
"HostedZoneId": "Z35SXDOTEXAMPLE",
"DNSName": "dualstack.my-elb.us-east-1.amazonaws.com.",
"EvaluateTargetHealth": false
}
}
常见问题排查
❌ 权限错误
确认IAM用户具有route53:ChangeResourceRecordSets
权限
❌ Invalid JSON格式
使用jsonlint
验证文件格式
❌ 记录已存在
删除前需确保记录完全匹配,包括TTL和值
通过AWS CLI操作Route 53,开发者可轻松实现DNS管理的自动化。建议结合Shell脚本或CI/CD工具,构建高效的基础设施管理流程。
延伸阅读: