Wie exportiere ich eine gehostete Zone in AWS Route 53?

Wie exportiere ich eine gehostete Zone in AWS Route 53?

Ich sehe keine Option zum Exportieren einer Sicherungskopie der Einstellungen für eine Domäne.

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

Antwort1

Ja, es kann benutzerfreundlicher sein. Ich schlage vor, das Tool cli53 zu verwenden.https://github.com/barnybug/cli53

Nachdem Sie es eingerichtet haben, versuchen Sie einfach

cli53 export --full sciworth.com

Und Sie erhalten die Exportzone im Bind-Format.

Antwort2

Keine Notwendigkeit für die Installation zusätzlicher Software. Sie benötigen nur awscli.

Hier ist, was ich gerade geschrieben habe. Es ist einfach und funktioniert wunderbar.

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

Antwort3

Wenn Sie in das Bind-Format exportieren möchten, können Sie dieses 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"'

Antwort4

Um eine gehostete Zone in AWS Route 53 zu exportieren, befolgen Sie diese Schritte (nehmen wir an, Sie verwenden die gehostete Zone von example.com):

Schritt 1: Installation –pip install route53-transfer

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

route53-transfer dump example.com backup.csv

Verwenden Sie STDOUT anstelle einer Datei

route53-transfer dump example.com –

Schritt 3: Eine Zone wiederherstellen:

route53-transfer load example.com backup.csv

Verwenden Sie es -stattdessen zum Laden von STDIN

Zwischen Konten migrieren:

Verwenden Sie Befehlszeilenschalter zum Überschreiben der Zugriffs- und geheimen Schlüssel:

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 –privatezur Unterscheidung privater Domänen:

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

verwandte Informationen