¿Cómo exportar una zona alojada en AWS Route 53?

18

No veo ninguna opción para exportar una copia de seguridad de la configuración de un dominio.

Tal vez debería guardar los resultados del DNS público con dig, pero me preguntaría si un amigo conoce una mejor manera.

gpupo
fuente

Respuestas:

27

Sí, puede ser de manera más amigable. Sugiero usar la herramienta cli53, https://github.com/barnybug/cli53

Después de configurarlo, solo intente

exportación cli53 --full sciworth.com

Y obtienes la zona de exportación en formato de enlace.

astlock
fuente
6

No necesita instalaciones de software adicionales. Solo necesitas awscli.

Aquí está lo que acabo de escribir. Es simple y funciona como encanto.

#!/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
fuente
2

Si desea exportar a formato de enlace, puede usar este 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"'
SzTibu
fuente
0

Para exportar una zona alojada en AWS Route 53, siga estos pasos (supongamos que está utilizando la zona alojada de example.com):

Paso 1: Instalación - pip install route53-transfer

Paso 2: haga una copia de seguridad de la zona en un archivo CSV:

route53-transfer dump example.com backup.csv

Use STDOUT en lugar de un archivo

route53-transfer dump example.com –

Paso 3: Restaurar una zona:

route53-transfer load example.com backup.csv

Use -para cargar desde STDIN en su lugar

Migrar entre cuentas:

Utilice modificadores de línea de comando para anular las claves de acceso y secretas:

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 está trabajando con zonas privadas, use –privatepara distinguir dominios privados:

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

Puede suscribirse a Cloudflare.com y agregar un sitio web gratuito.

Cloudflare escaneará su DNS como parte de su incorporación.

Después de la importación (o tal vez durante), en "Avanzado" debajo de los registros DNS, hay un botón Exportar archivo DNS.

Michael Cole
fuente