Como exportar uma zona hospedada no AWS Route 53?

18

Não vejo opção para exportar um backup das configurações de um domínio.

Talvez eu deva salvar os resultados do DNS público com escavação, mas gostaria de perguntar se um amigo conhece uma maneira melhor.

gpupo
fonte

Respostas:

27

Sim, pode ser uma maneira mais amigável. Sugiro usar a ferramenta cli53, https://github.com/barnybug/cli53

Depois de configurá-lo, tente

exportação cli53 - sciworth.com completo

E você obtém a zona de exportação no formato de ligação.

astlock
fonte
6

Não há necessidade de instalações de software adicionais. Você precisa apenas de awscli.

Aqui está o que eu acabei de escrever. É simples e funciona como 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!"
Peycho Dimitrov
fonte
2

Se você deseja exportar para o formato de ligação, pode 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
fonte
0

Para exportar uma zona hospedada no AWS Route 53, siga estas etapas (digamos que você esteja usando a zona hospedada example.com):

Etapa 1: Instalação - pip install route53-transfer

Etapa 2: Faça backup da zona em um arquivo CSV:

route53-transfer dump example.com backup.csv

Use STDOUT em vez de um arquivo

route53-transfer dump example.com –

Etapa 3: Restaurar uma zona:

route53-transfer load example.com backup.csv

Use -para carregar a partir de STDIN

Migrar entre contas:

Use opções de linha de comando para substituir as chaves secretas e de acesso:

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

Se você estiver trabalhando com zonas privadas, use –privatepara distinguir domínios particulares:

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

Você pode se inscrever no Cloudflare.com e adicionar um site gratuito.

O Cloudflare examinará seu DNS como parte de sua integração.

Após a importação (ou talvez durante), em "Avançado" abaixo dos registros DNS, existe um botão Exportar arquivo DNS.

Michael Cole
fonte