Membuat zona dan rangkaian data DNS menggunakan SDK .Net

Anda bisa mengotomatiskan operasi untuk membuat, menghapus, atau memperbarui zona, rangkaian data, dan data DNS menggunakan SDK DNS dengan pustaka Manajemen DNS .NET. Proyek Visual Studio selengkapnya dapat di lihat di sini.

Buat akun perwakilan layanan

Biasanya, akses terprogram ke sumber daya Azure diberikan melalui akun khusus, bukan info masuk pengguna Anda sendiri. Akun khusus ini disebut akun 'perwakilan layanan'. Untuk menggunakan proyek sampel SDK Azure DNS, Anda perlu terlebih dahulu membuat akun perwakilan layanan dan memberikan izin yang benar untuk akun tersebut.

  1. Buat akun perwakilan layanan. Proyek sampel SDK Azure DNS mengasumsikan autentikasi berbasis kata sandi.)

  2. Lalu buat grup sumber daya.

  3. Gunakan Azure RBAC untuk memberi akun perwakilan layanan izin 'Kontributor Zona DNS' ke grup sumber daya.

  4. Jika menggunakan proyek sampel SDK Azure DNS, edit file 'program.cs' dengan cara sebagai berikut:

    • Sisipkan nilai yang benar untuk tenantId, clientId (yang juga dikenal sebagai ID akun), secret (kata sandi akun perwakilan layanan), dan subscriptionId seperti yang digunakan di langkah 1.
    • Masukkan nama grup sumber daya yang dibuat di langkah 2.
    • Masukkan nama zona DNS pilihan Anda.

Paket NuGet dan deklarasi namespace

Untuk menggunakan SDK .NET Azure DNS , Anda perlu menginstal paket NuGet Manajemen Pustaka Azure DNS dan paket Azure lainnya yang diperlukan.

  1. Di Visual Studio, buka proyek atau proyek baru.

  2. Buka Alat>Manajer Paket NuGet>Kelola Paket NuGet untuk Solusi....

  3. Klik Telusuri, aktifkan kotak centang Sertakan prarilis, lalu ketikkan Microsoft.Azure.Management.Dns di dalam kotak pencarian.

  4. Pilih paket, lalu klik Instal untuk menambahkannya ke proyek Visual Studio Anda.

  5. Ulangi proses di atas untuk juga menginstal paket berikut: Microsoft.Rest.ClientRuntime.Azure.Authentication dan Microsoft.Azure.Management.ResourceManager.

Menambahkan deklarasi namespace

Menambahkan deklarasi namespace berikut

using Microsoft.Rest.Azure.Authentication;
using Microsoft.Azure.Management.Dns;
using Microsoft.Azure.Management.Dns.Models;

Menginisiasi klien manajemen DNS

DnsManagementClient berisi metode dan properti yang diperlukan untuk mengelola zona dan rangkaian data DNS. Kode berikut masuk ke akun perwakilan layanan dan membuat objek DnsManagementClient.

// Build the service credentials and DNS management client
var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, secret);
var dnsClient = new DnsManagementClient(serviceCreds);
dnsClient.SubscriptionId = subscriptionId;

Membuat atau memperbarui zona DNS

Untuk membuat zona DNS, Anda harus terlebih dahulu membuat objek "Zona" yang berisi parameter zona DNS. Karena zona DNS tidak tertaut ke wilayah tertentu, lokasi akan diatur menjadi 'global'. Dalam contoh ini, 'tag' Azure Resource Manager juga ditambahkan ke zona tersebut.

Untuk membuat atau memperbarui zona di Azure DNS, objek zona yang berisi parameter zona akan diteruskan ke metode DnsManagementClient.Zones.CreateOrUpdateAsyc.

Catatan

DnsManagementClient mendukung tiga mode operasi: sinkron ('CreateOrUpdate'), asinkron ('CreateOrUpdateAsync'), atau asinkron dengan akses ke respons HTTP ('CreateOrUpdateWithHttpMessagesAsync'). Anda dapat memilih salah satu mode ini, tergantung pada kebutuhan aplikasi Anda.

Azure DNS mendukung konkurensi optimis, yang bernama Etags. Dalam contoh ini, dengan menentukan "*" untuk header 'If-None-Match', Anda akan memberi tahu Azure DNS untuk membuat zona DNS jika zona belum ada. Panggilan gagal jika zona dengan nama yang diberikan sudah ada di grup sumber daya yang diberikan.

// Create zone parameters
var dnsZoneParams = new Zone("global"); // All DNS zones must have location = "global"

// Create an Azure Resource Manager 'tag'.  This is optional.  You can add multiple tags
dnsZoneParams.Tags = new Dictionary<string, string>();
dnsZoneParams.Tags.Add("dept", "finance");

// Create the actual zone.
// Note: Uses 'If-None-Match *' ETAG check, so will fail if the zone exists already.
// Note: For non-async usage, call dnsClient.Zones.CreateOrUpdate(resourceGroupName, zoneName, dnsZoneParams, null, "*")
// Note: For getting the http response, call dnsClient.Zones.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, zoneName, dnsZoneParams, null, "*")
var dnsZone = await dnsClient.Zones.CreateOrUpdateAsync(resourceGroupName, zoneName, dnsZoneParams, null, "*");

