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
Ram Kandaswamy, Amazon Web Services
Zusammenfassung
Dieses Muster automatisiert die Massenmigration von DNS-Einträgen in eine von Amazon Route 53 gehostete Zone. Es verwendet ein Python-Skript mit dem AWS SDK für Python (Boto3), um Datensatzdaten aus einer in Amazon Simple Storage Service (Amazon S3) gespeicherten JSON-Datei zu lesen und die Datensätze mithilfe der Route 53-API programmgesteuert zu erstellen.
Wenn Ihr Quellsystem standardmäßige BIND-Zonendateien exportiert, kann die native Importfunktion von Route 53 oder cli53
Verwenden Sie dieses Muster, wenn Sie eine große Anzahl von DNS-Einträgen von einem vorhandenen System in eine Route 53-Hosting-Zone migrieren müssen, ohne jeden Eintrag manuell über die Konsole erstellen zu müssen.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktives AWS-Konto
Ein Excel-Arbeitsblatt, das Datensätze für gehostete Zonen mit Spalten für den vollqualifizierten Domainnamen (FQDN), den Datensatztyp, die Gültigkeitsdauer (TTL) und den Wert enthält
Python 3.12 oder höher (siehe Python herunterladen
) Die Pandas-Python-Bibliothek ist installiert ()
pip3 install pandasVertrautheit mit DNS-Eintragstypen wie A-, NAPTR- und SRV-Einträgen (siehe Unterstützte DNS-Eintragstypen)
Vertrautheit mit der Sprache Python und ihren Bibliotheken
Einschränkungen
Dieses Muster verwendet nicht alle verfügbaren Eigenschaften des
change_resource_record_setsAPI-Aufrufs. Erweitern Sie den Code nach Bedarf für Ihren Anwendungsfall.Im Excel-Arbeitsblatt wird davon ausgegangen, dass der Wert in jeder Zeile eindeutig ist. Es wird erwartet, dass mehrere Werte für jeden FQDN in derselben Zeile erscheinen. Ist dies nicht der Fall, ändern Sie den Code, um mehrere Werte für denselben FQDN zu verketten.
Dieses Muster ruft die Route 53-API direkt mithilfe von Boto3 auf. Sie können den Code so erweitern, dass er einen AWS CloudFormation Wrapper für die
update_stackBefehlecreate_stackund verwendet und die JSON-Werte zum Auffüllen von Vorlagenressourcen verwenden.Wenn Ihr Quellsystem Datensätze im BIND-Zonendateiformat exportieren kann, sollten Sie stattdessen die Route 53-Importfunktion verwenden.
Einige AWS Dienste sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter AWSDienste nach Regionen
. Informationen zu bestimmten Endpunkten finden Sie auf der Seite Dienstendpunkte und Kontingente. Wählen Sie dort den Link für den Dienst aus.
Architektur

