Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Migrer des enregistrements DNS en masse vers une zone hébergée privée Amazon Route 53
Ram Kandaswamy, Amazon Web Services
Résumé
Ce modèle automatise la migration en masse des enregistrements DNS vers une zone hébergée Amazon Route 53. Il utilise un script Python associé au AWS SDK pour Python (Boto3) pour lire les données d'enregistrement d'un fichier JSON stocké dans Amazon Simple Storage Service (Amazon S3) et créer les enregistrements par programmation à l'aide de l'API Route 53.
Si votre système source exporte des fichiers de zone BIND standard, la fonctionnalité d'importation native de Route 53 ou cli53
Utilisez ce modèle lorsque vous devez migrer un grand nombre d'enregistrements DNS d'un système existant vers une zone hébergée Route 53 sans créer chaque enregistrement manuellement via la console.
Conditions préalables et limitations
Conditions préalables
Un compte AWS actif
Feuille de calcul Excel contenant des enregistrements de zone hébergée avec des colonnes pour le nom de domaine complet (FQDN), le type d'enregistrement, la durée de vie (TTL) et la valeur
Python 3.12 ou version ultérieure (voir Télécharger Python
) La bibliothèque Python Pandas installée ()
pip3 install pandasConnaissance des types d'enregistrement DNS tels que les enregistrements A, NAPTR et SRV (voir Types d'enregistrements DNS pris en charge)
Connaissance du langage Python et de ses bibliothèques
Limites
Ce modèle n'utilise pas toutes les propriétés disponibles de l'appel
change_resource_record_setsd'API. Étendez le code selon les besoins de votre cas d'utilisation.Dans la feuille de calcul Excel, la valeur de chaque ligne est supposée être unique. Plusieurs valeurs pour chaque FQDN devraient apparaître dans la même ligne. Si ce n'est pas le cas, modifiez le code pour concaténer plusieurs valeurs pour le même FQDN.
Ce modèle appelle l'API Route 53 directement à l'aide de Boto3. Vous pouvez améliorer le code pour utiliser un AWS CloudFormation wrapper pour les
update_stackcommandescreate_stacket et utiliser les valeurs JSON pour renseigner les ressources du modèle.Si votre système source peut exporter des enregistrements au format de fichier de zone BIND, pensez plutôt à utiliser la fonctionnalité d'importation Route 53.
Certains AWS services ne sont pas disponibles dans tous les cas Régions AWS. Pour connaître la disponibilité par région, consultez la section AWSServices par région
. Pour des points de terminaison spécifiques, consultez la page Points de terminaison et quotas du service, puis choisissez le lien vers le service.
Architecture

