

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Massenmigrieren von DNS-Einträgen in eine private gehostete Zone von Amazon Route 53
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone"></a>

*Ram Kandaswamy, Amazon Web Services*

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

Netzwerktechniker und Cloud-Administratoren benötigen eine effiziente und einfache Möglichkeit, DNS-Einträge (Domain Name System) zu privaten Hosting-Zonen in Amazon Route 53 hinzuzufügen. Das manuelle Kopieren von Einträgen aus einem Microsoft Excel-Arbeitsblatt an die entsprechenden Stellen in der Route 53 53-Konsole ist mühsam und fehleranfällig. Dieses Muster beschreibt einen automatisierten Ansatz, der den Zeit- und Arbeitsaufwand für das Hinzufügen mehrerer Datensätze reduziert. Es bietet auch eine wiederholbare Reihe von Schritten für die Erstellung mehrerer gehosteter Zonen.

Dieses Muster verwendet Amazon Simple Storage Service (Amazon S3) zum Speichern von Datensätzen. Um effizient mit Daten zu arbeiten, verwendet das Muster aufgrund seiner Einfachheit und der Fähigkeit, ein Python-Wörterbuch (`dict`Datentyp) zu unterstützen, das JSON-Format.

**Anmerkung**  
Wenn Sie eine Zonendatei von Ihrem System aus generieren können, sollten Sie stattdessen die [Route 53 53-Importfunktion](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating-import.html) verwenden.

## Voraussetzungen und Einschränkungen
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-prereqs"></a>

**Voraussetzungen**
+ Ein Excel-Arbeitsblatt, das private, gehostete Zoneneinträge enthält
+ Vertrautheit mit verschiedenen Typen von DNS-Einträgen wie A-Eintrag, NAPTR-Datensatz (Name Authority Pointer) und SRV-Eintrag (siehe [Unterstützte DNS-Eintragstypen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html))
+ Vertrautheit mit der Sprache Python und ihren Bibliotheken

**Einschränkungen**
+ Das Muster deckt nicht alle Anwendungsszenarien umfassend ab. Beispielsweise [verwendet der Aufruf change\$1resource\$1record\$1sets](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.change_resource_record_sets) nicht alle verfügbaren Eigenschaften der API.
+ Im Excel-Arbeitsblatt wird davon ausgegangen, dass der Wert in jeder Zeile eindeutig ist. Es wird erwartet, dass mehrere Werte für jeden vollqualifizierten Domänennamen (FQDN) in derselben Zeile erscheinen. Wenn das nicht der Fall ist, sollten Sie den in diesem Muster bereitgestellten Code ändern, um die erforderliche Verkettung durchzuführen.
+ Das Muster verwendet das AWS-SDK SDK for Python (Boto3), um den Route 53-Service direkt aufzurufen. Sie können den Code so erweitern, dass er einen CloudFormation AWS-Wrapper für die `update_stack` Befehle `create_stack` und verwendet und die JSON-Werte zum Auffüllen von Vorlagenressourcen verwenden.

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

**Technologie-Stack**
+ Route 53 private gehostete Zonen für die Weiterleitung des Datenverkehrs
+ Amazon S3 zum Speichern der JSON-Ausgabedatei

![\[Workflow für die Massenmigration von DNS-Einträgen in eine private gehostete Route 53 53-Zone.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/a81c29ea-f0c5-4d4a-ba87-93111a0f1ee9/images/2ada844b-4147-4f9f-8883-d22605aa42d8.png)


Der Workflow besteht aus den folgenden Schritten, wie im vorherigen Diagramm dargestellt und im Abschnitt *Epics* beschrieben:

1. Laden Sie ein Excel-Arbeitsblatt mit den Datensatzinformationen in einen S3-Bucket hoch.

1. Erstellen Sie ein Python-Skript, das die Excel-Daten in das JSON-Format konvertiert, und führen Sie es aus.

1. Lesen Sie die Datensätze aus dem S3-Bucket und bereinigen Sie die Daten.

1. Erstellen Sie Datensätze in Ihrer privaten gehosteten Zone.

## Tools
<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 ist ein hochverfügbarer und skalierbarer DNS-Webservice, der die Domainregistrierung, das DNS-Routing und die Zustandsprüfung übernimmt.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) — Amazon Simple Storage Service (Amazon S3) ist ein Objektspeicherservice. Mit Amazon S3 können Sie jederzeit beliebige Mengen von Daten von überall aus im Internet speichern und aufrufen.

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

