

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Migrasikan data DNS secara massal ke zona host pribadi Amazon Route 53
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone"></a>

*Ram Kandaswamy, Amazon Web Services*

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

Insinyur jaringan dan administrator cloud memerlukan cara yang efisien dan sederhana untuk menambahkan catatan Domain Name System (DNS) ke zona yang dihosting pribadi di Amazon Route 53. Menggunakan pendekatan manual untuk menyalin entri dari lembar kerja Microsoft Excel ke lokasi yang sesuai di konsol Route 53 membosankan dan rawan kesalahan. Pola ini menjelaskan pendekatan otomatis yang mengurangi waktu dan upaya yang diperlukan untuk menambahkan beberapa catatan. Ini juga menyediakan serangkaian langkah yang dapat diulang untuk beberapa pembuatan zona yang dihosting.

Pola ini menggunakan Amazon Simple Storage Service (Amazon S3) untuk menyimpan catatan. Untuk bekerja dengan data secara efisien, pola menggunakan format JSON karena kesederhanaan dan kemampuannya untuk mendukung kamus Python `dict` (tipe data).

**catatan**  
Jika Anda dapat membuat file zona dari sistem Anda, pertimbangkan untuk menggunakan [fitur impor Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating-import.html) sebagai gantinya.

## Prasyarat dan batasan
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-prereqs"></a>

**Prasyarat**
+ Lembar kerja Excel yang berisi catatan zona yang dihosting pribadi
+ [Keakraban dengan berbagai jenis catatan DNS seperti catatan A, catatan Name Authority Pointer (NAPTR), dan catatan SRV (lihat Jenis rekaman DNS yang didukung)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html)
+ Keakraban dengan bahasa Python dan perpustakaannya

**Batasan**
+ Pola tidak memberikan cakupan yang luas untuk semua skenario kasus penggunaan. Misalnya, panggilan [change\$1resource\$1record\$1sets](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.change_resource_record_sets) tidak menggunakan semua properti API yang tersedia.
+ Di lembar kerja Excel, nilai di setiap baris diasumsikan unik. Beberapa nilai untuk setiap nama domain yang memenuhi syarat (FQDN) diharapkan muncul di baris yang sama. Jika itu tidak benar, Anda harus memodifikasi kode yang disediakan dalam pola ini untuk melakukan penggabungan yang diperlukan.
+ Pola ini menggunakan AWS SDK for Python (Boto3) untuk memanggil layanan Route 53 secara langsung. Anda dapat menyempurnakan kode untuk menggunakan CloudFormation pembungkus AWS untuk `update_stack` perintah `create_stack` dan, dan menggunakan nilai JSON untuk mengisi sumber daya template.

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

**Tumpukan teknologi**
+ Route 53 zona host pribadi untuk merutekan lalu lintas
+ Amazon S3 untuk menyimpan file JSON output

