Bagaimana cara mengekspor zona yang diinangi di AWS Route 53?

18

Saya tidak melihat opsi untuk mengekspor cadangan pengaturan untuk domain.

Mungkin saya harus menyimpan hasil DNS publik dengan menggali tetapi saya akan mempertanyakan apakah seorang teman tahu cara yang lebih baik.

gpupo
sumber

Jawaban:

27

Ya, ini bisa menjadi cara yang lebih ramah. Saya sarankan menggunakan alat cli53, https://github.com/barnybug/cli53

Setelah Anda mengaturnya, coba saja

ekspor cli53 --full sciworth.com

Dan Anda mendapatkan zona ekspor dalam format bind.

astlock
sumber
6

Tidak perlu instalasi perangkat lunak tambahan. Anda hanya perlu awscli.

Inilah yang baru saja saya tulis. Sederhana dan berfungsi seperti pesona.

#!/bin/bash -e
#
#  Author: Peycho Dimitrov
#
#  DESCRIPTION
#
#  Create full backup of all hosted Route53 zones / domains in your account.
#
#  REQUIREMENTS
#
#  Available s3 bucket (where your json files will be saved)
#  awscli (with cofigured credentials or IAM role)
#  gzip
#  awk
#
####################################

#  CONFIGURATION

region="us-east-1" # Your aws region
b_route53_tmp="/tmp/r53_backup" # Your temp directory
b_route53_bucket="s3://my-backups/route53" # Your backup folder in s3.

# END OF CONFIGURATION

# Do not edit here if you don't know what your're doing! #

mkdir -p $b_route53_tmp
echo "$(date) Backup all Route53 zones and resource records."
p_aws="$(which aws) --region $region"
r53_zones=$($p_aws route53 list-hosted-zones --query '[HostedZones[*].[Id, Name]]' --output text | awk -F'/' '{print $3}')
if [ ! -z "$r53_zones" ]; then
        while read route; do
                zone=$(echo "$route" | awk '{print $1}')
                domain=$(echo "$route" | awk '{print $2}')
                echo "Processing $zone / $domain"
                $p_aws route53 list-resource-record-sets --hosted-zone-id "$zone" --output json > "$b_route53_tmp"/$(date +%Y%m%d%H%M%S)-"$zone"-"$domain"backup.json
        done <<<"$r53_zones"

        echo "Archive json files."
        gzip "$b_route53_tmp"/*backup.json
        echo "Backup $zone / $domain data to $b_route53_bucket/$(date +%Y)/$(date +%m)/$(date +%d)/"
        $p_aws s3 cp "$b_route53_tmp"/ $b_route53_bucket/$(date +%Y)/$(date +%m)/$(date +%d)/ --exclude "*" --include "*.gz" --recursive
fi

echo "$(date) Done!"
Peycho Dimitrov
sumber
2

Jika Anda ingin mengekspor ke format bind, Anda dapat menggunakan skrip ini:

#!/bin/bash

zonename=$1
hostedzoneid=$(aws route53 list-hosted-zones | 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"'
SzTibu
sumber
0

Untuk mengekspor zona yang diinangi di AWS Route 53, ikuti langkah-langkah ini (katakanlah Anda menggunakan zona yang diinangi example.com):

Langkah 1: Instalasi - pip install route53-transfer

Langkah 2: Cadangkan zona ke file CSV:

route53-transfer dump example.com backup.csv

Gunakan STDOUT sebagai ganti file

route53-transfer dump example.com –

Langkah 3: Kembalikan zona:

route53-transfer load example.com backup.csv

Gunakan -untuk memuat dari STDIN saja

Bermigrasi antar akun:

Gunakan sakelar baris perintah untuk mengganti akses dan kunci rahasia:

route53-transfer --access-key-id=ACCOUNT1 --secret-key=SECRET dump example.com
route53-transfer --access-key-id=ACCOUNT2 --secret-key=SECRET load example.com

Jika Anda bekerja dengan zona pribadi, gunakan –privateuntuk membedakan domain pribadi:

route53-transfer --private dump example.com example-private.csv
route53-transfer dump example.com example-public.csv
Dina Kaiser
sumber
-1

Anda dapat mendaftar ke Cloudflare.com dan menambahkan situs web gratis.

Cloudflare akan memindai DNS Anda sebagai bagian dari onboarding-nya.

Setelah impor (atau mungkin selama), dalam "Lanjutan" di bawah catatan DNS, ada tombol Ekspor file DNS.

Michael Cole
sumber