Megosztás a következőn keresztül:


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.

  1. Egyszerű szolgáltatásfiók létrehozása. Az Azure DNS SDK mintaprojekt jelszóalapú hitelesítést feltételez.)

  2. Ezután hozzon létre egy erőforráscsoportot.

  3. 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.

  4. 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) és subscriptionId 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.

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.

  1. A Visual Studióban nyisson meg egy projektet vagy egy új projektet.

  2. Nyissa meg a > NuGet-Csomagkezelő > megoldáshoz készült NuGet-csomagok kezelését....

  3. 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.

  4. Válassza ki a csomagot, majd a Telepítés gombra kattintva vegye fel a Visual Studio-projektbe.

  5. 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.CreateOrUpdateAsyc 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.