Der Benutzer lädt ein Excel-Arbeitsblatt mit DNS-Datensatzdaten in einen Amazon S3 S3-Bucket hoch.
Ein Python-Skript, das lokal (oder in einer IDE wie Kiro) ausgeführt wird, liest die JSON-Datei mithilfe von Boto3 aus dem Amazon S3 S3-Bucket.
Das Skript verarbeitet die Datensätze und ruft den
change_resource_record_setsRoute-53-API-Vorgang auf, um Datensätze in der Hosting-Zone zu erstellen.
Tools
AWS-Services
Andere Tools
Kiro — Eine IDE mit agentischen KI-Funktionen, die zur Entwicklung und Ausführung des Python-Migrationsskripts verwendet wird. Weitere Informationen finden Sie unter Kiro.
pandas — Eine Python-Datenanalysebibliothek, die verwendet wird, um das Excel-Arbeitsblatt in das JSON-Format zu konvertieren.
Best Practices
Testen Sie mit einer kleinen Teilmenge von 5—10 Datensätzen, bevor Sie das Skript für alle Datensätze ausführen, um die Datenformatierung zu überprüfen und die Datensatzerstellung zu korrigieren.
Verwenden Sie die
UPSERTAktion anstelle von.CREATEDieUPSERTAktion erstellt einen Datensatz, falls er nicht existiert, oder aktualisiert ihn, falls dies der Fall ist. Dadurch ist das Skript idempotent und kann sicher erneut ausgeführt werden.Batch Sie Ihre Änderungen, um innerhalb der
ChangeResourceRecordSetsAnforderungslimits zu bleiben. Wenn Sie dieUPSERTAktion verwenden, zählt jedesResourceRecordElement zweimal zum Maximum von 1.000 Elementen.Überprüfen Sie die Daten vor dem Einfügen. Stellen Sie sicher, dass FQDNs mit einem Punkt (
.) enden, dass TTL-Werte positive Ganzzahlen sind und dass die Eintragstypen mit den unterstützten DNS-Eintragstypen übereinstimmen.Erstellen Sie eine Sicherungskopie vorhandener Datensätze
, bevor Sie Massenänderungen vornehmen. Exportieren Sie die aktuellen Datensätze der Hosting-Zone, indem Sie list_resource_record_setsdie Option zur Bereitstellung eines Rollback-Punkts verwenden.Implementieren Sie eine Wiederholungslogik mit exponentiellem Backoff, um die Route-53-API-Ratenbegrenzungen zu handhaben. Weitere Informationen finden Sie unter Fehlerwiederholungen und exponentielles Backoff in. AWS
Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der AWS Identity and Access Management (IAM-) Dokumentation unter Gewährung der geringsten Rechte und bewährte Methoden zur Sicherheit.
Epen
| Aufgabe | Description | Erforderliche Fähigkeiten | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
Erstellen Sie eine Excel-Datei für Ihre Unterlagen. |
Beispielzeile:
| Dateningenieur | ||||||||
Konvertiert die Daten des Excel-Arbeitsblatts in JSON. |
| Dateningenieur, Python-Entwickler | ||||||||
Laden Sie die JSON-Datei in einen Amazon S3 S3-Bucket hoch. |
| App-Developer |
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Erstellen Sie eine gehostete Zone. |
Sie können auch ein IaC-Tool (Infrastructure as Code) verwenden, AWS CloudFormation um diese Schritte durch eine Vorlage zu ersetzen, die einen Stack mit den entsprechenden Ressourcen und Eigenschaften erstellt. Weitere Informationen finden Sie HostedZone in der CloudFormation Dokumentation unter AWS Route 53::. | Cloud-Architekt, Netzwerkadministrator, Python-Kenntnisse |
Lesen Sie die JSON-Daten aus Amazon S3. |
| App-Entwickler, Python-Entwickler |
Datenwerte bereinigen und Datensätze einfügen. |
| App-Entwickler, Python-Kenntnisse |
Fehlerbehebung
| Problem | Lösung |
|---|---|
| Fügen Sie eine |
| Dieser Fehler tritt auf, wenn Sie versuchen, mithilfe der |
Drosselungsfehler (Ratenlimit überschritten) | Sie haben fünf API-Anfragen pro Sekunde überschritten. Implementieren Sie exponentiellen Backoff mit Jitter. Weitere Informationen finden Sie unter Error Retries and exponential backoff in. AWS |
Datensätze werden nicht aufgelöst | Stellen Sie sicher, dass die VPC der Hosting-Zone zugeordnet ist und dass die DNS-Auflösung auf der VPC aktiviert ist. Beides |
| Die Daten enthalten geschützte Leerzeichen ( |
Zugehörige Ressourcen
Referenzen
Erstellen von Datensätzen durch Importieren einer Zonendatei (Route 53-Dokumentation)
create_hosted_zone
(Boto3-Dokumentation) change_resource_record_sets
(Boto3-Dokumentation) Fehler bei Wiederholungsversuchen und exponentieller Backoff in AWS
Tutorials und Videos
DNS-Design mit Amazon Route 53
Zusätzliche Informationen
Bei NAPTR- und SRV-Datensätzen muss das Value Feld im Excel-Arbeitsblatt alle erforderlichen Komponenten enthalten, die zu einer einzigen Zeichenfolge verkettet sind. Verwenden Sie die CONCAT-Funktion von Excel, um die einzelnen Eigenschaften (Reihenfolge, Präferenz, Flags, Service, Regexp, Ersatz für NAPTR; Priorität, Gewicht, Port, Ziel für SRV) zu kombinieren, bevor Sie nach JSON exportieren.
Wenn Ihre Migration mehr als 1.000 Datensätze umfasst, teilen Sie die JSON-Datei in Batches auf und verarbeiten Sie jeden Stapel separat, um die API-Grenzwerte für Route 53 einzuhalten. Wenn Sie die UPSERT Aktion verwenden, wird jedes ResourceRecord Element zweimal auf das Maximum von 1.000 Elementen pro Anfrage angerechnet. ChangeResourceRecordSets