Réponses:
Oui, cela peut être plus convivial. Je suggère d'utiliser l'outil cli53, https://github.com/barnybug/cli53
Après l'avoir configuré, essayez simplement
cli53 export --full sciworth.com
Et vous obtenez la zone d'exportation au format bind.
Pas besoin d'installations logicielles supplémentaires. Vous n'avez besoin que d'awscli.
Voici ce que je viens d'écrire. C'est simple et fonctionne comme du 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!"
Si vous souhaitez exporter pour lier le format, vous pouvez utiliser ce script:
#!/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"'
Pour exporter une zone hébergée dans AWS Route 53, procédez comme suit (disons que vous utilisez la zone hébergée example.com):
Étape 1: installation - pip install route53-transfer
Étape 2: Sauvegardez la zone dans un fichier CSV:
route53-transfer dump example.com backup.csv
Utilisez STDOUT au lieu d'un fichier
route53-transfer dump example.com –
Étape 3: restaurer une zone:
route53-transfer load example.com backup.csv
Utilisez -
pour charger à partir de STDIN à la place
Migrer entre les comptes:
Utilisez des commutateurs de ligne de commande pour remplacer les clés d'accès et secrètes:
route53-transfer --access-key-id=ACCOUNT1 --secret-key=SECRET dump example.com
route53-transfer --access-key-id=ACCOUNT2 --secret-key=SECRET load example.com
Si vous travaillez avec des zones privées, utilisez –private
pour distinguer les domaines privés:
route53-transfer --private dump example.com example-private.csv
route53-transfer dump example.com example-public.csv
Vous pouvez vous inscrire à Cloudflare.com et ajouter un site Web gratuit.
Cloudflare analysera votre DNS dans le cadre de son intégration.
Après l'importation (ou peut-être pendant), dans "Avancé" sous les enregistrements DNS, il y a un bouton Exporter le fichier DNS.