[英]Authorization error while trying to issue DNS certificate with Azure DNS and cert manager
[英]Azure Resource Manager DNS: Sample code to create a DNS record
我目前正在嘗試從使用舊的 Microsoft.Azure.Management.Dns package 轉移到新的 Azure.ResourceManager.Dns。
但是,我在創建 Dns 條記錄(例如 Arecord)的代碼中一直遇到問題。
但是代表 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- 文檔。
門戶網站:
更多參考:
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.