DNS-zónák és rekordkészletek létrehozása a .NET SDK használatával
A DNS SDK-val és a .NET DNS-felügyeleti könyvtárával automatizálhatja a DNS-zónák, -rekordhalmazok és -rekordok létrehozását, törlését vagy frissítését. Itt egy teljes Visual Studio-projekt érhető el .
Alkalmazáspéldány-fiók létrehozása
Az Azure-erőforrásokhoz való programozott hozzáférést általában a saját felhasználói hitelesítő adatai helyett dedikált fiókkal biztosítjuk. Ezeket a dedikált fiókokat egyszerű szolgáltatásfiókoknak nevezzük. Az Azure DNS SDK mintaprojekt használatához először létre kell hoznia egy egyszerű szolgáltatásfiókot, és hozzá kell rendelnie a megfelelő engedélyekkel.
Egyszerű szolgáltatásfiók létrehozása. Az Azure DNS SDK mintaprojekt jelszóalapú hitelesítést feltételez.)
Az Azure RBAC használatával adjon engedélyt a "DNS Zone Contributor" szolgáltatásnév-fióknak az erőforráscsoport számára.
Ha az Azure DNS SDK-mintaprojektet használja, az alábbiak szerint szerkessze a "program.cs" fájlt:
- Szúrja be a megfelelő értékeket a
tenantId
(clientId
más néven fiókazonosító)secret
(egyszerű szolgáltatásfiók jelszava) éssubscriptionId
az 1. lépésben használt értékekhez. - Adja meg a 2. lépésben létrehozott erőforráscsoport nevét.
- Adjon meg egy tetszőleges DNS-zónanevet.
- Szúrja be a megfelelő értékeket a
NuGet-csomagok és névtér-deklarációk
Az Azure DNS .NET SDK használatához telepítenie kell az Azure DNS Management Library NuGet-csomagot és más szükséges Azure-csomagokat.
A Visual Studióban nyisson meg egy projektet vagy egy új projektet.
Nyissa meg a > NuGet-Csomagkezelő >megoldáshoz készült NuGet-csomagok kezelését....
Válassza a Tallózás lehetőséget, engedélyezze az Előzetes befoglalás jelölőnégyzetet, és írja be a Microsoft.Azure.Management.Dns kifejezést a keresőmezőbe.
Válassza ki a csomagot, majd a Telepítés gombra kattintva vegye fel a Visual Studio-projektbe.
Ismételje meg a fenti folyamatot a következő csomagok telepítéséhez is: Microsoft.Rest.ClientRuntime.Azure.Authentication és Microsoft.Azure.Management.ResourceManager.
Névtér-deklarációk hozzáadása
Adja hozzá a következő névtér-deklarációkat
using Microsoft.Rest.Azure.Authentication;
using Microsoft.Azure.Management.Dns;
using Microsoft.Azure.Management.Dns.Models;
A DNS-felügyeleti ügyfél inicializálása
Ez DnsManagementClient
tartalmazza a DNS-zónák és rekordkészletek kezeléséhez szükséges módszereket és tulajdonságokat. Az alábbi kód bejelentkezik a szolgáltatásnév-fiókba, és létrehoz egy DnsManagementClient
objektumot.
// Build the service credentials and DNS management client
var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, secret);
var dnsClient = new DnsManagementClient(serviceCreds);
dnsClient.SubscriptionId = subscriptionId;
DNS-zóna létrehozása vagy frissítése
DNS-zóna létrehozásához először létre kell hoznia egy "Zone" objektumot, amely tartalmazza a DNS-zóna paramétereit. Mivel a DNS-zónák nincsenek egy adott régióhoz csatolva, a hely "globális" értékre van állítva. Ebben a példában egy Azure Resource Manager -címkét is hozzáadunk a zónához.
A zóna Azure DNS-ben való létrehozásához vagy frissítéséhez a zónaparamétereket tartalmazó zónaobjektumot a rendszer átadja a DnsManagementClient.Zones.CreateOrUpdateAsync
metódusnak.
Feljegyzés
A DnsManagementClient három üzemmódot támogat: szinkron ('CreateOrUpdate'), aszinkron ('CreateOrUpdateAsync') vagy aszinkron módon a HTTP-válaszhoz való hozzáféréssel ('CreateOrUpdateWithHttpMessagesAsync'). Az alkalmazás igényeitől függően bármelyik módot kiválaszthatja.
Az Azure DNS támogatja az optimista egyidejűséget, az úgynevezett Etags-t. Ebben a példában az "If-None-Match" fejléc "*" megadása azt jelzi az Azure DNS-nek, hogy hozzon létre egy DNS-zónát, ha még nem létezik. A hívás meghiúsul, ha a megadott nevű zóna már létezik az adott erőforráscsoportban.
// 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, "*");
DNS-rekordhalmazok és -rekordok létrehozása
A DNS-rekordok rekordhalmazként vannak kezelve. A rekordhalmaz olyan rekordok készlete, amelynek neve és rekordtípusa azonos a zónán belül. A rekordhalmaz neve a zóna nevéhez viszonyítva van, nem pedig a teljes DNS-névhez.
Rekordhalmaz létrehozásához vagy frissítéséhez létrejön egy "RecordSet" paraméterobjektum, amelyet a rendszer továbbít a rendszernek DnsManagementClient.RecordSets.CreateOrUpdateAsync
. A DNS-zónákhoz hasonlóan három működési mód létezik: szinkron ('CreateOrUpdate'), aszinkron ('CreateOrUpdateAsync') vagy aszinkron, a HTTP-válaszhoz való hozzáféréssel ('CreateOrUpdateWithHttpMessagesAsync').
A DNS-zónákhoz hasonlóan a rekordhalmazokon végzett műveletek is támogatják az optimista egyidejűséget. Ebben a példában, mivel az "If-Match" vagy a "If-None-Match" nincs megadva, a rekordhalmaz mindig létrejön. Ez a hívás felülír minden olyan rekordhalmazt, amelynek neve és rekordtípusa megegyezik ebben a DNS-zónában.
// 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);
Zónák és rekordhalmazok lekérése
A DnsManagementClient.Zones.Get
metódusok az DnsManagementClient.RecordSets.Get
egyes zónákat és rekordhalmazokat kérik le. A RecordSeteket a típus, a név, valamint a zóna és az erőforráscsoport azonosítja, amelyben léteznek. A zónákat a nevük és az erőforráscsoportjuk azonosítja.
var recordSet = dnsClient.RecordSets.Get(resourceGroupName, zoneName, recordSetName, RecordType.A);
Meglévő rekordkészlet frissítése
Meglévő DNS-rekordkészlet frissítéséhez először kérje le a rekordkészletet. Ezután frissítse a rekordhalmaz tartalmát a módosítások elküldése előtt. Ebben a példában az "Etag" értéket a beolvasott rekordhalmazból adhatja meg az "If-Match" paraméterben. A hívás meghiúsul, ha egy egyidejű művelet időközben módosította a rekordhalmazt.
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);
Zónák és rekordhalmazok listázása
Zónák listázásához használja a DnsManagementClient.Zones.List... metódusokat, amelyek támogatják egy adott erőforráscsoport összes zónájának vagy egy adott Azure-előfizetés összes zónájának felsorolását (az erőforráscsoportok között).
Rekordhalmazok listázásához használja a DnsManagementClient.RecordSets.List... metódusokat, amelyek támogatják az adott zónában lévő összes rekordhalmaz felsorolását, vagy csak az adott típusú rekordhalmazokat.
Figyelje meg, hogy a zónák és rekordhalmazok listázásakor az eredmények lapszámozottak lehetnek. Az alábbi példa bemutatja, hogyan lehet iterálni az eredmények oldalait. (A lapozás kényszerítéséhez mesterségesen "2" oldalméretet használnak; a gyakorlatban ezt a paramétert ki kell hagyni, és az alapértelmezett oldalméretet kell használni.)
// 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();
}
Következő lépések
Töltse le az Azure DNS .NET SDK mintaprojektet. Példákat tartalmaz arra, hogyan használható az Azure DNS .NET SDK, valamint más DNS-rekordtípusok példáit.