Wie exportiere ich eine gehostete Zone in AWS Route 53?


18

Ich sehe keine Möglichkeit, ein Backup der Einstellungen für eine Domain zu exportieren.

Vielleicht sollte ich die Ergebnisse des öffentlichen DNS mit dig speichern, aber ich würde fragen, ob ein Freund einen besseren Weg kennt.

Antworten:



6

Keine zusätzlichen Softwareinstallationen erforderlich. Du brauchst nur awscli.

Hier ist, was ich gerade geschrieben habe. Es ist einfach und wirkt wie Charme.

#!/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!"

2

Wenn Sie in das Bindungsformat exportieren möchten, können Sie das folgende Skript verwenden:

#!/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"'

0

Führen Sie die folgenden Schritte aus, um eine gehostete Zone in AWS Route 53 zu exportieren (Beispiel: Sie verwenden die gehostete Zone example.com):

Schritt 1: Installation - pip install route53-transfer

Schritt 2: Sichern Sie die Zone in eine CSV-Datei:

route53-transfer dump example.com backup.csv

Verwenden Sie STDOUT anstelle einer Datei

route53-transfer dump example.com –

Schritt 3: Wiederherstellen einer Zone:

route53-transfer load example.com backup.csv

Verwenden -Sie stattdessen, um von STDIN zu laden

Zwischen Konten migrieren:

Verwenden Sie Befehlszeilenoptionen, um den Zugriff und die geheimen Schlüssel zu überschreiben:

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

Wenn Sie mit privaten Zonen arbeiten, verwenden Sie –private, um private Domänen zu unterscheiden:

route53-transfer --private dump example.com example-private.csv
route53-transfer dump example.com example-public.csv

-1

Sie können sich bei Cloudflare.com anmelden und eine kostenlose Website hinzufügen.

Cloudflare scannt Ihren DNS als Teil seiner Integration.

Nach dem Import (oder möglicherweise während) befindet sich unter "Erweitert" unter den DNS-Einträgen eine Schaltfläche "DNS-Datei exportieren".

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.