簡體   English   中英

Azure 資源管理器 DNS:創建 DNS 記錄的示例代碼

[英]Azure Resource Manager DNS: Sample code to create a DNS record

我目前正在嘗試從使用舊的 Microsoft.Azure.Management.Dns package 轉移到新的 Azure.ResourceManager.Dns。

但是,我在創建 Dns 條記錄(例如 Arecord)的代碼中一直遇到問題。

我嘗試通過官方文檔go https://learn.microsoft.com/en-us/do.net/api/azure.resourcemanager.dns.dnsarecordcollection.createorupdate?view=azure-do.net

但是代表 Arecord 的類要么是只讀的要么是私有的,所以我不知道如何更新這個簡單的行:

RecordSet set = DnsManagementClient.client.RecordSets.Get(resourceGroupName, zone, recordSetName, RecordType.A);
set.ARecords = set.ARecords ?? new List<ARecord>();
set.ARecords.Add(new ARecord(ipAddress));
DnsManagementClient.client.RecordSets.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, zone, recordSetName, RecordType.A, set, ifNoneMatch: "*");

目前文檔只討論區域,能否在官方文檔中添加一個示例,說明如何添加或更新 DNS 記錄(A、CNAME 等)

https://github.com/Azure/azure-sdk-for.net/tree/main/sdk/dns/Azure.ResourceManager.Dns

我期待一種創建 A 記錄的方法,讓您指定一個 IP 地址,目前所有可能用於執行此操作的類都是只讀的或內部的。

我在我的環境中嘗試並得到以下結果:

您可以使用Azure.ResourceManager.Dns package創建A記錄集Azure.ResourceManager.Dns package的版本是beta-1。

NuGet Package:

Azure.ResourceManager.Dns 1.0.0 beta-1

代碼:

using Azure;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Dns;
using Azure.ResourceManager.Resources;
using System.Net;


ArmClient armClient = new ArmClient(new DefaultAzureCredential());
SubscriptionResource subscription = await armClient.GetDefaultSubscriptionAsync();
// first we need to get the resource group
string rgName = "rg-name";
ResourceGroupResource resourceGroup = await subscription.GetResourceGroups().GetAsync(rgName);
string dnsZoneName = "dns name";
DnsZoneCollection dnsZoneCollection = resourceGroup.GetDnsZones();
DnsZoneData data1 = new DnsZoneData("Global")
{
};
ArmOperation<DnsZoneResource> lro = await dnsZoneCollection.CreateOrUpdateAsync(WaitUntil.Completed, dnsZoneName, data1);
DnsZoneResource dnsZone = lro.Value;
RecordSetACollection recordSetACollection = dnsZone.GetRecordSetAs();
string name = "cname1";
var parm = new ARecordSetData();
parm.TTL =3600;

ArmOperation<RecordSetAResource> recordSetAResource = recordSetACollection.CreateOrUpdate(WaitUntil.Completed, name,parm);
RecordSetAResource recordSetAs = recordSetAResource.Value;

安慰:在此處輸入圖像描述

上面的代碼僅創建 Dns 名稱、類型、TTL,並且可以通過門戶手動添加值。 如果您需要使用 IP 地址創建,您可以使用 Microsoft.Azure.Management.Dns package 關注此MS- 文檔

門戶網站:

在此處輸入圖像描述

更多參考:

azure-sdk-for.net/Sample2_ManagingRecordSetPtrs.md 在 dvbb-mgmt-track2-dns-2 · dvbb/azure-sdk-for.net (github.com)

DnsARecordData 有一個內部記錄列表,DnsARecordData.DnsARecords 是我們可以調用 Add 方法來創建記錄的地方。 DnsARecordData 沒有 setter 方法的原因是.Net 框架設計指南。 .

可以在此處找到如何使用 Azure.Resourcemanager.Dns 創建 A 記錄的示例:

// Create or update A record
string myARecordName = "myrecord";
DnsARecordData dnsARecordData = new() {TtlInSeconds = (long)TimeSpan.FromHours(1).TotalSeconds};
dnsARecordData.DnsARecords.Add(new DnsARecordInfo { IPv4Address = IPAddress.Parse("127.0.0.1") });

DnsARecordCollection dnsARecordCollection1 = dnsZoneResource.GetDnsARecords();
dnsARecordCollection1.CreateOrUpdate(WaitUntil.Completed, myARecordName, dnsARecordData);

// Create or update CName pointing to A record
string myCnameName = "mycname";
DnsCnameRecordData dnsCnameRecordData = new() { Cname = $"{myARecordName}.{DnsZone}", TtlInSeconds = (long)TimeSpan.FromMinutes(10).TotalSeconds, };
DnsCnameRecordCollection cnameRecordCollection  = dnsZoneResource.GetDnsCnameRecords();
cnameRecordCollection.CreateOrUpdate(WaitUntil.Completed, myCnameName, dnsCnameRecordData);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM