cas*_*sen 37 dns amazon-web-services amazon-route53
我想从我的Amazon Route 53设置中导出DNS区域文件.这是可能的,还是只能手动创建zonefiles?(例如通过http://www.zonefile.org/?lang=en)
Ioa*_*ucu 23
这还不可能.你必须使用API ListResourceRecordSets
并自己构建zonefile.
小智 19
以下脚本从Route53以绑定格式导出区域详细信息.将域名作为参数传递给脚本.(这需要安装和配置awscli.)
#!/bin/bash
zonename=$1
hostedzoneid=$(aws route53 list-hosted-zones --output json | jq -r ".HostedZones[] | select(.Name == \"$zonename.\") | .Id" | cut -d'/' -f3)
aws route53 list-resource-record-sets --hosted-zone-id $hostedzoneid --output json | jq -jr '.ResourceRecordSets[] | "\(.Name) \t\(.TTL) \t\(.Type) \t\(.ResourceRecords[].Value)\n"'
Run Code Online (Sandbox Code Playgroud)
Bro*_*shi 14
您可以导出 JSON 文件:
aws route53 list-resource-record-sets --hosted-zone-id <zone-id-here> --output json > route53-records.json
如评论中所述,cli53是使用命令行界面与 Route 53 交互的绝佳工具。
首先,在~/.aws/config
文件中配置您的帐户密钥:
[default]
aws_access_key_id = AK.....ZP
aws_secret_access_key = 8j.....M0
Run Code Online (Sandbox Code Playgroud)
然后,使用export
命令:
$ cli53 export --full --debug example.com > example.com.zone 2> example.com.zone.log
Run Code Online (Sandbox Code Playgroud)
example.com.zone
导出后验证文件以确保正确导出所有内容。
您最近可以导入区域:
$ cli53 import --file ./example.com.zone example.com
Run Code Online (Sandbox Code Playgroud)
如果您想将 Route53 区域从一个 AWS 账户转移到另一个账户,您可以使用该profile
选项。只需将两个命名帐户添加到~/.aws/config
文件中,并profile
在导出和导入期间使用属性引用它们。您甚至可以通过管道传输这两个命令。
基于@szentmarjay 上面的答案,除了它显示用法并支持 zone_id 或 zone_name。这是我最喜欢的,因为它是标准的老式bind
格式,因此其他工具可以用它来做事情。
#!/bin/bash
# r53_export
usage() {
local cmd=$(basename "$0")
echo -e >&2 "\nUsage: $cmd {--id ZONE_ID|--domain ZONE_NAME}\n"
exit 1
}
while [[ $1 ]]; do
if [[ $1 == --id ]]; then shift; zone_id="$1"
elif [[ $1 == --domain ]]; then shift; zone_name="$1"
else usage
fi
shift
done
if [[ $zone_name ]]; then
zone_id=$(
aws route53 list-hosted-zones --output json \
| jq -r ".HostedZones[] | select(.Name == \"$zone_name.\") | .Id" \
| head -n1 \
| cut -d/ -f3
)
echo >&2 "+ Found zone id: '$zone_id'"
fi
[[ $zone_id ]] || usage
aws route53 list-resource-record-sets --hosted-zone-id $zone_id --output json \
| jq -jr '.ResourceRecordSets[] | "\(.Name) \t\(.TTL) \t\(.Type) \t\(.ResourceRecords[]?.Value)\n"'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
35991 次 |
最近记录: |