![\[Alur kerja untuk memigrasi catatan DNS secara massal ke zona host pribadi Route 53.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/a81c29ea-f0c5-4d4a-ba87-93111a0f1ee9/images/2ada844b-4147-4f9f-8883-d22605aa42d8.png)


Alur kerja terdiri dari langkah-langkah ini, seperti yang diilustrasikan dalam diagram sebelumnya dan dibahas di bagian *Epik*:

1. Unggah lembar kerja Excel yang memiliki informasi kumpulan rekaman ke bucket S3.

1. Buat dan jalankan skrip Python yang mengonversi data Excel ke format JSON.

1. Baca catatan dari bucket S3 dan bersihkan datanya.

1. Buat kumpulan rekaman di zona host pribadi Anda.

## Alat
<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 adalah layanan web DNS yang sangat tersedia dan dapat diskalakan yang menangani pendaftaran domain, perutean DNS, dan pemeriksaan kesehatan.
+ [Amazon S3 - Amazon Simple Storage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) Service (Amazon S3) Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek. Anda dapat menggunakan Amazon S3 untuk menyimpan dan mengambil data sebanyak apa pun kapan pun, dari mana pun di web.

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

### Siapkan data untuk otomatisasi
<a name="prepare-data-for-automation"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat file Excel untuk catatan Anda. | Gunakan catatan yang Anda ekspor dari sistem Anda saat ini untuk membuat lembar kerja Excel yang memiliki kolom yang diperlukan untuk catatan, seperti nama domain yang sepenuhnya memenuhi syarat (FQDN), jenis rekaman, Waktu untuk Hidup (TTL), dan nilai. Untuk catatan NAPTR dan SRV, nilainya adalah kombinasi dari beberapa properti, jadi gunakan `concat` metode Excel untuk menggabungkan properti ini.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone.html) | Insinyur data, keterampilan Excel | 
| Verifikasi lingkungan kerja. | Di IDE Anda, buat file Python untuk mengonversi lembar kerja input Excel ke format JSON. (Alih-alih IDE, Anda juga dapat menggunakan SageMaker notebook Amazon untuk bekerja dengan kode Python.)Verifikasi bahwa versi Python yang Anda gunakan adalah versi 3.7 atau yang lebih baru.<pre> python3 --version</pre>Instal paket **panda**.<pre> pip3 install pandas --user</pre> | AWS Umum | 
| Ubah data lembar kerja Excel ke JSON. | Buat file Python yang berisi kode berikut untuk dikonversi dari Excel ke 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>di mana `Book1` adalah nama lembar kerja Excel dan `my.json` merupakan nama file JSON keluaran. | Insinyur data, keterampilan Python | 
| Unggah file JSON ke bucket S3. | Unggah `my.json` file ke bucket S3. Untuk informasi selengkapnya, lihat [Membuat bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) di dokumentasi Amazon S3. | Pengembang aplikasi | 
| FqdnName | RecordType | Nilai | TTL | 
| something.example.org | A | 1.1.1.1 | 900 | 

### Sisipkan catatan
<a name="insert-records"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat zona host pribadi. | Gunakan [create\$1hosted\$1zone](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.create_hosted_zone) API dan kode contoh Python berikut untuk membuat zona host pribadi. Ganti parameter`hostedZoneName`,`vpcRegion`, dan `vpcId` dengan nilai Anda sendiri.<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>Anda juga dapat menggunakan alat infrastruktur sebagai kode (IAc) seperti AWS CloudFormation untuk mengganti langkah-langkah ini dengan templat yang membuat tumpukan dengan sumber daya dan properti yang sesuai. | Arsitek cloud, administrator Jaringan, keterampilan Python | 
| Ambil detail sebagai kamus dari Amazon S3. | Gunakan kode berikut untuk membaca dari bucket S3 dan untuk mendapatkan nilai JSON sebagai kamus 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>dimana `json_content` berisi kamus Python. | Pengembang aplikasi, keterampilan Python | 
| Bersihkan nilai data untuk spasi dan karakter Unicode. | Sebagai langkah pengamanan untuk memastikan kebenaran data, gunakan kode berikut untuk melakukan operasi strip pada nilai di`json_content`. Kode ini menghapus karakter spasi di bagian depan dan akhir setiap string. Hal ini juga menggunakan `replace` metode untuk menghapus hard (non-breaking) spasi (`\xa0`karakter).<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> | Pengembang aplikasi, keterampilan Python | 
| Sisipkan catatan. | Gunakan kode berikut sebagai bagian dari `for` loop sebelumnya.<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>Di `xxxxxxx` mana ID zona yang dihosting dari langkah pertama epik ini. | Pengembang aplikasi, keterampilan Python | 

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

**Referensi**
+ [Membuat catatan dengan mengimpor file zona](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating-import.html) (dokumentasi Amazon Route 53)
+ [metode create\$1hosted\$1zone](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.create_hosted_zone) (dokumentasi Boto3)
+ [metode change\$1resource\$1record\$1sets (dokumentasi Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.change_resource_record_sets))

**Tutorial dan video**
+ [Tutorial Python (dokumentasi](https://docs.python.org/3/tutorial/) Python)
+ [Desain DNS menggunakan Amazon Route 53](https://www.youtube.com/watch?v=2y_RBjDkRgY) (YouTube video, *AWS Online Tech Talks*)