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. A Visual Studio teljes projektje itt é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 "szolgáltatásnév" fió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.
Hozzon létre egy egyszerű szolgáltatásfiókot. Az Azure DNS SDK-mintaprojekt jelszóalapú hitelesítést feltételez.)
Ezután hozzon létre egy erőforráscsoportot.
Az Azure RBAC használatával adjon engedélyeket a "DNS-zóna közreműködője" szolgáltatásnév-fióknak az erőforráscsoport számára.
Ha az Azure DNS SDK-mintaprojektet használja, szerkessze a program.cs fájlt az alábbiak szerint:
- Szúrja be a ,
clientId
(más néven fiókazonosító) (egyszerű szolgáltatásfiók jelszava)secret
éssubscriptionId
az 1. lépésben használt megfelelő értékekettenantId
. - 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 ,
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.
Lépjen az Eszközök>NuGet Package Manager>Manage NuGet Packages for Solution(NuGet-csomagok kezelése megoldáshoz) elemre.
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 lehetőséget választva adja hozzá a Visual Studio-projekthez.
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
A DnsManagementClient
tartalmazza a DNS-zónák és rekordhalmazok 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 nem kapcsolódnak egy adott régióhoz, a hely "globális" értékre van állítva. Ebben a példában egy Azure Resource Manager "tag" is hozzá lesz adva a zónához.
A zóna Azure DNS-ben való létrehozásához vagy frissítéséhez a rendszer átadja a zónaparamétereket tartalmazó zónaobjektumot a DnsManagementClient.Zones.CreateOrUpdateAsyc
metódusnak.
Megjegyzés
A DnsManagementClient három működési mó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 Etags nevet. Ebben a példában az "If-None-Match" fejléchez tartozó "*" megadása arra utasítja az Azure DNS-t, 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 rekordhalmazok olyan rekordok, amelynek neve és rekordtípusa azonos egy 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 átad a következőnek 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 módon 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 azonos 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
és DnsManagementClient.RecordSets.Get
metódusok az egyes zónákat és rekordhalmazokat kérik le. A RecordSet-eket a típusuk, a nevük, valamint a zónájuk és az erőforráscsoportjuk azonosítja. 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ő rekordhalmaz 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 "If-Match" paraméterben megadott lekért rekord "Etag" értékét adhatja meg. 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
A 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 (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 felsorolása esetén az eredmények lapszámozhatók. Az alábbi példa bemutatja, hogyan lehet iterálni az eredmények oldalain. (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.