Membuat rangkaian data dan data DNS

Data DNS dikelola sebagai satu rangkaian data. Rangkaian data adalah serangkaian data dengan nama dan jenis data yang sama di dalam satu zona. Nama rangkaian data relatif terhadap nama zona, bukan nama DNS yang sepenuhnya memenuhi syarat.

Untuk membuat atau memperbarui rangkaian data, objek parameter "RecordSet" dibuat dan diteruskan ke DnsManagementClient.RecordSets.CreateOrUpdateAsync. DnsManagementClient mendukung tiga mode operasi: sinkron ('CreateOrUpdate'), asinkron ('CreateOrUpdateAsync'), atau asinkron dengan akses ke respons HTTP ('CreateOrUpdateWithHttpMessagesAsync').

Seperti halnya zona DNS, operasi pada rangkaian data juga mendukung konkurensi optimis. Dalam contoh ini, karena 'If-Match' atau 'If-None-Match' tidak ditentukan, kumpulan catatan akan selalu dbuat. Panggilan ini menimpa rangkaian data yang sudah ada dengan nama dan jenis data yang sama di zona DNS ini.

// Create record set parameters
var recordSetParams = new RecordSet();
recordSetParams.TTL = 3600;

// Add records to the record set parameter object.  In this case, we'll add a record of type 'A'
recordSetParams.ARecords = new List<ARecord>();
recordSetParams.ARecords.Add(new ARecord("1.2.3.4"));

// Add metadata to the record set.  Similar to Azure Resource Manager tags, this is optional and you can add multiple metadata name/value pairs
recordSetParams.Metadata = new Dictionary<string, string>();
recordSetParams.Metadata.Add("user", "Mary");

// Create the actual record set in Azure DNS
// Note: no ETAG checks specified, will overwrite existing record set if one exists
var recordSet = await dnsClient.RecordSets.CreateOrUpdateAsync(resourceGroupName, zoneName, recordSetName, RecordType.A, recordSetParams);

Mendapatkan zona dan rangkaian data

Metode DnsManagementClient.Zones.Get dan DnsManagementClient.RecordSets.Get mengambil zona dan rangkaian datanya masing-masing. RecordSet diidentifikasi berdasarkan jenis, nama, dan zona serta grup sumber dayanya. Zona diidentifikasi berdasarkan nama dan grup sumber dayanya.

var recordSet = dnsClient.RecordSets.Get(resourceGroupName, zoneName, recordSetName, RecordType.A);

Memperbarui rangkaian data yang sudah ada

Untuk memperbarui kumpulan catatan DNS yang sudah ada, pertama-tama ambil kumpulan catatan. Kemudian, perbarui konten kumpulan catatan sebelum mengirimkan perubahan. Dalam contoh ini, kami menentukan 'Etag' dari rangkaian data yang diambil di parameter 'If-Match'. Panggilan akan gagal jika operasi bersamaan telah memodifikasi rangkaian data selama proses.

var recordSet = dnsClient.RecordSets.Get(resourceGroupName, zoneName, recordSetName, RecordType.A);

// Add a new record to the local object.  Note that records in a record set must be unique/distinct
recordSet.ARecords.Add(new ARecord("5.6.7.8"));

// Update the record set in Azure DNS
// Note: ETAG check specified, update will be rejected if the record set has changed in the meantime
recordSet = await dnsClient.RecordSets.CreateOrUpdateAsync(resourceGroupName, zoneName, recordSetName, RecordType.A, recordSet, recordSet.Etag);

Mencantumkan zona dan rangkaian data

  • Untuk mencantumkan zona, gunakan metode DnsManagementClient.Zones.List... yang mendukung pencantuman semua zona dalam grup sumber daya tertentu atau semua zona dalam langganan Azure tertentu (di seluruh grup sumber daya).

  • Untuk mencantumkan kumpulan catatan, gunakan metode DnsManagementClient.RecordSets.List... yang mendukung pencantuman semua kumpulan catatan di zona tertentu atau hanya kumpulan catatan dengan tipe tertentu.

Harap diingat saat pencantuman zona dan kumpulan catatan bahwa hasilnya mungkin dipaginasi. Contoh berikut menunjukkan cara melakukan iterasi melalui halaman hasil. (Ukuran halaman artifisial kecil '2' digunakan untuk memaksa pembuatan halaman; dalam praktiknya parameter ini harus dihilangkan dan ukuran halaman default digunakan.)

// Note: in this demo, we'll use a very small page size (2 record sets) to demonstrate paging
// In practice, to improve performance you would use a large page size or just use the system default
int recordSets = 0;
var page = await dnsClient.RecordSets.ListAllInResourceGroupAsync(resourceGroupName, zoneName, "2");
recordSets += page.Count();

while (page.NextPageLink != null)
{
    page = await dnsClient.RecordSets.ListAllInResourceGroupNextAsync(page.NextPageLink);
    recordSets += page.Count();
}

Langkah berikutnya

Unduh proyek sampel SDK .NET Azure DNS. Menyertakan contoh tentang cara menggunakan SDK .NET Azure DNS dan contoh untuk tipe catatan DNS lainnya.