

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
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone"></a>

*Ram Kandaswamy, Amazon Web Services*

## Résumé
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-summary"></a>

Les ingénieurs réseau et les administrateurs cloud ont besoin d'un moyen simple et efficace d'ajouter des enregistrements DNS (Domain Name System) aux zones hébergées privées sur Amazon Route 53. L'utilisation d'une approche manuelle pour copier les entrées d'une feuille de calcul Microsoft Excel vers les emplacements appropriés de la console Route 53 est fastidieuse et source d'erreurs. Ce modèle décrit une approche automatisée qui réduit le temps et les efforts nécessaires pour ajouter plusieurs enregistrements. Il fournit également un ensemble d'étapes répétables pour la création de plusieurs zones hébergées.

Ce modèle utilise Amazon Simple Storage Service (Amazon S3) pour stocker les enregistrements. Pour travailler efficacement avec les données, le modèle utilise le format JSON en raison de sa simplicité et de sa capacité à prendre en charge un dictionnaire Python (type de `dict` données).

**Note**  
Si vous pouvez générer un fichier de zone à partir de votre système, pensez plutôt à utiliser la [fonctionnalité d'importation Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating-import.html).

## Conditions préalables et limitations
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-prereqs"></a>

**Conditions préalables**
+ Feuille de calcul Excel contenant des enregistrements de zones hébergées privées
+ Connaissance des différents types d'enregistrements DNS tels que l'enregistrement A, l'enregistrement NAPTR (Name Authority Pointer) et l'enregistrement SRV (voir Types d'[enregistrements DNS pris en charge](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html))
+ Connaissance du langage Python et de ses bibliothèques

**Limites**
+ Le modèle ne fournit pas une couverture étendue pour tous les scénarios d'utilisation. Par exemple, l'appel [change\$1resource\$1record\$1sets](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.change_resource_record_sets) n'utilise pas toutes les propriétés disponibles de l'API.
+ Dans la feuille de calcul Excel, la valeur de chaque ligne est supposée être unique. Plusieurs valeurs pour chaque nom de domaine complet (FQDN) devraient apparaître dans la même ligne. Si ce n'est pas le cas, vous devez modifier le code fourni dans ce modèle pour effectuer la concaténation nécessaire.
+ Le modèle utilise le SDK AWS pour Python (Boto3) pour appeler directement le service Route 53. Vous pouvez améliorer le code pour utiliser un CloudFormation wrapper AWS pour les `update_stack` commandes `create_stack` and, et utiliser les valeurs JSON pour renseigner les ressources du modèle.

## Architecture
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-architecture"></a>

**Pile technologique**
+ Route 53 zones hébergées privées pour acheminer le trafic
+ Amazon S3 pour le stockage du fichier JSON de sortie

![\[Flux de travail pour la migration d'enregistrements DNS en masse vers une zone hébergée privée Route 53.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a81c29ea-f0c5-4d4a-ba87-93111a0f1ee9/images/2ada844b-4147-4f9f-8883-d22605aa42d8.png)


Le flux de travail comprend les étapes suivantes, comme illustré dans le schéma précédent et décrit dans la section *Epics* :

1. Téléchargez une feuille de calcul Excel contenant les informations du jeu d'enregistrements dans un compartiment S3.

1. Créez et exécutez un script Python qui convertit les données Excel au format JSON.

1. Lisez les enregistrements du compartiment S3 et nettoyez les données.

1. Créez des ensembles de records dans votre zone hébergée privée.

## Outils
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-tools"></a>
+ [Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) — Amazon Route 53 est un service Web DNS hautement disponible et évolutif qui gère l'enregistrement des domaines, le routage DNS et la vérification de l'état de santé.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) — Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets. Vous pouvez utiliser Amazon S3 pour stocker et récupérer n'importe quelle quantité de données, n'importe quand et depuis n'importe quel emplacement sur le Web.

## Épopées
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-epics"></a>

### Préparer les données pour l'automatisation
<a name="prepare-data-for-automation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un fichier Excel pour vos dossiers. | Utilisez les enregistrements que vous avez exportés depuis votre système actuel pour créer une feuille de calcul Excel contenant les colonnes requises pour un enregistrement, telles que le nom de domaine complet (FQDN), le type d'enregistrement, le temps de vie (TTL) et la valeur. Pour les enregistrements NAPTR et SRV, la valeur est une combinaison de plusieurs propriétés. Utilisez donc la `concat` méthode d'Excel pour combiner ces propriétés.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone.html) | Ingénieur de données, compétences Excel | 
| Vérifiez l'environnement de travail. | Dans votre IDE, créez un fichier Python pour convertir la feuille de calcul d'entrée Excel au format JSON. (Au lieu d'un IDE, vous pouvez également utiliser un SageMaker bloc-notes Amazon pour travailler avec du code Python.)Vérifiez que la version de Python que vous utilisez est la version 3.7 ou ultérieure.<pre> python3 --version</pre>Installez le package **pandas**.<pre> pip3 install pandas --user</pre> | AWS général | 
| Convertissez les données de la feuille de calcul Excel en JSON. | Créez un fichier Python contenant le code suivant pour convertir Excel en JSON.<pre>import pandas as pd<br />data=pd.read_excel('./Book1.xls')<br />data.to_json(path_or_buf='my.json',orient='records')</pre>où `Book1` est le nom de la feuille de calcul Excel et `my.json` le nom du fichier JSON de sortie. | Ingénieur de données, compétences en Python | 
| Téléchargez le fichier JSON dans un compartiment S3. | Chargez le fichier `my.json` dans un compartiment S3. Pour plus d'informations, consultez [la section Création d'un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) dans la documentation Amazon S3. | Développeur d’applications | 
| FqdnName | RecordType | Value | TTL | 
| something.exemple.org | A | 1.1.1.1 | 900 | 

### Insérer des enregistrements
<a name="insert-records"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une zone hébergée privée. | Utilisez l'[API create\$1hosted\$1zone et l'](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.create_hosted_zone)exemple de code Python suivant pour créer une zone hébergée privée. Remplacez les paramètres `hostedZoneName``vpcRegion`, et `vpcId` par vos propres valeurs.<pre>import boto3<br />import random<br />hostedZoneName ="xxx"<br />vpcRegion = "us-east-1"<br />vpcId="vpc-xxxx"<br />route53_client = boto3.client('route53')<br />response = route53_client.create_hosted_zone(<br />        Name= hostedZoneName,<br />        VPC={<br />            'VPCRegion: vpcRegion,<br />            'VPCId': vpcId<br />        },<br />        CallerReference=str(random.random()*100000),<br />        HostedZoneConfig={<br />            'Comment': "private hosted zone created by automation",<br />            'PrivateZone': True<br />        }<br />    )<br /> print(response)</pre>Vous pouvez également utiliser un outil d'infrastructure en tant que code (IaC) tel qu'AWS CloudFormation pour remplacer ces étapes par un modèle qui crée une pile dotée des ressources et propriétés appropriées. | Architecte cloud, administrateur réseau, compétences en Python | 
| Récupérez les détails sous forme de dictionnaire depuis Amazon S3. | Utilisez le code suivant pour lire le contenu du compartiment S3 et obtenir les valeurs JSON sous forme de dictionnaire Python. <pre>fileobj = s3_client.get_object(<br />        Bucket=bucket_name,<br />        Key='my.json'<br />        )<br />    filedata = fileobj['Body'].read()<br />    contents = filedata.decode('utf-8')<br />    json_content=json.loads(contents)<br />    print(json_content)</pre>où `json_content` contient le dictionnaire Python. | Développeur d'applications, compétences en Python | 
| Nettoyez les valeurs de données pour les espaces et les caractères Unicode. | Par mesure de sécurité afin de garantir l'exactitude des données, utilisez le code suivant pour effectuer une opération de découpage sur les valeurs saisies. `json_content` Ce code supprime les espaces au début et à la fin de chaque chaîne. Il utilise également la `replace` méthode pour supprimer les espaces durs (non cassants) (les `\xa0` caractères).<pre>for item in json_content:<br />    fqn_name = unicodedata.normalize("NFKD",item["FqdnName"].replace("u'", "'").replace('\xa0', '').strip())<br />    rec_type = item["RecordType"].replace('\xa0', '').strip()<br />    res_rec = {<br />                 'Value': item["Value"].replace('\xa0', '').strip()<br />                }</pre> | Développeur d'applications, compétences en Python | 
| Insérez des enregistrements. | Utilisez le code suivant dans le cadre de la `for` boucle précédente.<pre>change_response = route53_client.change_resource_record_sets(<br />            HostedZoneId="xxxxxxxx",<br />            ChangeBatch={<br />                'Comment': 'Created by automation',<br />                'Changes': [<br />                    {<br />                        'Action': 'UPSERT',<br />                        'ResourceRecordSet': {<br />                            'Name': fqn_name,<br />                            'Type': rec_type,<br />                            'TTL': item["TTL"],<br />                            'ResourceRecords': res_rec<br />                        }<br />                    }<br />                ]<br />            }<br />    )</pre>Où se `xxxxxxx` trouve l'identifiant de la zone hébergée dès la première étape de cette épopée. | Développeur d'applications, compétences en Python | 

## Ressources connexes
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-resources"></a>

**Références**
+ [Création d'enregistrements en important un fichier de zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating-import.html) (documentation Amazon Route 53)
+ méthode [create\$1hosted\$1zone](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.create_hosted_zone) (documentation Boto3)
+ [méthode change\$1resource\$1record\$1sets](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.change_resource_record_sets) (documentation Boto3)

**Tutoriels et vidéos**
+ [Le didacticiel Python](https://docs.python.org/3/tutorial/) (documentation Python)
+ [Conception du DNS à l'aide d'Amazon Route 53](https://www.youtube.com/watch?v=2y_RBjDkRgY) (YouTube vidéo, *AWS Online Tech Talks*)