As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Migre registros de DNS em massa para uma zona hospedada privada do Amazon Route 53
Ram Kandaswamy, Amazon Web Services
Resumo
Esse padrão automatiza a migração em massa de registros DNS para uma zona hospedada do Amazon Route 53. Ele usa um script Python com o AWS SDK for Python (Boto3) para ler dados de registro de um arquivo JSON armazenado no Amazon Simple Storage Service (Amazon S3) e criar os registros programaticamente usando a API Route 53.
Se seu sistema de origem exporta arquivos de zona BIND padrão, o recurso de importação nativa do Route 53 ou cli53
Use esse padrão quando precisar migrar um grande número de registros DNS de um sistema existente para uma zona hospedada do Route 53 sem criar cada registro manualmente por meio do console.
Pré-requisitos e limitações
Pré-requisitos
Uma conta AWS ativa
Uma planilha do Excel que contém registros de zona hospedada com colunas para nome de domínio totalmente qualificado (FQDN), tipo de registro, tempo de vida (TTL) e valor
A biblioteca Python pandas instalada ()
pip3 install pandasFamiliaridade com os tipos de registro DNS, como registros A, NAPTR e SRV (consulte Tipos de registro DNS compatíveis)
Familiaridade com a linguagem Python e suas bibliotecas
Limitações
Esse padrão não usa todas as propriedades disponíveis da chamada de
change_resource_record_setsAPI. Estenda o código conforme necessário para seu caso de uso.Na planilha do Excel, o valor em cada linha é considerado exclusivo. Espera-se que vários valores para cada FQDN apareçam na mesma linha. Se esse não for o caso, modifique o código para concatenar vários valores para o mesmo FQDN.
Esse padrão chama a API do Route 53 diretamente usando o Boto3. Você pode aprimorar o código para usar um AWS CloudFormation wrapper para os
update_stackcomandoscreate_stacke e usar os valores JSON para preencher os recursos do modelo.Se seu sistema de origem puder exportar registros no formato de arquivo de zona BIND, considere usar o recurso de importação do Route 53.
Alguns AWS serviços não estão disponíveis em todos Regiões da AWS. Para ver a disponibilidade da região, consulte AWSos serviços por região
. Para endpoints específicos, consulte a página Cotas e endpoints de serviços e clique no link correspondente ao serviço desejado.
Arquitetura

O usuário carrega uma planilha do Excel com dados de registro DNS em um bucket do Amazon S3.
Um script Python executado localmente (ou em um IDE como o Kiro) lê o arquivo JSON do bucket do Amazon S3 usando o Boto3.
O script processa os registros e chama a operação da
change_resource_record_setsAPI do Route 53 para criar registros na zona hospedada.
Ferramentas
Serviços da AWS
Outras ferramentas
Kiro — Um IDE com recursos de IA agentes, usado para desenvolver e executar o script de migração do Python. Para obter mais informações, consulte Kiro
. pandas — Uma biblioteca de análise de dados do Python, usada para converter a planilha do Excel para o formato JSON.
Práticas recomendadas
Teste com um pequeno subconjunto de 5 a 10 registros antes de executar o script em todos os registros para verificar a formatação dos dados e a criação correta do registro.
Use a
UPSERTação em vez deCREATE. AUPSERTação cria um registro se ele não existir ou o atualiza se existir. Isso torna o script idempotente e seguro para ser executado novamente.Batch suas alterações em lotes para permanecer dentro dos limites da
ChangeResourceRecordSetssolicitação. Quando você usa aUPSERTação, cadaResourceRecordelemento conta duas vezes para o máximo de 1.000 elementos.Valide os dados antes da inserção. Verifique se os FQDNs terminam com um ponto (
.), se os valores TTL são números inteiros positivos e se os tipos de registro correspondem aos tipos de registro DNS compatíveis.Faça backup dos registros existentes
antes de fazer alterações em massa. Exporte os registros atuais da zona hospedada usando list_resource_record_setspara fornecer um ponto de reversão.Implemente a lógica de repetição com recuo exponencial para lidar com os limites de taxa da API Route 53. Para obter mais informações, consulte Tentativas de erro e recuo exponencial em. AWS
Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de uma tarefa. Para obter mais informações, consulte Conceder privilégios mínimos e melhores práticas de segurança na documentação AWS Identity and Access Management (IAM).
Épicos
| Tarefa | Description | Habilidades necessárias | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
Crie um arquivo Excel para seus registros. |
Exemplo de linha:
| Engenheiro de dados | ||||||||
Converta os dados da planilha do Excel em JSON. |
| Engenheiro de dados, desenvolvedor de Python | ||||||||
Faça upload do arquivo JSON em um bucket do Amazon S3. |
| Desenvolvedor de aplicativos |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Crie uma zona hospedada. |
Você também pode usar uma ferramenta de infraestrutura como código (IaC) AWS CloudFormation para substituir essas etapas por um modelo que cria uma pilha com os recursos e propriedades apropriados. Para obter mais informações, consulte AWS Route 53:: HostedZone na CloudFormation documentação. | Arquiteto de nuvem, administrador de rede, habilidades em Python |
Leia os dados JSON do Amazon S3. |
| Desenvolvedor de aplicativos, desenvolvedor de Python |
Limpe os valores dos dados e insira registros. |
| Desenvolvedor de aplicativos, habilidades em Python |
Solução de problemas
| Problema | Solução |
|---|---|
Erro | Adicione um |
Erro | Esse erro ocorre quando você tenta criar um registro que já existe usando a |
Erro de limitação (limite de taxa excedido) | Você excedeu cinco solicitações de API por segundo. Implemente o recuo exponencial com instabilidade. Para obter mais informações, consulte Tentativas de erro e recuo exponencial em. AWS |
Os registros não estão sendo resolvidos | Verifique se a VPC está associada à zona hospedada e se a resolução de DNS está ativada na VPC. Ambos |
| Os dados contêm espaços inseparáveis ( |
Recursos relacionados
Referências
Criação de registros importando um arquivo de zona (documentação do Route 53)
create_hosted_zone
(documentação do Boto3) change_resource_record_sets
(documentação do Boto3) Tipos de registro DNS compatíveis (documentação do Route 53)
Tutoriais e vídeos
Design de DNS usando o Amazon Route 53
Mais informações
Para registros NAPTR e SRV, o Value campo na planilha do Excel deve conter todos os componentes necessários concatenados em uma única string. Use a função CONCAT do Excel para combinar as propriedades individuais (ordem, preferência, sinalizadores, serviço, expressão regular, substituição do NAPTR; prioridade, peso, porta, destino para SRV) antes de exportar para JSON.
Se sua migração envolver mais de 1.000 registros, divida o arquivo JSON em lotes e processe cada lote separadamente para permanecer dentro dos limites da API do Route 53. Quando você usa a UPSERT ação, cada ResourceRecord elemento conta duas vezes para o máximo de 1.000 elementos por solicitação. ChangeResourceRecordSets
Anexos
Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: attachment.zip