L'utilisateur télécharge une feuille de calcul Excel contenant les données d'enregistrement DNS dans un compartiment Amazon S3.
Un script Python exécuté localement (ou dans un IDE tel que Kiro) lit le fichier JSON depuis le compartiment Amazon S3 à l'aide de Boto3.
Le script traite les enregistrements et appelle l'opération d'
change_resource_record_setsAPI Route 53 pour créer des enregistrements dans la zone hébergée.
Outils
Services AWS
Autres outils
Kiro — Un IDE doté de fonctionnalités d'intelligence artificielle, utilisé pour développer et exécuter le script de migration Python. Pour plus d'informations, consultez Kiro.
pandas — Une bibliothèque d'analyse de données Python, utilisée pour convertir la feuille de calcul Excel au format JSON.
Bonnes pratiques
Testez avec un petit sous-ensemble de 5 à 10 enregistrements avant d'exécuter le script sur tous les enregistrements afin de vérifier le formatage des données et la création correcte des enregistrements.
Utilisez l'
UPSERTaction au lieu deCREATE. L'UPSERTaction crée un enregistrement s'il n'existe pas ou le met à jour s'il existe. Cela rend le script idempotent et peut être réexécuté en toute sécurité.Batch vos modifications pour respecter les limites des
ChangeResourceRecordSetsdemandes. Lorsque vous utilisez cetteUPSERTaction, chaqueResourceRecordélément compte deux fois dans le calcul du maximum de 1 000 éléments.Validez les données avant de les insérer. Vérifiez que les noms de domaine complets se terminent par un point (
.), que les valeurs TTL sont des entiers positifs et que les types d'enregistrement correspondent aux types d'enregistrements DNS pris en charge.Sauvegardez les enregistrements existants
avant d'apporter des modifications groupées. Exportez les enregistrements actuels de la zone hébergée en utilisant list_resource_record_setspour fournir un point de restauration.Implémentez une logique de nouvelle tentative avec un ralentissement exponentiel pour gérer les limites de débit de l'API Route 53. Pour plus d'informations, consultez la section Rétentatives d'erreur et recul exponentiel dans. AWS
Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections Accorder le moindre privilège et Bonnes pratiques en matière de sécurité dans la documentation Gestion des identités et des accès AWS (IAM).
Épopées
| Sous-tâche | Description | Compétences requises | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
Créez un fichier Excel pour vos dossiers. |
Exemple de ligne :
| Ingénieur de données | ||||||||
Convertissez les données de la feuille de calcul Excel en JSON. |
| Ingénieur de données, développeur Python | ||||||||
Téléchargez le fichier JSON dans un compartiment Amazon S3. |
| Développeur d’applications |
| Sous-tâche | Description | Compétences requises |
|---|---|---|
Créez une zone hébergée. |
Vous pouvez également utiliser un outil d'infrastructure en tant que code (IaC) AWS CloudFormation pour remplacer ces étapes par un modèle qui crée une pile avec les ressources et les propriétés appropriées. Pour plus d'informations, consultez AWS Route 53 : : HostedZone dans la CloudFormation documentation. | Architecte cloud, administrateur réseau, compétences en Python |
Lisez les données JSON depuis Amazon S3. |
| Développeur d'applications, développeur Python |
Nettoyez les valeurs des données et insérez des enregistrements. |
| Développeur d'applications, compétences en Python |
Résolution des problèmes
| Problème | Solution |
|---|---|
| Ajoutez un |
| Cette erreur se produit lorsque vous essayez de créer un enregistrement qui existe déjà à l'aide de l' |
Erreur de régulation (limite de débit dépassée) | Vous avez dépassé les cinq demandes d'API par seconde. Implémentez un recul exponentiel avec instabilité. Pour plus d'informations, consultez la section Rétentatives d'erreur et recul exponentiel dans. AWS |
Les dossiers ne sont pas résolus | Vérifiez que le VPC est associé à la zone hébergée et que la résolution DNS est activée sur le VPC. Les deux |
| Les données contiennent des espaces non interrompus ( |
Ressources connexes
Références
Création d'enregistrements en important un fichier de zone (documentation Route 53)
create_hosted_zone
(documentation de Boto3) Types d'enregistrements DNS pris en charge (documentation Route 53)
Rétentatives d'erreur et ralentissement exponentiel dans AWS
Tutoriels et vidéos
Conception de DNS à l'aide d'Amazon Route 53
Informations supplémentaires
Pour les enregistrements NAPTR et SRV, le Value champ de la feuille de calcul Excel doit contenir tous les composants requis concaténés en une seule chaîne. Utilisez la fonction CONCAT d'Excel pour combiner les propriétés individuelles (ordre, préférence, drapeaux, service, expression régulière, remplacement de NAPTR ; priorité, poids, port, cible pour SRV) avant d'exporter au format JSON.
Si votre migration implique plus de 1 000 enregistrements, divisez le fichier JSON en lots et traitez chaque lot séparément pour respecter les limites de l'API Route 53. Lorsque vous utilisez l'UPSERTaction, chaque ResourceRecord élément compte deux fois dans le calcul du maximum de 1 000 éléments par demande. ChangeResourceRecordSets