### Bereiten Sie Daten für die Automatisierung vor
<a name="prepare-data-for-automation"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Excel-Datei für Ihre Unterlagen. | Verwenden Sie die Datensätze, die Sie aus Ihrem aktuellen System exportiert haben, um ein Excel-Arbeitsblatt zu erstellen, das die erforderlichen Spalten für einen Datensatz enthält, z. B. den vollqualifizierten Domänennamen (FQDN), den Datensatztyp, die Gültigkeitsdauer (TTL) und den Wert. Bei NAPTR- und SRV-Datensätzen ist der Wert eine Kombination aus mehreren Eigenschaften. Verwenden Sie daher die `concat` Excel-Methode, um diese Eigenschaften zu kombinieren.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone.html) | Dateningenieur, Excel-Kenntnisse | 
| Überprüfen Sie die Arbeitsumgebung. | Erstellen Sie in Ihrer IDE eine Python-Datei, um das Excel-Eingabearbeitsblatt in das JSON-Format zu konvertieren. (Anstelle einer IDE können Sie auch ein SageMaker Amazon-Notebook verwenden, um mit Python-Code zu arbeiten.)Stellen Sie sicher, dass die von Ihnen verwendete Python-Version Version 3.7 oder höher ist.<pre> python3 --version</pre>Installieren Sie das **Pandas-Paket**.<pre> pip3 install pandas --user</pre> | Allgemeines AWS | 
| Konvertiert die Excel-Arbeitsblattdaten in JSON. | Erstellen Sie eine Python-Datei, die den folgenden Code für die Konvertierung von Excel nach JSON enthält.<pre>import pandas as pd<br />data=pd.read_excel('./Book1.xls')<br />data.to_json(path_or_buf='my.json',orient='records')</pre>wobei `Book1` der Name des Excel-Arbeitsblatts und der Name der JSON-Ausgabedatei `my.json` steht. | Dateningenieur, Python-Kenntnisse | 
| Laden Sie die JSON-Datei in einen S3-Bucket hoch. | Laden Sie die Datei `my.json` zu einem S3-Bucket hoch. Weitere Informationen finden Sie unter [Bucket erstellen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) in der Amazon S3 S3-Dokumentation. | App-Developer | 
| FqdnName | RecordType | Wert | TTL | 
| something.example.org | A | 1.1.1.1 | 900 | 

### Datensätze einfügen
<a name="insert-records"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine private gehostete Zone. | Verwenden Sie die API [create\$1hosted\$1zone](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.create_hosted_zone) und den folgenden Python-Beispielcode, um eine private gehostete Zone zu erstellen. Ersetzen Sie die Parameter und `vpcId` durch `hostedZoneName` Ihre `vpcRegion` eigenen Werte.<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>Sie können auch ein IaC-Tool (Infrastructure as Code) wie AWS verwenden, CloudFormation um diese Schritte durch eine Vorlage zu ersetzen, die einen Stack mit den entsprechenden Ressourcen und Eigenschaften erstellt. | Cloud-Architekt, Netzwerkadministrator, Python-Kenntnisse | 
| Rufen Sie Details als Wörterbuch von Amazon S3 ab. | Verwenden Sie den folgenden Code, um aus dem S3-Bucket zu lesen und die JSON-Werte als Python-Wörterbuch abzurufen. <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>wo `json_content` enthält das Python-Wörterbuch. | App-Entwickler, Python-Kenntnisse | 
| Saubere Datenwerte für Leerzeichen und Unicode-Zeichen. | Verwenden Sie als Sicherheitsmaßnahme zur Sicherstellung der Richtigkeit der Daten den folgenden Code, um eine Operation mit den Werten in durchzuführen`json_content`. Dieser Code entfernt die Leerzeichen am Anfang und Ende jeder Zeichenfolge. Außerdem wird die `replace` Methode verwendet, um harte (geschützte) Leerzeichen (die `\xa0` Zeichen) zu entfernen.<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> | App-Entwickler, Python-Kenntnisse | 
| Datensätze einfügen. | Verwenden Sie den folgenden Code als Teil der vorherigen `for` Schleife.<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>Wo `xxxxxxx` ist die Hosting-Zonen-ID aus dem ersten Schritt dieses Epos? | App-Entwickler, Python-Kenntnisse | 

## Zugehörige Ressourcen
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-resources"></a>

**Referenzen**
+ [Erstellen von Datensätzen durch Import einer Zonendatei](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating-import.html) (Amazon Route 53 53-Dokumentation)
+ [Methode create\$1hosted\$1zone](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.create_hosted_zone) (Boto3-Dokumentation)
+ [Methode change\$1resource\$1record\$1sets](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.change_resource_record_sets) (Boto3-Dokumentation)

**Anleitungen und Videos**
+ [Das Python-Tutorial](https://docs.python.org/3/tutorial/) (Python-Dokumentation)
+ [DNS-Design mit Amazon Route 53](https://www.youtube.com/watch?v=2y_RBjDkRgY) (YouTube Video, *AWS Online Tech Talks*)